我想通過一個角度標準問題來圍繞中心點旋轉一個點。我見過很多關於這個職位,但我不能讓我的執行工作:圍繞另一點旋轉一個點
void Point::Rotate(const Point Pivot, const float Angle)
{
if (Angle == 0)
return;
float s = sin(Angle);
float c = cos(Angle);
x -= Pivot.x;
y -= Pivot.y;
x = (x * c) - (y * s) + Pivot.x;
y = (x * s) + (y * c) + Pivot.y;
}
這是我的代碼,我已經從衆多的來源收集的邏輯,例如here和here 。
據我所知,它應該工作。然而,當我將它應用於旋轉時,例如,在(0,0)周圍將點(0,100)旋轉90度(Pi/2被賦予該函數),旋轉點顯然在(-100,-100 ); 100px以下應該是。
當試圖畫一個圓(36分) - 它創建了一個模糊的心臟形狀。它看起來像我看到的圖形,我認爲是在極座標系中 - 我是否需要將我的觀點轉換爲笛卡兒或其他?
任何人都可以找出什麼毛病我的代碼?
編輯:對不起,這個函數是一個成員函數的Point類 - x
和y
是成員變量:/
什麼樣的價值'x'在最後一行所使用的? – 2014-10-19 10:46:55
@OliverCharleswoth感謝您指出,編輯 – hnefatl 2014-10-19 10:49:04
我想你已經錯過了我的觀點!最後一行使用「x」值;該值在哪裏計算? – 2014-10-19 10:49:52