private void fixedRotate(int o,int i,double t,double x,double y) { translate(o, i, -x, -y); rotate(o, i, t); translate(o, i, x, y); }private void rotate(int o,int i,double t) { double x1, y1; x1 = x[o, i]; y1 = y[o, i]; x[o, i] = x1 * Math.Cos(t) - y1 * Math.Sin(t); y[o, i] = x1 * Math.Sin(t) + y1 * Math.Cos(t); }因此,從 translate() 方法,該點指向 (0,0) 點。然后旋轉完成,點再次平移。但是在 rotate() 方法中,x1 和 x2 將始終為 0。所以 x[o,i] y[o,i] 都是 0。據我所知,這段代碼應該將點返回到同一個地方。但是代碼運行良好。請解釋。提前致謝!
1 回答

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
好吧,我想通了。方法中的 x 和 yfixedRotation()
表示多邊形的中心。這意味著如果它是一個正方形,則正方形的中點被轉換為 center(0,0) 點
- 1 回答
- 0 關注
- 429 瀏覽
添加回答
舉報
0/150
提交
取消