我想通过使用每个旋转步骤来旋转3D点并创建一个圆。我手头只有一个起始点(pos1,1x3数组),它指示了圆应该从哪里开始。这个点应该沿着顺时针方向绕一个轴旋转,而不改变r,并在原点周围创建10个不同的3D点,这些点在圆上均匀分布,如下图所示:
为此,我实现了2D旋转矩阵,并使用给定的角度在
编辑2: 如果我不增加度数而是减少它,则会按顺时针方向创建点:
然后在for循环中:
x
和y
方向上旋转我的点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