Matlab之空间坐标系绘制平面图形

在空间直角坐标系中,绘制指定平面方程的图形

版本说明:

20240413_V1.01:更正代码错误,并修改输入参数类型(测试用例得修改)

20240413_V1.00:初始版本

一、平面方程

基本形式为:A*X+B*Y+C*Z+D=0

例如:对于X+23=0的平面方程如下

二、Matlab通用绘制函数

cpp 复制代码
%% 绘制平面图形
% 输入参数:平面方程的参数以及图形的范围
function plot_plane(A, B, C, D, Range)
% 检查平面是否与坐标轴平行
if A == 0 && B == 0
    % 平面与z轴垂直
    [X, Y] = meshgrid(linspace(-Range, Range, 100),linspace(-Range, Range, 100));
    Z =zeros(size(X))-D;  % 固定z值
elseif B == 0 && C == 0
    % 平面与y轴和Z轴平行
    [Y, Z] = meshgrid(linspace(-Range, Range, 100), linspace(-Range, Range, 100));
    X = zeros(size(Y))- D;  % 固定X值
elseif A == 0 && C == 0
    % 平面与X轴和Z轴平行
    [X, Z] = meshgrid(linspace(-Range, Range, 100),linspace(-Range, Range, 100));
    Y = zeros(size(X))- D;  % 固定x值    
elseif C == 0
    % 平面与Z轴平行
    [X, Z] = meshgrid(linspace(-Range, Range, 100),linspace(-Range, Range, 100));
    Y = -(A.* X +D)/B;  % 解平面方程得到Y
else
    % 平面不与Z坐标轴平行
    % 选择一个合适的范围来创建网格点
    [X, Y] = meshgrid(linspace(-Range, Range, 100),linspace(-Range, Range, 100));
    Z = -(A.* X + B.* Y+D)/C;  % 解平面方程得到z
end

% 绘制平面
surf(X, Y, Z, 'FaceColor', 'none', 'EdgeColor', 'blue');

% 设置图形属性
grid on;
xlabel('X轴');
ylabel('Y轴');
zlabel('Z轴');
xlim([-Range, Range]);
ylim([-Range, Range]);
zlim([-Range, Range]);
% axis equal;     % 保持轴的比例一致
view(3);         % 设置三维视角
end

三、测试用例

3.1 X+23=0

plot_plane(1, 0, 0, 23, '平面绘制示例')

3.2 Y+23=0

plot_plane(0, 1, 0, 23, '平面绘制示例')

3.3 Z+23=0

plot_plane(0, 0, 1, 23, '平面绘制示例')

3.4 Y+Z+23=0

plot_plane(0, 1, 1, 23, '平面绘制示例')

3.5 X+Z+23=0

plot_plane(1, 0, 1, 23, '平面绘制示例')

3.6 X+Y+23=0

plot_plane(1, 1, 0, 23, 5)

3.7 X+Y+Z+23=0

plot_plane(1, 1, 1, 23, '平面绘制示例')

相关推荐
点云SLAM19 分钟前
算法与数据结构之二叉树(Binary Tree)
数据结构·算法·二叉树·深度优先·广度优先·宽度优先
小龙报33 分钟前
《算法通关指南:算法基础篇 --- 一维前缀和 — 1. 【模板】一维前缀和,2.最大子段和》
c语言·数据结构·c++·算法·职场和发展·创业创新·visual studio
简简单单做算法38 分钟前
基于球面透视投影模型的鱼眼图像校正算法matlab仿真
matlab·球面透视投影·鱼眼图像校正
树在风中摇曳1 小时前
LeetCode 1658 | 将 x 减到 0 的最小操作数(C语言滑动窗口解法)
c语言·算法·leetcode
不夜牛仔1 小时前
算法笔记17 - 贪心算法介绍与思路 | 路灯摆放问题 | 活动安排问题 | 最低字典序拼接 | 金条分割问题 | 项目投资问题
笔记·算法·贪心算法
.柒宇.2 小时前
力扣hoT100之找到字符串中所有字母异位词(java版)
java·数据结构·算法·leetcode
松岛雾奈.2303 小时前
机器学习--KNN算法中的距离、范数、正则化
人工智能·算法·机器学习
兮山与3 小时前
算法33.0
算法
Brduino脑机接口技术答疑3 小时前
支持向量机(SVM)在脑电情绪识别中的学术解析与研究进展
人工智能·算法·机器学习·支持向量机·数据分析
xier_ran3 小时前
深度学习:Mini-batch 大小选择与 SGD 和 GD
人工智能·算法·机器学习