У меня есть школьное задание, где я должен (между прочим) вращать многоугольник. Я не могу использовать любые функции вращения, поэтому у меня есть массив точек. Массив настроен следующим образом:Попытка повернуть многоугольник с помощью математики
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);
Используя верхнюю точку в качестве pivotpoint. Затем весь полигон деформируется.
Что ошибка? –
Извините, что первый комментарий был неправильным, вот изображение многоугольника, не повернутого: http://img32.imageshack.us/img32/103/4ulx.png затем повернуто PI: http://i.imgur.com/ q9t0yXU.png Pivotpoint - это верхняя точка – user2573715
Меня не интересует изображение. Есть ли какие-либо исключения, когда вы запускаете это? –