乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 67|回复: 7

[编程交流] 曲线/直线测试

[复制链接]

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 11:27:58 | 显示全部楼层 |阅读模式
我试图使用以下代码测试多段线的一段是曲线还是直线。有人能解释一下为什么在直线段上有时返回零吗?评估时,差异很小(例如2.84217e-014),但不会评估为零。
  1. (zerop (- (abs (distance (vlax-curve-getPointAtParam obj (1- idx))(vlax-curve-getPointAtParam obj idx)))
  2.            (abs (- (vlax-curve-getDistAtParam obj (1- idx))(vlax-curve-getDistAtParam obj idx)))
  3.            )
  4.         )
回复

使用道具 举报

5

主题

194

帖子

193

银币

初来乍到

Rank: 1

铜币
24
发表于 2022-7-6 11:44:27 | 显示全部楼层
尽管有人可能会说不同的话,但我会在这个练习中使用vlax曲线GetSeconderiv
 
返回值0表示直线段,其他任何值都表示曲线
 
 
  1. (angle
  2. (vlax-curve-getSecondDeriv obj idx)
  3. (list 0 0 0))

 
我已经有一段时间没有用微积分了。。有关更多信息,请参阅
 
http://en.wikipedia.org/wiki/Second_derivative
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:46:55 | 显示全部楼层
不错,Jammie
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 11:56:10 | 显示全部楼层
关于一般浮点计算,2.84217e-014低于公差水平,因此应视为零。请参阅此处第7篇文章的链接:
 
http://www.cadtutor.net/forum/showthread.php?t=43500
 
使用vlax curve GetSeconderiv听起来确实是明智的做法,但如果返回值不是显式的0,则可能也需要将该结果与容差进行比较。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:10:37 | 显示全部楼层
可能使用:
 
  1. (equal
  2. (angle '(0 0 0)
  3.    (vlax-curve-getSecondDeriv obj idx)) 0.0 1e-
回复

使用道具 举报

5

主题

194

帖子

193

银币

初来乍到

Rank: 1

铜币
24
发表于 2022-7-6 12:13:15 | 显示全部楼层
 
谢谢李
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:24:20 | 显示全部楼层
 
看起来不错。
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 12:29:28 | 显示全部楼层
谢谢大家。。。
我想我可以用(等于模糊因子)代替(zerop)来比较我的示例中的两个方程。
但我会试试第二种。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 02:09 , Processed in 0.392368 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表