Math 围绕球体旋转对象

Math 围绕球体旋转对象,math,3d,rotation,geometry,mit-scratch,Math,3d,Rotation,Geometry,Mit Scratch,我在一个球体中有8个正方形(从上往下看:ooo),我想知道我会怎么做 o o 哦 当球体移动时,使它们旋转,但我不确定如何绕z轴旋转它们(我使用的是2d程序) 到目前为止,如果我向上移动,效果很好,或者如果我向右移动,效果很好,但是如果我向上移动,然后向右移动,它就会变成一个小正方形 对不起,如果我解释得不对,但我只有14岁 迄今为止的项目: (我知道我正在使用一个儿童项目) 谢谢你的帮助 我在你的程序中没有看到任何旋转。当我用箭头键移动球体时,正方形会剧烈振荡,但其背后的“代码”看起来纯粹是二

我在一个球体中有8个正方形(从上往下看:ooo),我想知道我会怎么做 o o 哦 当球体移动时,使它们旋转,但我不确定如何绕z轴旋转它们(我使用的是2d程序)

到目前为止,如果我向上移动,效果很好,或者如果我向右移动,效果很好,但是如果我向上移动,然后向右移动,它就会变成一个小正方形

对不起,如果我解释得不对,但我只有14岁

迄今为止的项目: (我知道我正在使用一个儿童项目)


谢谢你的帮助

我在你的程序中没有看到任何旋转。当我用箭头键移动球体时,正方形会剧烈振荡,但其背后的“代码”看起来纯粹是二维的

要将所有这些转化为3d,您应该首先使用3个坐标,这样x²+y²+z²=r²。这是球面上半径为r的点的条件。在以后绘图时,选择r=1并缩放对象可能是最容易的。接下来你可以看看。矩阵表示法一开始可能会令人困惑,但用坐标表示,它相当简单。以z旋转为例:

xnew = xold*  cos(phi)  + yold*sin(phi) + zold*0
ynew = xold*(-sin(phi)) + yold*cos(phi) + zold*0
znew = xold*  0         + yold*0        + zold*1
上面的内容相当详细,您当然可以完全删除所有这些
*0
术语,省略
*1
因子,实际上完全不使用z。这里的重点是,矩阵乘法可能看起来很可怕,但事实并非如此


一旦你有了3d坐标,并且知道如何根据旋转改变它们,你就可以使用三个坐标中的两个来绘制东西,从而产生场景的正交投影。

你期望的是什么行为?在我看来,如果这些正方形固定在一个球体内,球体的运动是通过滚动来实现的,那么它的工作方式是一致的。我想我看到了问题所在,但你的问题仍然不清楚。你使用2D程序是什么意思?这是怎么回事?这8个对象在代码中是如何表示的?一个人有什么属性?你所说的
z
轴是什么意思?