曲线/直线测试
我试图使用以下代码测试多段线的一段是曲线还是直线。有人能解释一下为什么在直线段上有时返回零吗?评估时,差异很小(例如2.84217e-014),但不会评估为零。(zerop (- (abs (distance (vlax-curve-getPointAtParam obj (1- idx))(vlax-curve-getPointAtParam obj idx)))
(abs (- (vlax-curve-getDistAtParam obj (1- idx))(vlax-curve-getDistAtParam obj idx)))
)
)
尽管有人可能会说不同的话,但我会在这个练习中使用vlax曲线GetSeconderiv
返回值0表示直线段,其他任何值都表示曲线
(angle
(vlax-curve-getSecondDeriv obj idx)
(list 0 0 0))
我已经有一段时间没有用微积分了。。有关更多信息,请参阅
http://en.wikipedia.org/wiki/Second_derivative 不错,Jammie 关于一般浮点计算,2.84217e-014低于公差水平,因此应视为零。请参阅此处第7篇文章的链接:
http://www.cadtutor.net/forum/showthread.php?t=43500
使用vlax curve GetSeconderiv听起来确实是明智的做法,但如果返回值不是显式的0,则可能也需要将该结果与容差进行比较。 可能使用:
(equal
(angle '(0 0 0)
(vlax-curve-getSecondDeriv obj idx)) 0.0 1e-
谢谢李
看起来不错。 谢谢大家。。。
我想我可以用(等于模糊因子)代替(zerop)来比较我的示例中的两个方程。
但我会试试第二种。
页:
[1]