【问题标题】:Finding the radius of an ellipse based on its angle from major or minor axis根据与长轴或短轴的角度找到椭圆的半径
【发布时间】:2013-06-16 04:00:40
【问题描述】:

我正在使用 UE3 并正在制作我的 HUD。我已经在画布上完成了它,并且有一个圆形按钮 - 问题是在不是方形的屏幕上,按钮是一个椭圆形。因此,这会导致检测鼠标是否“悬停在”按钮上的问题。

这是因为整个椭圆的半径不同,圆的情况也是如此。

我的下划线问题是:

如果我知道,我如何计算椭圆相对于一点(鼠标位置)的半径:

  • 长轴和短轴的半径
  • 与点(鼠标位置)的轴(主要和次要)的角度

【问题讨论】:

  • 你不需要弄脏角度。写下椭圆公式x^2/a^2+y^2/b^2=1,想一想。
  • 我没有椭圆公式 - 关键是如果我可以使用角度来做到这一点,我可以动态地做到这一点,无论日食的公式如何,这可能会根据按钮而改变尺寸和屏幕尺寸(除其他外)
  • “我没有椭圆公式”是什么意思?你在维基百科上查一下,我已经把它写下来以防万一。
  • 啊抱歉,我错过了阅读和思考特定椭圆的图形公式

标签: algorithm graphics geometry


【解决方案1】:

在椭圆以原点为中心且长轴和短轴分别平行于 x 轴和 y 轴的简单情况下,椭圆可以通过方程 x = a cos(t)y = b sin(t) 进行参数化,其中ab 是长轴和短轴,t 是从 0 到 2pi 变化的角度。所以在这种情况下,要回答你的问题,角度 t 的半径是

r = sqrt( x^2 + y^2 ) = sqrt( a^2 cos^2(t) + b^2 sin^2(t) )

现在,这可以通过以下方式变得更复杂

(i) 椭圆不在 (0,0) 处居中

(ii) 长轴和短轴不平行于 x 轴和 y 轴,因为长轴与正 x 轴形成角度 t0。

(iii) (i) 和 (ii) 的组合。

但是,通过正确的修改,上述解决方案也可以应用于这些情况。对于 (i),从上面等式中的 x 和 y 中减去中心,以获得中心点的半径。对于 (ii),上述等式适用于变量 x',y',其中 (x',y')^T = R(t0) (x,y)^T 其中 R(t0) 是 rotation matrix它正确地定位了椭圆。因此,为 x' 和 y' 形成上面的方程,然后通过求解上面的矩阵方程来替换 x 和 y 的表达式。

【讨论】:

  • 所有这些三角函数都是多余的。参数曲线方程不是您可以使用的唯一类型。
  • 是的,但 OP 想要以参数(角度)的形式给出答案,因此使用了参数方程。
  • OP 有像素坐标。这是一个显示器。从角度思考只是偏离了方向。
【解决方案2】:

轴对齐椭圆方程(我很确定你的椭圆是轴对齐的,也就是说,你的显示矩阵没有倾斜):

((x-x0)/a)2 + ((y-y0)/b)2 = 1

椭圆以 (x0, y0) 为中心,其半轴为 a 和 b。

如果等式成立,则点 (x,y) 在椭圆。将=1 替换为<1,您将得到(x,y) 位于椭圆 的条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2012-04-16
    • 2010-09-13
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多