当我使用旋转矩阵旋转网格中的点时,这些点不再正交。使用 NumPy,如何在旋转时保持网格线垂直?
这是我正在使用的 Python 代码:
import numpy as np
import matplotlib.pyplot as plt
# Input
rot_degrees = 10
x = np.linspace(200, 600, 4)
y = np.linspace(200, 700, 5)
xv, yv = np.meshgrid(x, y)
pts = np.column_stack( (xv.flatten(), yv.flatten()) )
# Rotate points
radians = np.radians(rot_degrees)
rot_mat = np.array([[np.cos(radians),-np.sin(radians)],
[np.sin(radians), np.cos(radians)]])
einsum = np.einsum('ji, mni -> jmn', rot_mat, [pts])
pts_rotated = np.squeeze(einsum).T
# Output
plt.scatter(pts[:,0], pts[:,1], c='r')
plt.scatter(pts_rotated[:,0], pts_rotated[:,1], c='b')
plt.show()
最佳答案
关于python - 如何旋转网格中的点并保持正交性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72906207/