根据主轴或短轴的角度查找椭圆的半径

时间:2013-06-16 04:00:40

标签: algorithm graphics geometry

我正在与UE3合作并正在制作我的HUD。我在画布上做过,有一个圆形按钮 - 问题是在不是方形的屏幕上,按钮是一个椭圆形。因此,这会导致检测鼠标是否“超过”按钮的问题。

这是因为整个椭圆周围的半径不同,就像圆圈一样。

我的下划线问题:

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

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

2 个答案:

答案 0 :(得分:4)

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

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)是{{3正确定位椭圆的方法。因此,为x'和y'形成上面的等式,然后通过求解上面的矩阵方程来代替x和y的表达式。

答案 1 :(得分:4)

轴对齐的椭圆方程(我非常确定您的椭圆是轴对齐的,也就是说,您的显示矩阵不会倾斜):

((xx 0 )/ a) 2 +((yy 0 )/ b) 2 = 1

其中椭圆以(x 0 ,y 0 )为中心,其半轴为a和b。

如果方程成立,则点(x,y) on 椭圆。将=1替换为<1,您将获得(x,y)椭圆的条件。