【问题标题】:Distance to edge of ellipse given a vector给定向量到椭圆边缘的距离
【发布时间】:2019-10-19 21:53:05
【问题描述】:

我一直在尝试解决这个问题,但没有找到答案。 鉴于: 椭圆的高度, 椭圆的宽度, 向量的 Xposition, 向量的位置, 矢量的方向。

找出到圆边缘的距离

这是一个简单的图表: 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 或 2 个解决方案(分别当它们不相交时、当直线刚刚接触椭圆时以及当它与椭圆相交时)。然后您可以检查这些点是否属于您的向量,同时考虑向量的起点、方向和长度。

标签: math vector ellipse gml


【解决方案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 度。这也可能适用于切线解。因此,根据您的标准,解决方案无效。

如果起点在椭圆内,那么一个解决方案将是您想要的结果,另一个解决方案是倒数向量。所以只有一种解决方案是有效的。

如果向量通过椭圆,那么这两个解都是有效的,如果你忽略最远的那个,你可以选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2021-12-28
    相关资源
    最近更新 更多