Gh如何找到一个点在另一条曲线上的切线点?

gh自带的三个生成切线的工具只适用circle,如果是一条曲线怎么连切线?
目前能想到的笨方法是曲线上生成点,再与外点连线的方式来找,有没有更简便的方式?

如下图所示

谢谢了

提供一个参考,利用 Galapagos 来反求,
:warning: 关于 Galapagos 的使用方法请参考 :point_down:
http://docs.rhino3d.com.cn/gh/Params/75

参考范例 LineTangent.zip|attachment - 解压密码 [rhino3d.com.cn] (8.7 KB)

1 个赞



tan.gh (11.4 KB)

给楼主提供一个手工迭代的办法
目前是5次迭代,每次迭代细分20
取最小值的相邻两段进行下一次迭代,因此实际上细分数是10


案例中长度40的曲线,最后的切点精度在0.0004
可理解为切点公差/曲线总长度=10的-5次方,迭代几次就是负多少次方

迭代次数可以根据你要求的精度调节
一连串的cluster也可以打包为新的单独cluster

2 个赞

简单写了个脚本

曲线外一点求切线.gh (3.9 KB)

因为经过曲线外一点在曲线上可能有无数条切线,所以这个脚本里 rpt 的位置决定了靠近哪个位置画切线。 rpt 的位置不同,得到的切线位置也不同。

3 个赞

谢谢!

测试了下, 对polyline 和 fit之后的曲线貌似无效, 对rebuild曲线是可行的

再测试,移动外点,运行良好,这个答案符合需求了
image

再次感谢提供算法支援 :handshake:

谢谢 Deer 老师

测试结果感觉不太对

感谢提供思路!

谢谢 Jessen老师,

怕狗屎确实可以,但放在算法里不太合适,需要手动。

再次感谢提供思路

推荐 Jorin 的方法,更加合理且直观

我提供的例子只适合存在一个波峰波谷的情况
其他情况的话,会比较复杂。

你应该思考下,任意一个点到直线/多重直线一定能算出切线吗?

polyline肯定不行, fit之后应该是可以的,
若存在多个小波峰又会影响其唯一性,
目前可以通过subcurve来前置选择好区间,或者重建曲线令小波峰消失的方式来配合解决。

谢谢提点 :grinning:

自己搭了一个比较满意的方案,分享给大家:

在曲线上取一定数量的垂直平面perp frame,外点投影到各平面,

然后:投影点 和 曲线上点 距离最近的一对点,就应该是切点了。。。?
(这是我原本思路,但线上点密度要很高,才能准,算法不够简洁!! )

当当当当~ 只要把投影点连线~ 就能与原曲线获得交点:

这种方法20个点已经很精确了,不需要太大算力,
并且曲线若有多个波峰也能找出来。

2 个赞