これが私が使用しているコードです。
#define ANGLETORADIANS 0.017453292519943295769236907684886f // PI / 180
#define RADIANSTOANGLE 57.295779513082320876798154814105f // 180 / PI
rotation = rotation *ANGLETORADIANS;
cosRotation = cos(rotation);
sinRotation = sin(rotation);
for(int i = 0; i < 3; i++)
{
px[i] = (vec[i].x + centerX) * (cosRotation - (vec[i].y + centerY)) * sinRotation;
py[i] = (vec[i].x + centerX) * (sinRotation + (vec[i].y + centerY)) * cosRotation;
printf("num: %i, px: %f, py: %f\n", i, px[i], py[i]);
}
これまでのところ、Y値が反転していることを示しています。たとえば、X=1とY=1の値を45回転で入力すると、x=0とy=1.25 ishが表示されますが、x = 0 y=- 1.25。
また、私の90度の回転は、常にx=0とy=0を返します。
ps私は自分の価値観を中心に置いているだけで、元の場所に戻していないことを知っています。私が知る必要があるのは私が今得ている価値だけなので、それらを元に戻す必要はありません。