我正在尝试实施一些积分运动。这个运动应该通过椭圆路径。 像这样:
我知道椭圆的公式:
(x-x0)^2/a^2+(y-y0)^2/b^2=1
其中(x0,y0) - 椭圆中心,a - 半长轴的长度,b - 半短轴的长度。
我用Maple从中得到了这个:
y = (y0*a+sqrt(-x^2*b^2+2*b^2*x*x0-b^2*x0^2+a^2*b^2))/a,
y = (y0*a-sqrt(-x^2*b^2+2*b^2*x*x0-b^2*x0^2+a^2*b^2))/a
例如,我使用以下参数来获取此椭圆:
x randomly from 100 to 800
,a=500
,b=150
,x0=500
,y0=500
。
但无论如何,我的点形成简单的线,而不是椭圆。
代码段:
public static int getYElipse(int a, int b, int x, int x0, int y0){
return (int) ((y0*a-Math.sqrt(-x^2*b^2+2*b^2*x*x0-b^2*x0^2+a^2*b^2))/a);
}
public static int getYElipse2(int a, int b, int x, int x0, int y0){
return (int) ((y0*a+Math.sqrt(-x^2*b^2+2*b^2*x*x0-b^2*x0^2+a^2*b^2))/a);
}
...
int x = randomInt(100, 800);
int y = randomBoolean() ? getYElipse(500,150,x,500,500) : getYElipse2(500,150,x,500,500);
我做错了什么?任何例子都将不胜感激。