gpt4 book ai didi

python - matplotlib旋转后的新线坐标点

转载 作者:行者123 更新时间:2023-11-30 22:32:41 27 4
gpt4 key购买 nike

我正在绘制一条二维线 (x1, y1) -> (x2,y2) 并使用 Affine2D.rotate_deg_around 在 matplotlib 中按角度 theta 旋转。

start = (120, 0)
ht = 100
coords = currentAxis.transData.transform([start[0],start[1]])
trans1 = mpl.transforms.Affine2D().rotate_deg_around(coords[0],coords[1], 45)
line1 = lines.Line2D([start[0], start[0]], [start[1], ht+start[1]], color='r', linewidth=2)
line1.set_transform(currentAxis.transData + trans1)
currentAxis.add_line(line1)

现在 (x2, y2) 旋转后将不再是 (120, 100)。我需要在旋转后找到新的(x2,y2)。

最佳答案

matplotlib 转换函数可能不是最舒适的解决方案。

由于您要旋转和平移原始数据点,因此最好使用“通用”3 x 3 旋转矩阵和单独的平移。或者一个 4 x 4 矩阵同时包含旋转和平移。

检查函数rotation_matrix(angle, Direction, point=None) http://www.lfd.uci.edu/~gohlke/code/transformations.py.html

此函数返回一个 4 x 4 旋转矩阵,但您可以通过平移设置右列中的上面三个分量。

一开始可能看起来很吓人:)但一旦你习惯了,它就是一个非常方便的工具来处理这类事情。

更多信息

http://www.dirsig.org/docs/new/affine.html

http://www.euclideanspace.com/maths/geometry/affine/matrix4x4/

https://en.wikipedia.org/wiki/Transformation_matrix

关于python - matplotlib旋转后的新线坐标点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45396865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com