找到一条线穿过非线性路径的点

时间:2012-06-10 06:17:41

标签: actionscript-3 geometry collision-detection trigonometry intersection

图表:http://i.stack.imgur.com/gpL0P.png

总结:如何在图表中找到蓝点的坐标,以便计算出与其相邻的红点的位置并绘制三角形?

问题详情: 我正在尝试为我正在制作的地图应用程序制作一个可拖动的工具尖端气球。我希望从放置气球的位置(包含气球和尾巴的精灵的点0,0)到气球的边缘绘制尾部,尾巴的底部始终是相同的任意宽度它连接到气球的宽度。尾部将在每帧的新坐标处重新绘制。

我不想隐藏气球下面的部分尾巴,因为我打算在它上面使用一些透明度。

如果路径是圆形或椭圆形,我可以使用CirclePath2D类的greensock运动路径库中的angleToProgress方法(以及一些触发)我可以放置一个隐藏的路径跟随器并获取它。 s xy ...但是我使用的是roundRectangle ...所以我认为一个更好的方法是在一条直线与任何它穿过气球周边绘制的路径之间的某种碰撞检测。但是,我无法找到任何返回碰撞xy的碰撞函数。

所以我很难过。我想使用内置的碰撞方法在AS3中可能不容易做到我想做什么。是否有一个碰撞库可以让我这样做,或者最好是一些可以逃避我的数学?因为这似乎是我在想它并且不应该这么难。

[注意:我无法插入图表,因为我没有足够的声誉。]

1 个答案:

答案 0 :(得分:1)

如果蓝色交叉点位于其中一个圆角上,您打算怎么办?除此之外,它应该很容易理解 - 您可以进行简单的线几何和键检查,以查看线与形成框边界的四条无限线相交的位置,然后确定哪个实际上是毕达哥拉斯的第一个交点线长。

如果你使用这种方法,你需要检查相对于气球边缘的位置位置,以跳过计算明显错误(有时不存在)的交叉点(例如,如果气球中心是在放置点的正上方,你应该跳过计算垂直线的交点。实际上,您可以使用类似的逻辑跳过2或3面,具体取决于几何形状。