如何在不使用任何标准图形库函数(如Ellipse()
or )的情况下使用 Java 绘制椭圆弧Path()
?我需要做的最接近的想法是Elliptical Arc using Trigonometric Method,但它只显示随机弧,这不是事情应该发展的方式。
我想的方式是:用两点指定椭圆,然后指定角度,将从这个椭圆中切出(反之亦然)。对于绘制椭圆,我使用了 Bresenham 的算法,但由于镜像,它不能用于弧。先感谢您。
如何在不使用任何标准图形库函数(如Ellipse()
or )的情况下使用 Java 绘制椭圆弧Path()
?我需要做的最接近的想法是Elliptical Arc using Trigonometric Method,但它只显示随机弧,这不是事情应该发展的方式。
我想的方式是:用两点指定椭圆,然后指定角度,将从这个椭圆中切出(反之亦然)。对于绘制椭圆,我使用了 Bresenham 的算法,但由于镜像,它不能用于弧。先感谢您。
椭圆的参数方程为:
x = cos(角度) * 宽度/2 + xCenter
y = sin(Angle) * height/2 + yCenter
你应该从参数方程看。例如,要画一个圆,您首先应该知道圆的公式:
x^2 + y^2 = R^2
其中R是圆的无线电。
现在你应该根据角度(从 1 到 360)来写这个公式。基于圆内的矩形三角形,其三角公式为:
cos(t)^2 + sin(t)^2 = R^2
其中 t 是角度,cos(t) 为 X,sin(t) 为 Y。
所以,要画一个圆圈,你只需要传递你的圆圈的收音机:
public static void drawCircle(int radio, double xCenter, double yCenter) {
double t = 0;
double xPoint;
double yPoint;
double xActual = xCenter;
double yActual = yCenter + radio*sin(0);
t += 0.01;
while(t < 360) {
xPoint = xCenter + radio*cos(t);
yPoint = yCenter + radio*sin(t);
//you should write this function based on
//the platform you're working (Swing, AWT...)
drawLine(xActual, yActual, xPoint, yPoint);
t += 0.01;
xActual = xPoint;
yActual = yPoint;
}
}
您应该查看需要绘制的图形的参数公式: