Я хочу написать программу C для поворота точек внутри прямоугольника.Вращение Несколько точек внутри прямоугольника
В моей программе центр прямоугольника является точкой поворота, а размеры прямоугольника - 320x480
. Предполагая, что одна из вершин прямоугольника находится в начале координат, точка поворота равна (160,240)
.
Теперь, чтобы повернуть точки (px, py)
внутри прямоугольника относительно оси (ox, oy)
, я использую следующие формулы -
p'x = cos(theta) * (px-ox) - sin(theta) * (py-oy) + ox
p'y = sin(theta) * (px-ox) + cos(theta) * (py-oy) + oy
Однако, когда я пытаюсь повернуть точки на 90 градусов, все точки отображаются на прямую.
Можно ли решить эту проблему?
theta2=90;
theta1=abs(theta2*3.1415926)/180;
if(theta2>0)
{
for(int tc=0;tc<rstruct2->nrows;tc++)
{
rstruct2->xcol[tc]=round((rstruct2->xcol[tc]-160)*cos(theta1)-sin(theta1)*(rstruct2->ycol[tc]-240)+160);
rstruct2->ycol[tc]=round((rstruct2->xcol[tc]-160)*sin(theta1)+cos(theta1)*(rstruct2->ycol[tc]-240)+240);
}
}
else
{
for(int tc=0;tc<rstruct2->nrows;tc++)
{
rstruct2->xcol[tc]=round(160+(rstruct2->xcol[tc]-160)*cos(theta1)+(rstruct2->ycol[tc]-240)*sin(theta1));
rstruct2->ycol[tc]=round(240+(-rstruct2->xcol[tc]-160)*sin(theta1)+(rstruct2->ycol[tc]-240)*cos(theta1));
}
}
1. Является ли это C++ или C? Они разные. 2. Можем ли мы увидеть ваш код? (Это, скорее всего, ответит 1.) – BoBTFish
@BoBTFish это c –
Хорошо, я удалил тег 'C++'. – BoBTFish