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

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

版本说明:

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.hqwc.cn/news/635724.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之创建型模式详解

设计模式 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节&#xff0…

C++ 内存分区管理

一、栈区(Stack) 栈区用来存储函数的参数值、局部变量的值等数据。栈区是自动分配和释放的,函数执行时会在栈区分配空间,函数执行结束时会自动释放这些空间。栈区的数据是连续分配的,由系统自动管理。 注意事项&…

llama-factory SFT 系列教程 (四),lora sft 微调后,使用vllm加速推理

文章目录 文章列表:背景简介llama-factory vllm API 部署融合 lora 模型权重 vllm API 部署HuggingFace API 部署推理API 部署总结 vllm 不使用 API 部署,直接推理数据集 tenplatevllm 代码部署 文章列表: llama-factory SFT系列教程 (一)&a…

鸿蒙上热搜:全国应用被华为呼唤!

日前,话题“华为呼吁全国应用尽快加入鸿蒙”冲上微博热搜榜。 据媒体报道,近日,华为徐直军在华为分析师大会上表示,打造鸿蒙原生应用生态是2024年最关键的事。华为希望通过2024年一年的时间,先在中国市场把智能手机上使…

C语言求自幂数(水仙花数与其他自幂数)

前言 今天我们来看一下如果求解自幂数(水仙花数),水仙花数是自幂数的一种,我们来看看自幂数的概念吧,当一个n位数,它的每个位上的数字的n次幂之和等于它本身的时候,我们称这个数为自幂数。水仙花…

CSGO挂箱号惨遭红锁,有人亏了100万

红锁大行动真的来了,V社在4月16号的更新里面,虽然没有说关于VAC相关的更新,但是CS2实测,已经实装到了游戏里面,伴随着这一次更新,很多的新号,尤其是像挂箱号相继出现大量的VAC红锁。 被红锁的具…

【YOLOv8改进[Neck]】使用BiFPN助力V8更优秀

目录 一 BiFPN(双向特征金字塔网络) 1 BiFPN 2 EfficientDet 二 使用BiFPN助力模型更优秀 1 整体修改 2 配置文件 3 训练 其他 一 BiFPN(双向特征金字塔网络) BiFPN(双向特征金字塔网络, 2020)用于特征融合层。 官方论文地址:https://arxiv.org…

基于达梦数据库开发-Java篇

文章目录 前言一、示例展示1.环境准备2.采用基础的jdbc调用3.采用扩展的mybatis调用 二、注意事项1.使用路径注解2.数据库对象的准确引用 三、可能异常1.无效的表或视图名2.无效的表或视图名3.网络通信异常 总结 前言 达梦提供了JDBC方式的驱动以便进行Java开发。默认情况下相…

Unity Editor编辑器扩展之创建脚本

前言 既然你看到这篇文章了,你是否也有需要使用代码创建脚本的需求?使用编辑器扩展工具根据不同的表格或者新增的内容去创建你想要的脚本。如果不使用工具,那么你只能不断去修改某个脚本,这项工作既繁琐也浪费时间。这个时候作为程…

什么是时间序列分析

时间序列分析是现代计量经济学的重要内容,广泛应用于经济、商业、社会问题研究中,在指标预测中具有重要地位,是研究统计指标动态特征和周期特征及相关关系的重要方法。 一、基本概念 经济社会现象随着时间的推移留下运行轨迹,按…

listpack

目录 为什么有listpack? listpack结构 listpack的节点entry 长度length encoding编码方式 listpack的API 1.创建listpack 2.遍历操作 正向遍历 反向遍历 3.查找元素 4.插入/替换/删除元素 总结 为什么有listpack? ziplist是存储在连续内存空间,节省…

VSCode + ESP-IDF安装与配置全过程

接前一篇文章:ESP-IDF下载与安装完整流程 前一篇文章讲解了如何手动下载ESP-IDF,也就是快速入门 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com)中的红色框中的部分: 本文讲解另一种方法,也是更为常用的方式 —— VS…