Maths/Python-给定一个球体,绘制球体周围的顺序点



我正试图围绕vtk相机的焦点旋转它。其目的是"环绕"模型。

我正在使用camera.SetPosiiton(x, y, z)调用来设置相机位置,我知道我可以在渲染窗口中的每个更新周期都这样做。

焦点有位置(0,0,0),其他一些边界框得到了我的初始相机(x,y,z)位置。从焦点(0,0,0)到相机位置9x,y,z)的距离描述了球体的半径。

在我的脑海中,这基本上是在点(0,0,0)周围逐步移动相机,我假设有一个数学函数可以用来给它提供我的起始相机点,并计算出我的下一个相机位置。

这应该会导致模型看起来在空间中旋转。我的相机视图从所有x、y、z平面偏移,这是一个3d问题,而不是2d问题。然而,我确实希望我的相机与模型(焦点)保持相同的距离

我想要实现的是这样的:拿一支铅笔(我的模型又长又窄)。将它握在指尖,与手臂齐宽,指尖指向天花板。将铅笔倾斜约30度。这是相机的起始位置。用手指转动铅笔体,保持倾斜角度和与眼睛的距离。

这篇文章看起来很有帮助:然而,在球体的边缘绘制一个点,假设你知道到达初始x,y位置的半径。

有人能给我指一下我需要做的数学吗?我的数学太生疏了。

似乎您想要的是绕轴旋转矢量,这可以使用旋转矩阵最容易地完成

因此,如果你想要的旋转轴在zx平面上与z轴倾斜30度,你的旋转轴是(cos(pi/6),0,sin(pi/6

从点(+-1,0,0)、(0,+-1,0)、(0,0,+-1)开始。它们形成了两个金字塔,所有的点都在单位球面上。

现在你可以取每个三角形的中点,并向外投影,使它们也位于单位球体上。对于每个三角形,现在将为您提供3个新三角形,您可以重复此过程。

三角形中点的另一种选择是取每一边的中点,并将它们连接起来。这就给出了3个可以投影到单位圆上的新点。这将为每个细分提供4个三角形。

根据需要重复多次。

最新更新