我想用OpenGL在可編程管道中模擬一個行星系統。假設現在我有一個行星A,其質心爲planet_A_FixedPoint
,行星C的質心爲planet_C_FixedPoint
。我想讓行星C繞着行星A旋轉,旋轉軸= normalize(planet_A_FixedPoint)
,同時繞着自己的中心旋轉,旋轉軸= (0,1,0)
。我想出了下面的代碼,但它似乎沒有工作。在做自我旋轉的同時圍繞一個對象旋轉的OpenGL
glm::mat4 rotateAroundPlanetA = glm::translate(glm::mat4(), planet_A_FixedPoint) * glm::rotate(glm::mat4(), degree, normalize(planet_A_FixedPoint)) \
* glm::translate(glm::mat4(), -planet_A_FixedPoint);
planet_C_M_Matrix = rotateAroundPlanetA * planet_C_M_Matrix;
glm::vec4 tempFixedPoint = rotateAroundPlanetA * glm::vec4(planet_C_FixedPoint, 1.0f);
planet_C_FixedPoint = vec3(tempFixedPoint.x, tempFixedPoint.y, tempFixedPoint.z);
glm::mat4 rotateAroundPlanetC = glm::translate(glm::mat4(), planet_C_FixedPoint) * glm::rotate(glm::mat4(), degree, vec3(0, 1, 0)) \
* glm::translate(glm::mat4(), -planet_C_FixedPoint);
planet_C_M_Matrix = rotateAroundPlanetC * planet_C_M_Matrix;
上述碼的獲得的效果是,行星c轉動本身圍着正常化(XA,YA,ZA)軸旋轉,但它不與行星A的原點對準(XA,YA ,ZA)。
誰能告訴我我錯在哪?
請發表你的真實代碼,上面的代碼片段甚至不會編譯。 – ybungalobill
嗨〜我發佈了我的真實代碼。 –