20060510412 发表于 2021-12-10 09:53:46

【求助】智能移动线段

本帖最后由 20060510412 于 2021-12-10 14:59 编辑

各位好,我想把图中的黄色线段自动移动到绿色线段位置,原则就是黄线不能越过红线。
目前没啥思路,请教各位大佬,望不吝赐教。
另外:图中的红色曲线仅仅为示意,曲线可以为任意形状。

笨办法只能得到一个粗略的结果,不是精确解。

mikewolf2k 发表于 2021-12-10 11:13:14

表述不大清楚,意思是黄线往绿线方向移动,但是要跟曲线有交点?如果不对曲线有约束,可能会无解,比如W形状的曲线,就可能超过绿线,但是跟W的外侧还有交点。
如果不要求理论上的解,用楼上的算法可行,也不用每次移0.001,采用减半测试,先测试100,无交点就测试减半50,这样就知道在是0-50还是50-100之间了。N次可以测试2^N个数值。效率可以提高很多。

20060510412 发表于 2021-12-13 17:19:28

guosheyang 发表于 2021-12-12 15:58
attach://117158.gif 这个样子的效果可以做到

请问,支持任意曲线么

20060510412 发表于 2021-12-10 11:02:43

gaics 发表于 2021-12-10 10:26
图片刷不出来

我把1楼的图片更新了一下
两种情况都要能保证才行。
我目前的思路:将黄线一次移动0.001,移动一次判断黄线是否与红线相交,当不相交时,即为合理位置。
这种方法比较粗暴,而且可能很慢。

gaics 发表于 2021-12-10 10:05:02

第一步,找到过黄线端点的垂线;
第二步,找到这条垂线与红线的交点;
第三步,移动

20060510412 发表于 2021-12-10 10:11:52

gaics 发表于 2021-12-10 10:05
第一步,找到过黄线端点的垂线;
第二步,找到这条垂线与红线的交点;
第三步,移动
这个曲线仅仅是示意,曲线本身可以是任意曲线,例如向另一个方向凸起。
此时如果仅仅通过端点来控制,应该是不行的。

gaics 发表于 2021-12-10 10:18:23

20060510412 发表于 2021-12-10 10:11
这个曲线仅仅是示意,曲线本身可以是任意曲线,例如向另一个方向凸起。
此时如果仅仅通过端点来控制,应 ...
黄色的不是线段吗?最终效果不是黄色两端点落在红色曲线上?

20060510412 发表于 2021-12-10 10:19:08

本帖最后由 20060510412 于 2021-12-10 11:03 编辑

gaics 发表于 2021-12-10 10:18
黄色的不是线段吗?
黄色的是线段,但是红色曲线是可以任意变化的。
均要保证黄色线段不能越过红色曲线。例如下面这种情况,通过端点来判断,貌似不行吧。

gaics 发表于 2021-12-10 10:26:39

20060510412 发表于 2021-12-10 10:19
黄色的是线段,但是红色曲线是可以任意变化的。
均要保证黄色线段不能越过红色曲线。例如下面这种情况, ...

图片刷不出来

20060510412 发表于 2021-12-10 12:39:37

mikewolf2k 发表于 2021-12-10 11:13
表述不大清楚,意思是黄线往绿线方向移动,但是要跟曲线有交点?如果不对曲线有约束,可能会无解,比如W形 ...

唯一的原则:黄线上的所有点,都应该在红色曲线的同侧。

mikewolf2k 发表于 2021-12-10 13:45:31

20060510412 发表于 2021-12-10 12:39
唯一的原则:黄线上的所有点,都应该在红色曲线的同侧。

如果红色曲线是个圆怎么办?
页: [1] 2
查看完整版本: 【求助】智能移动线段