python - 如何旋转网格中的点并保持正交性

标签 python numpy rotational-matrices

当我使用旋转矩阵旋转网格中的点时,这些点不再正交。使用 NumPy,如何在旋转时保持网格线垂直?

enter image description here

这是我正在使用的 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()

最佳答案

您如何检查这些点是否不正交?

如果您只看绘图,但看起来并不像,请尝试将两个轴的纵横比设置为相等

plt.gca().set_aspect('equal')

enter image description here

关于python - 如何旋转网格中的点并保持正交性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72906207/

相关文章:

python - django - 内联 - 搜索现有记录而不是添加新记录

Python 自定义异常处理

python - python中的计时函数没有给出准确的结果

python - 将重复元素设置为零

python-3.x - numpy.corrcoef() 对返回值的疑问

quaternions - 给定旋转矩阵/四元数,如何获取相机的方向向量?

python - 为什么 bool ("0") 在 python 中是 true ?为什么会发生这种情况?

python - 使用 numpy 获取数组列表中相交元素的计数(避免循环)

python - 解释相对于定义的世界坐标的旋转矩阵