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

devtools/2024/9/24 21:25:37/

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

版本说明:

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

20240413_V1.00:初始版本

一、平面方程

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

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

二、Matlab通用绘制函数

%% 绘制平面图形
% 输入参数:平面方程的参数以及图形的范围
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, '平面绘制示例')


http://www.ppmy.cn/devtools/5490.html

相关文章

rust基础

RUST编程基础 编程概念rust编程概念变量可变性变量遮蔽语句和表达式所有权生命周期Self和self错误处理注释变量声明顺序问题 数据类型基本类型整数类型序列字符/布尔/单元类型 其他类型字符串和切片字符串切片 结构体枚举类型数组元组引用函数方法泛型和特征泛型特征特征对象 复…

Android JNI使用dlopen动态链接库

dlopen 是一个用于在系统中动态加载共享库(动态链接库)的函数。它的主要作用是在程序运行时动态地加载共享库,使得程序可以在不重新编译的情况下加载并使用库中的函数和变量。 具体来说,dlopen 函数可以接受一个共享库的路径作为…

前端常用的数据加密方式

前端开发中,数据安全是至关重要的一个方面。数据加密是保护用户隐私和信息安全的关键方法之一。 前端常用的数据加密方式涵盖了对传输数据的加密、存储数据的加密以及客户端与服务器端之间通信的加密。 1. 对称加密算法 对称加密算法使用相同的密钥进行加密和解密…

Keepalived+LVS+nginx搭建nginx高可用集群

一、简介 nginx是一款非常优秀的反向代理工具,支持请求分发,负载均衡,以及缓存等等非常实用的功能。在请求处理上,nginx采用的是epoll模型,这是一种基于事件监听的模型,因而其具备非常高效的请求处理效率…

写一个uniapp的登录注册页面

目录 一、效果图 二、代码 1、登录 (1)页面布局代码 (2)逻辑实现代码 (3)css样式 2、注册 (1)页面布局代码 (2)逻辑实现代码 (3&#x…

Webpack 5配置详解与性能优化技巧

Webpack 5是一款非常流行的前端打包工具,它可以帮助我们将多个前端资源(如JS、CSS、图片等)打包成一个或多个静态资源文件。在使用Webpack 5时,我们可以通过配置文件来定制打包的方式和过程,同时也可以通过一些优化技巧…

Qt——【若按钮点击后无反应,UI界面中已经勾选Checkable属性, 并且调用了按钮的setchecked(false), 但是页面就是不切换状态

几经排查,发现是按钮组的Exclusive属性造成的。Exclusive属性执行后, 当有一个选中,并且没有选择其它按钮时,此按钮一直为选中状态。即使执行了按钮的setchecked(false)。 如果QAbstractButton属于独占组&a…

React中Toast 库推荐

react-hot-toast介绍 react-hot-toast是一个为 React 应用打造的轻量级、高度可定制的通知库。它不仅易于使用,而且默认样式美观,能够为 Web应用提供流畅的用户体验。可配置自定义操作,提示框持续时间,文本样式,图表样…