4

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

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

我的下划线问题是:

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

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

2 回答 2

5

在椭圆以原点为中心且长轴和短轴分别平行于 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) 是旋转矩阵正确定位椭圆。因此,为 x' 和 y' 形成上面的方程,然后通过求解上面的矩阵方程来替换 x 和 y 的表达式。

于 2013-06-16T05:13:29.650 回答
4

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

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

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

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

于 2013-06-16T07:02:09.220 回答