通过点绘制椭圆

时间:2014-01-21 02:14:16

标签: java android math

我正在尝试实施一些积分运动。这个运动应该通过椭圆路径。 像这样:

Points go by ellipse path

我知道椭圆的公式: (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 800a=500b=150x0=500y0=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);

我做错了什么?任何例子都将不胜感激。

0 个答案:

没有答案