function rotated_vector = rodrigues_rotation(axis, angle, point)
% 确保轴向量是单位向量
axis = axis / norm(axis);
% 计算旋转角度的正弦和余弦值
cos_angle = cos(angle);
sin_angle = sin(angle);
% 计算旋转矩阵的偏置部分
bias = (1 - cos_angle) * axis * axis';
% 计算旋转矩阵的交叉部分
cross_product = sin_angle * cross(axis, point);
% 计算旋转矩阵
rotation_matrix = eye(3) + bias + cross_product;
% 应用罗德里格斯旋转公式
rotated_vector = rotation_matrix * point;
end
```
在这个修改后的版本中,我们使用 `cross` 函数来代替手动构造交叉矩阵的方法。`cross` 函数接受两个向量作为输入,并返回它们的叉乘结果。注意,`cross` 函数在Matlab中返回的是叉乘结果向量,而不是交叉矩阵。
使用这个函数,您可以更简洁地实现罗德里格斯旋转公式。以下是如何调用这个函数的示例:
```matlab
% 定义旋转轴,旋转角度和待旋转的点
axis_vector = [1; 1; 1];
rotation_angle = pi / 4; % 旋转45度,以弧度为单位
point_vector = [1; 2; 3];
% 调用函数进行旋转
rotated_point = rodrigues_rotation(axis_vector, rotation_angle, point_vector);
% 显示旋转后的点
disp(rotated_point);
```
这段代码将输出绕指定轴旋转指定角度后的点向量。