我有一個學校作業,我應該(除其他外)旋轉多邊形。我不能使用任何預先製作的旋轉功能,所以我有一個點數組。陣列如下設置:試圖使用數學旋轉多邊形
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);
使用頂點作爲樞軸點。整個多邊形然後變形。
什麼錯誤? –
對不起,第一條評論是錯誤的,下面是一個不旋轉的多邊形圖片:http://img32.imageshack.us/img32/103/4ulx.png 然後通過PI旋轉:http://i.imgur.com/ q9t0yXU.png 樞軸點是最高點 – user2573715
我對圖像不感興趣..運行此程序時是否有任何異常? –