计算机图形学旋转变换代码
时间: 2024-11-18 15:13:54 浏览: 27
计算机图形学中的旋转变换是指物体绕其自身的一个轴心按照某个角度进行转动。在二维空间中,常用的有顺时针和逆时针旋转,而在三维中则需要一个旋转轴和一个旋转角度。这里我们看一个简单的二维旋转的例子,使用Python的NumPy库:
```python
import numpy as np
def rotate_around_origin(angle, point, axis=(1, 0, 0)):
"""
二维点围绕给定轴旋转
angle: 旋转角度(弧度)
point: 要旋转的点,形状为 (2,)
axis: 旋转轴,默认为 x 轴 (1, 0, 0)
"""
axis = np.array(axis) / np.linalg.norm(axis)
cos_angle = np.cos(angle)
sin_angle = np.sin(angle)
rotation_matrix = np.array([
[cos_angle + axis[0]**2 * (1 - cos_angle), axis[0] * axis[1] * (1 - cos_angle) - axis[2] * sin_angle, axis[0] * point[0]],
[axis[1] * axis[0] * (1 - cos_angle) + axis[2] * sin_angle, cos_angle + axis[1]**2 * (1 - cos_angle), axis[1] * point[1]],
[-axis[2] * axis[0] * (1 - cos_angle) + axis[1] * sin_angle, -axis[2] * axis[1] * (1 - cos_angle) + cos_angle, cos_angle + axis[2]**2 * (1 - cos_angle)]
])
rotated_point = np.dot(rotation_matrix, point)
return rotated_point
# 示例
angle_radians = np.pi / 4 # 45度
point = np.array([1, 0])
rotated_point = rotate_around_origin(angle_radians, point)
```
这里我们首先计算旋转矩阵,然后通过矩阵乘法得到旋转后的点。
阅读全文