I have ellipse function as below:
−3.06274 x^2 − y^2 + 1192.22 x + 152.71 y + 1.829648 x y − 196494 == 0
How to get the rotate angle of this rotated ellipse?
Answer
Nasser already gave you a solution. There is a different approach though where I used nothing more than the basic knowledge, that an ellipse can be represented by
$$\frac{x^2}{a^2}+\frac{y^2}{b^2}-val=0$$
and you said in the comments, that you are seeking a quadratic form. Your example shows that the ellipse is shifted and rotated. Let us transform the x and y in the above equation and introduce a shift and a rotation. We use mx and my as translation and phi as rotation and this can be represented by a matrix multiplication
RotationMatrix[phi].{x - mx, y - my}
Now we replace our original x and y with this result
expr = x^2/a^2 + y^2/b^2 - val /. Thread[{x, y} -> RotationMatrix[phi].{x - mx, y - my}]
We get
$$\frac{((x-\text{mx}) \cos (\phi )-(y-\text{my}) \sin (\phi ))^2}{a^2}+\frac{((x-\text{mx}) \sin (\phi )+(y-\text{my}) \cos (\phi ))^2}{b^2}-\text{val}$$
You can use
expr // ExpandAll
to see all terms. What you should notice is that we have positive terms for y^2 in the form
(y^2 Sin[phi]^2)/a^2
because the sine-squared will always be positive and a^2 too. In your example those terms have a negative coefficient. Since it is an equation, we can simply multiply with -1 to turn everything around
example = (-3.06274*x^2 - y^2 + 1192.22*x + 152.71*y + 1.829648*x*y - 196494)*-1
If you look at the expanded form of expr
and the form of your example, you can see that we can now compare coefficients:
eq = Thread[Flatten /@ (CoefficientList[example, {x, y}] ==
CoefficientList[expr, {x, y}])];
eq // Column
When I counted correctly, we have 6 valid equations for 6 parameters mx
, my
, a
, b
, phi
, and val
. Let us try to solve this
sol = Solve[eq, {mx, my, a, b, phi, val}];
sol // Column
Here, you have the full set of solutions (if I'm not mistaken). You see that they mainly differ in a, b, and phi. Thinking about it, this can be easily explained. First, when there are only a^2
and b^2
in the equation, both a
and -a
are valid solutions. Second, you can have ellipses with larger a
or larger b
, they only need to be rotated differently. This mix gives the different solutions that are all valid.
Let's test the first solution by replacing the values in our original expr
expr /. sol[[1]] // Expand
(* 196494. - 1192.22 x + 3.06274 x^2 - 152.71 y - 1.82965 x y + 1. y^2 *)
As you can see, we get your original example. The last solution has a phi value of 0.362 which is in degree
phi/(2 Pi)*360 /. sol[[-1]]
(* 20.7865 *)
the same value that Nasser calculated. Finally, if you want to see the quadratic form, you can use this:
With[{e = expr},
HoldForm[e] /. sol[[-1]]
]
$$\frac{((-350.067+y) \cos (0.362793)+(-299.196+x) \sin (0.362793))^2}{1.23774^2}+\frac{((-299.196+x) \cos (0.362793)-(-350.067+y) \sin (0.362793))^2}{0.54153^2}-8589.02$$
Comments
Post a Comment