我有3個粒子,其中一個是中心粒子。我想通過公式q'=Θq+ p旋轉其他兩個粒子(存儲在粒子列表中),其中q'是旋轉粒子的新位置,θ是方向角,p是中心粒子。其他兩個粒子的初始位置存儲在initialParticlePosition列表中。問題是我認爲我計算的角度是錯誤的,因爲範圍。我應該把範圍作爲[-pi,pi)或類似的東西。在某些部分它計算正確,但有時它是錯誤的。有人可以幫助我使用這個代碼或給我另一種旋轉方法。c#旋轉問題
{
angle = Math.Acos(Vector2.Dot(heading,new Vector2(0,-1)));
for (int i = 0; i < 2; i++)
{
tempX = (double)initialParticlePositions[i].X * Math.Cos(angle) - (double)initialParticlePositions[i].Y * Math.Sin(angle) + centerParticle.position.x;
tempY = (double)initialParticlePositions[i].X * Math.Sin(angle) + (double)initialParticlePositions[i].Y * Math.Cos(angle) + centerParticle.position.y;
particles[i].position.x = tempX;
particles[i].position.y = tempY;
}
}
用已知的角度值運行代碼並在紙上繪製輸出**。手動驗證輸出。 `cos`和`sin`應該處理[`-pi,pi]`之外的角度(自從我做這種事情已經有一段時間了)。 – ChrisF 2011-01-11 20:06:09