y为旋转椭圆的解

hip*_*ail 4 math ellipse

我希望通过扫描线绘制椭圆,找到x的每个值的y值.

对于普通椭圆,公式很容易找到:y = Sqrt [b ^ 2 - (b ^ 2 x ^ 2)/ a ^ 2]

但是当椭圆的轴旋转时,我从来没有弄清楚如何计算y(可能还有x的范围)

Dr.*_*ius 14

以参数形式

x[t]= a Cos[t] Cos[psi] - b Sin[t] Sin[psi]

y[t]= b Cos[psi] Sin[t] + a Cos[t] Sin[psi]
Run Code Online (Sandbox Code Playgroud)

其中psi是旋转角度,ab是半轴.

参数t从0到2 Pi.

或者,如果您喜欢笛卡尔非参数形式:

(a x^2+b y^2) Cos[psi]^2 + (b x^2 +a y^2) Sin[psi]^2 + (a-b) x y Sin[2 psi]==1
Run Code Online (Sandbox Code Playgroud)

这导致y [x]的两种可能解决方案,相当于非旋转情况下平方根的两种解决方案:

y -> (-(Sqrt[2]*Sqrt[a + b - 2*a*b*x^2 + (-a + b)*Cos[2*psi]]) + 
       (-a + b)*x*Sin[2*psi]) / (2*(b*Cos[psi]^2 + a*Sin[psi]^2))

y ->   (Sqrt[2]*Sqrt[a + b - 2*a*b*x^2 + (-a + b)*Cos[2*psi]] + 
       (-a + b)*x*Sin[2*psi])/ (2*(b*Cos[psi]^2 + a*Sin[psi]^2))
Run Code Online (Sandbox Code Playgroud)

好吧,问过它:)

这些功能给出:

在此输入图像描述

x的限制是:

LimitX= +/- Sqrt[a + b + (-a + b)*Cos[2*psi]]/(Sqrt[2]*Sqrt[a]*Sqrt[b])
Run Code Online (Sandbox Code Playgroud)