通过围绕中心点旋转3D点来创建一个圆形

3
我想通过使用每个旋转步骤来旋转3D点并创建一个圆。我手头只有一个起始点(pos1,1x3数组),它指示了圆应该从哪里开始。这个点应该沿着顺时针方向绕一个轴旋转,而不改变r,并在原点周围创建10个不同的3D点,这些点在圆上均匀分布,如下图所示:

Image

为此,我实现了2D旋转矩阵,并使用给定的角度在xy方向上旋转我的点pos1,但似乎最终并没有创建一个圆。
def rotate_point(origin, point, angle):
    angle = math.radians(angle % 360)

    rotatedX= origin[0] + (point[0] - origin[0]) * math.cos(angle) - (point[1] - origin[1]) * math.sin(angle)
    rotatedY= origin[1] + (point[0] - origin[0]) * math.sin(angle) + (point[1] - origin[1]) * math.cos(angle)
    return rotatedX, rotatedY

def main():
    origin= np.array([0, 0, 0]) 
    point_to_rotate  = np.array([1.12, 199.32, 1062.88])
    theta = 10

    rotatedPoint= rotate_point(origin, point_to_rotate , theta)
    print('rotatedPoint:', rotatedPoint)

编辑:如果我在一个for循环中运行它,它实际上会按照逆时针的方向执行,这正是它应该做的。

def main():
    origin= np.array([-1.14, 172.59, 1078.31])
    point_to_rotate  = np.array([1.12, 199.32, 1062.88])
    theta = 0
    for i in range(10):
        theta = theta+36
        rotatedPoint= rotate(origin, point_to_rotate , theta)
        print('i:', i, 'degree: ', theta, 'rotate:', rotatedPoint)

编辑2: 如果我不增加度数而是减少它,则会按顺时针方向创建点:
theta = 360 

然后在for循环中:
theta = theta-36
1个回答

0

参见编辑以查看解决问题的方案。这里是基于旋转点创建的圆。

enter image description here

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接