gpt4 book ai didi

java - 尝试使用数学旋转多边形

转载 作者:行者123 更新时间:2023-11-30 04:13:34 25 4
gpt4 key购买 nike

我有一个学校作业,我应该(除其他外)旋转一个多边形。我无法使用任何预制的旋转函数,所以我有一个点数组。数组的设置如下:

intArray[2][amount_of_points],其中 intArray[0] 等于点的 x 坐标,intArray[1] 保存 y坐标。

    //x=pivot point x coordinate, y = pivot point y coordinate.
public int[][] rotate(int[][]matrix,int x, int y, double degrees){

double s=Math.sin(degrees);
double c=Math.cos(degrees);


for (int i=0;i<matrix.length;i++){

//translate to origin
int px=matrix[0][i]-x;
int py=matrix[1][i]-y;

//rotate
double xnew = (px*c)-(py*s);
double ynew = (px*s)+(py*c);

//translate back
px=(int)((xnew+x)+0.5);
py=(int)((ynew+y)+0.5);

matrix[0][i]=px;
matrix[1][i]=py;
}

这是我到目前为止的代码,它绝对不适合我。我尝试尽可能地修剪代码。任何帮助都意义重大!

编辑:运行代码时我没有收到任何错误,没有异常等。唯一的问题是多边形没有按照我想要的方式旋转。

我做了一个测试多边形:

polyArray = new int [2][3];
polyArray[0][0]=400;
polyArray[1][0]=200;
polyArray[0][1]=300;
polyArray[1][1]=500;
polyArray[0][2]=500;
polyArray[1][2]=500;

我在 JPanel 中绘制,然后通过旋转方法运行该数组,如下所示: polyArray=mm.rotate(polyArray, polyArray[0][0], polyArray[1][0], Math.PI);

使用顶点作为枢轴点。然后整个多边形就会变形。

最佳答案

虽然问题还不是很清楚,但我觉得你的问题出在循环上。matrix.length 为 2。因此,代码从不使用这些:

polyArray[0][2]=500;
polyArray[1][2]=500;

如果您更改以下条件,它应该有效:

for (int i=0;i<matrix[0].length;i++)

关于java - 尝试使用数学旋转多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18993234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com