延长线段的算法

3
可能重复:
如何将线段延长特定距离 我知道线段的两个点,想要将该线段延长一个已知的距离。所以,我知道延长的起始点,我知道延长的斜率,我知道延长的长度……那么我如何找到延长线段的结束坐标呢?
我正在为台球游戏做这个,我试图找出击球者必须击打物体球的哪个位置才能将其打入目标口袋。我已经有了从口袋到物体球中心的线段。线段延伸的终点将是我需要把球杆送到的坐标,以便以正确的角度击打物体球。希望这讲得清楚。顺便说一下,我正在使用Java。谢谢任何帮助。
1个回答

7
lengthAB = sqrt((a.x - b.x)^2 + (a.y - b.y)^2) 
c.x = b.x + (b.x - a.x) / lengthAB * length;
c.y = b.y + (b.y - a.y) / lengthAB * length;

*从此答案中提取并整合:如何将线段延长指定距离


哇,我在搜索的时候完全没看到这个问题。谢谢!等我不那么累的时候我会试一试。 - vince88
没有问题。我实际上开始输入这个解决方案,然后在中途就想到,嗯,这肯定以前被问过了 :) - Kenny Cason
这似乎是行得通的。太棒了!我只想补充一点,保持c.x和c.y的方程式不变很重要。我曾经认为lengthAB * length应该被分组在括号中,但那样行不通。直到我重新阅读了其他问题的答案,才意识到它是以这种方式编写的,以规范化向量的长度。再次感谢! - vince88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接