You need to enable JavaScript to run this app. 如何在Matlab中实现平面绕y轴z轴旋转且保持经过指定三维点
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matlab中实现平面绕y轴z轴旋转且保持经过指定三维点

平面旋转实现方案

实现思路

  • 核心解决旋转中心偏移问题:默认三维旋转矩阵是针对坐标原点设计的,直接对原平面应用原点旋转会导致目标点(x0,y0,z0)脱离平面,因此需要先将坐标系原点平移至(x0,y0,z0),完成旋转后再平移回原坐标系
  • 法向量变换:原平面x=x0的初始法向量为(1,0,0),分别应用绕y轴旋转alpha度、绕z轴旋转beta度的旋转矩阵,得到旋转后的平面法向量
  • 平面生成:使用点法式平面方程生成旋转后的平面,天然满足经过(x0,y0,z0)的要求

完整可运行MATLAB代码

% 初始化参数
x0=4;
y0=5;
z0=6;
alpha=30; % 绕y轴旋转角度(度)
beta=45;  % 绕z轴旋转角度(度)

% 绘制目标点
plot3(x0,y0,z0,'r*','MarkerSize',15)
hold on
grid on

% 绘制原始平面x=x0
[Y1, Z1] = meshgrid(linspace(-10,10), linspace(0,10));
X1 = x0*ones(size(Y1));
surf(X1,Y1,Z1,'FaceAlpha',0.5,'EdgeColor','none')

% 计算旋转矩阵(先绕y轴旋转,再绕z轴旋转,角度制)
Ry = [cosd(alpha), 0, sind(alpha);
      0,          1, 0;
      -sind(alpha),0, cosd(alpha)];
Rz = [cosd(beta), -sind(beta), 0;
      sind(beta), cosd(beta),  0;
      0,          0,           1];
R = Rz * Ry;

% 计算旋转后的平面法向量
n0 = [1;0;0]; % 原平面x=x0的法向量
n = R * n0;
nx = n(1); ny = n(2); nz = n(3);

% 由点法式平面方程推导旋转后平面的X坐标
% 点法式方程:nx*(X-x0) + ny*(Y-y0) + nz*(Z-z0) = 0
X2 = x0 - (ny*(Y1 - y0) + nz*(Z1 - z0))/nx;

% 绘制旋转后的平面
surf(X2,Y1,Z1,'FaceAlpha',0.5,'EdgeColor','none')

% 坐标轴设置
xlabel('X');
ylabel('Y');
zlabel('Z');
view(3) % 开启3D视角

逻辑验证

当beta=0时,上述代码计算出的X2和原示例中仅绕y轴旋转的X2表达式完全一致,说明逻辑与原示例兼容,且任意参数下代入(x0,y0,z0)都满足平面方程,可保证点始终在旋转后的平面上。


内容的提问来源于stack exchange,提问作者Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 12:24:06