一段时间以来,我一直在试图找出答案,但没有找到答案。 鉴于: 椭圆高度 椭圆宽度 向量的Xposition 向量的Ypostion 向量的方向。
找到到圆边的距离
这是一个简单的图: Distance to the edge of a circle
我碰到了这篇文章:Calculate Point collision between a point of a given vector and the edge of a Circle但这只是一个圆圈,而不是一个椭圆。
这是我第一次在此处发布信息。对于此方面的任何帮助或建议,我将不胜感激。
答案 0 :(得分:1)
一种相当简单的方法是用笛卡尔形式表示椭圆和向量
x ^ 2 / a ^ 2 + y ^ 2 / b ^ 2 = 1其中a&b是半长轴(宽度的一半)和半短轴(高度的一半)和中心的长度假定椭圆的(0,0)
和
y-ypos = m(x-xpos)其中,xpos和ypos是向量的位置,m是斜率,即与x轴所成角度(方向)的余弦值。
将它们一起求解以得到截距并使用毕达哥拉斯计算距离。
这假定椭圆的中心在(0,0),并且轴平行于x和y坐标轴。如果不是这种情况,那么您将需要一个更通用的椭圆方程式,here in Wikipedia对此进行了详细讨论。
正如wierdan在他的评论中指出的那样,您可以获得0,1或2个解决方案。
0(如果向量在椭圆之外开始并完全丢失)。
1,如果向量是椭圆的切线。
2,如果向量穿过椭圆或它的起点在椭圆内部。
在2种解决方案的情况下,0、1或2可能有效
如果向量方向指向椭圆,则解为倒数向量,其中一个指向相反的方向180度。这也可能适用于切线解决方案。因此,根据您的标准,该解决方案无效。
如果起点在椭圆内,则一种解决方案将提供您想要的结果,另一种解决方案将用于倒数向量。因此,只有一种解决方案有效。
如果向量通过椭圆,则两个解均有效,如果您忽略最远的解,则可以选择。