Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA绘制正多边形_Java_Polygon - Fatal编程技术网

JAVA绘制正多边形

JAVA绘制正多边形,java,polygon,Java,Polygon,我正在寻找一个算法来绘制正多边形,如三角形,四边形,五边形,六边形等 我想它基本上是在处理这样一个事实,即所有多边形点都位于圆的直线上 计算多边形对象的N个点的算法是什么? 绘制正多边形后,我需要在第一个正多边形的基础上绘制另一个正多边形,但旋转了K度。正、反、半径、2*PI/边数和循环正、反、半径、2*PI/边数和循环使用正、反: double theta = 2 * Math.PI / sides; for (int i = 0; i < sides; ++i) { doubl

我正在寻找一个算法来绘制正多边形,如三角形,四边形,五边形,六边形等

我想它基本上是在处理这样一个事实,即所有多边形点都位于圆的直线上

计算多边形对象的N个点的算法是什么?
绘制正多边形后,我需要在第一个正多边形的基础上绘制另一个正多边形,但旋转了K度。

正、反、半径、2*PI/边数和循环

正、反、半径、2*PI/边数和循环

使用正、反:

double theta = 2 * Math.PI / sides;
for (int i = 0; i < sides; ++i) {
    double x = Math.cos(theta * i);
    double y = Math.sin(theta * i);
    // etc...
}
double theta=2*Math.PI/边;
对于(int i=0;i
要旋转,只需在角度上添加一个恒定的偏移量,即θ*i+偏移量

使用正弦和余弦:

double theta = 2 * Math.PI / sides;
for (int i = 0; i < sides; ++i) {
    double x = Math.cos(theta * i);
    double y = Math.sin(theta * i);
    // etc...
}
double theta=2*Math.PI/边;
对于(int i=0;i

要旋转,只需向角度添加一个恒定的偏移量,即
θ*i+偏移量

顶点多边形的顶点位于角度处

(2*Math.PI*K)/N
其中,
K
从0变为
N-1
,包括在内。垂直坐标可以计算为角度乘以外接圆半径的正弦;水平坐标的计算方法相同,只是需要将半径乘以角度的余弦

要将多边形旋转
X
度,请将
X
转换为弧度,并将结果添加到公式中的角度,如下所示:

(2*Math.PI*K)/N + Xrad

最后,由于屏幕的原点位于其中一个角,因此只能看到多边形的一部分。要避免这种情况,请将等于外圆中心位置的偏移量添加到您计算的每个坐标。

顶点多边形的顶点位于

(2*Math.PI*K)/N
其中,
K
从0变为
N-1
,包括在内。垂直坐标可以计算为角度乘以外接圆半径的正弦;水平坐标的计算方法相同,只是需要将半径乘以角度的余弦

要将多边形旋转
X
度,请将
X
转换为弧度,并将结果添加到公式中的角度,如下所示:

(2*Math.PI*K)/N + Xrad

最后,由于屏幕的原点位于其中一个角,因此只能看到多边形的一部分。要避免这种情况,请在计算的每个坐标中添加一个等于外接圆中心位置的偏移量。

要绘制的多边形是什么?一个java.awt.Image?一个组件?请把问题弄清楚。如果你只是问计算点的算法,这很容易通过搜索网页找到。您甚至会在StackOverflow上找到至少两个问题,并给出公认的答案。旋转多边形和使用Java2D绘图当然是额外的问题。多边形的绘图目的是什么?一个java.awt.Image?一个组件?请把问题弄清楚。如果你只是问计算点的算法,这很容易通过搜索网页找到。您甚至会在StackOverflow上找到至少两个问题,并给出公认的答案。当然,使用Java2D旋转多边形和绘图是附加问题。