在这个例子中,我对旋转和平移的使用感到困惑,更具体地说,
// The earth rotates around the sun
pushMatrix();
rotate(theta);
translate(50,0);
fill(50,200,255);
ellipse(0,0,10,10);
rotate(theta);
旋转什么?旋转和平移的关系是什么?
在这个例子中,我对旋转和平移的使用感到困惑,更具体地说,
// The earth rotates around the sun
pushMatrix();
rotate(theta);
translate(50,0);
fill(50,200,255);
ellipse(0,0,10,10);
rotate(theta);
旋转什么?旋转和平移的关系是什么?
rotate 和 translate 作用于当前坐标系。
即绘制动作(rect()、ellipse() 等...)将在当前坐标系中应用。旋转和平移将移动坐标系。
在您提供的代码块之前,当前点被转换到窗口的中心以绘制太阳。
pushMatrix() 保存该位置,然后相对于太阳中心,“一切”(坐标系)由 theta 旋转,“一切”由 (50,0) 平移,有效地将“当前点”移动到正确的位置然后使用椭圆(0,0,10,10)绘制地球。
请注意,您可能会省略翻译步骤并使用 ellipse(50,0,10,10) 来获得相同的视觉结果,如果不是因为下一个代码块依赖于该翻译来正确获取月球位置.