據說,要將線條旋轉一定的角度,需要將其終點座標乘以矩陣({Cos(a),Sin(a)} {-Sin(a)Cos (a)}),其中a是旋轉角度。矩陣中得到的兩個數字將爲x和y旋轉線的終點座標。旋轉繞行的起點。 簡化它,x的新座標爲{x * Cos(a) - y * Sin(a)},y的新座標爲{x * Sin(a)+ y * Cos(a)}。旋轉簡單線條圖像的問題
任務是使用此方法旋轉三角形。但是,使用此方法將下面的代碼,是給了一些廢話,而不是旋轉的圖像(原三角形的扭曲形式,通過「隨機」角度旋轉):
x0:=200;
y0:=200;
bx:=StrToInt(Edit1.Text);
by:=StrToInt(Edit2.Text);
cx:=StrToInt(Edit4.Text);
cy:=StrToInt(Edit5.Text);
a:=StrToInt(Edit3.Text);
//Original triangle
Form1.Canvas.Pen.Color:=clBlue;
Form1.Canvas.MoveTo(x0,y0);
Form1.Canvas.LineTo(bx,by);
Form1.Canvas.LineTo(cx,cy);
Form1.Canvas.LineTo(x0,y0);
//New triangle
Form1.Canvas.Pen.Color:=clGreen;
Form1.Canvas.MoveTo(x0,y0);
b1x:=Round(bx*cos(a*pi/180)-by*sin(a*pi/180));
b1y:=Round(bx*sin(a*pi/180)+by*cos(a*pi/180));
c1x:=Round(cx*cos(a*pi/180)-cy*sin(a*pi/180));
c1y:=Round(cx*sin(a*pi/180)+cy*cos(a*pi/180));
Form1.Canvas.LineTo(b1x,b1y);
Form1.Canvas.MoveTo(x0,y0);
Form1.Canvas.LineTo(c1x,c1y);
Form1.Canvas.LineTo(b1x,b1y);
end;
嗯,我的想法。我究竟做錯了什麼?
謝謝你的時間。
謝謝。問題實際上是關於x和y的相對性=) – Arnthor 2010-12-14 14:15:53