我正在与UE3合作并正在制作我的HUD。我在画布上做过,有一个圆形按钮 - 问题是在不是方形的屏幕上,按钮是一个椭圆形。因此,这会导致检测鼠标是否“超过”按钮的问题。
这是因为整个椭圆周围的半径不同,就像圆圈一样。
我的下划线问题:
我知道如何计算相对于点(鼠标位置)的椭圆半径:
答案 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)内椭圆的条件。