Matlab代码:绘制超二次曲面(超椭球体)
使用Matlab绘制超二次曲面
- 一、超二次曲面解析式与参数方程
- 二、matlab代码与运行结果
一、超二次曲面解析式与参数方程
超二次曲面的统一解析式为如下:
(x−x0h1)2m+(y−y0h2)2n+(z−z0h3)2p=1\Big(\frac{x-x_0}{h_1}\Big)^{2m}+\Big(\frac{y-y_0}{h_2}\Big)^{2n}+\Big(\frac{z-z_0}{h_3}\Big)^{2p} = 1 (h1x−x0)2m+(h2y−y0)2n+(h3z−z0)2p=1
其中 (x,y,z)(x,y,z)(x,y,z) 表示超二次曲面上的任意一点,(x0,y0,z0)(x_0,y_0,z_0)(x0,y0,z0) 表示超二次曲面的中心点坐标,h1>0,h2>0,h3>0h_1>0,h_2>0,h_3>0h1>0,h2>0,h3>0 和 m>0,n>0,p>0m>0,n>0,p>0m>0,n>0,p>0 分别描述超二次曲面的体积参数和形状参数。
我这里是利用参数方程来对超二次曲面进行绘制
参数方程如下:
x=h1∗(sin(β).∗cos(α))1/m+x0y=h2∗(sin(β).∗sin(α))1/n+y0z=h3∗(cos(β))1/p+z0\begin{aligned} x &= h_1*(sin(\beta).*cos(\alpha))^{1/m}+x_0\\ y &= h_2*(sin(\beta).*sin(\alpha))^{1/n}+y_0\\ z &= h_3*(cos(\beta))^{1/p}+z_0\\ \end{aligned} xyz=h1∗(sin(β).∗cos(α))1/m+x0=h2∗(sin(β).∗sin(α))1/n+y0=h3∗(cos(β))1/p+z0
其中 0<α<π0<\alpha<\pi0<α<π 且 0<β<2π0<\beta<2\pi0<β<2π。
二、matlab代码与运行结果
需要注意根据象限进行分类,三维一共8个象限
h1 = 1; h2 = 1; h3 = 1; %曲面体积参数
m = 0.2; n = 0.3; p = 0.5; %曲面形状参数
x0 = 0; y0 = 0; z0 = 0; %超二次曲面中心点坐标
% 参数方程 需要分类解析 共八种情况
part = 1000;
alpha = linspace(0,pi,part); beta = linspace(0,2*pi,part);
for i = 1:1:partfor j = 1:1:partif (sin(beta(i))*cos(alpha(j))>=0 && sin(beta(i))*sin(alpha(j))>=0 && cos(beta(i))>=0) x(i,j) = h1*(sin(beta(i)).*cos(alpha(j))).^(1/m)+x0;y(i,j) = h2*(sin(beta(i)).*sin(alpha(j))).^(1/n)+y0;z(i,j) = h3*(cos(beta(i))).^(1/p)+z0;else if (sin(beta(i))*cos(alpha(j))>=0 && sin(beta(i))*sin(alpha(j))>=0 && cos(beta(i))<0)x(i,j) = h1*(sin(beta(i)).*cos(alpha(j))).^(1/m)+x0;y(i,j) = h2*(sin(beta(i)).*sin(alpha(j))).^(1/n)+y0;z(i,j) = -h3*abs(cos(beta(i))).^(1/p)+z0;else if (sin(beta(i))*cos(alpha(j))>=0 && sin(beta(i))*sin(alpha(j))<0 && cos(beta(i))>=0)x(i,j) = h1*(sin(beta(i)).*cos(alpha(j))).^(1/m)+x0;y(i,j) = -h2*abs(sin(beta(i)).*sin(alpha(j))).^(1/n)+y0;z(i,j) = h3*(cos(beta(i))).^(1/p)+z0;else if (sin(beta(i))*cos(alpha(j))>=0 && sin(beta(i))*sin(alpha(j))<0 && cos(beta(i))<0)x(i,j) = h1*(sin(beta(i)).*cos(alpha(j))).^(1/m)+x0;y(i,j) = -h2*abs(sin(beta(i)).*sin(alpha(j))).^(1/n)+y0;z(i,j) = -h3*abs(cos(beta(i))).^(1/p)+z0;else if (sin(beta(i))*cos(alpha(j))<0 && sin(beta(i))*sin(alpha(j))>=0 && cos(beta(i))>=0)x(i,j) = -h1*abs(sin(beta(i)).*cos(alpha(j))).^(1/m)+x0;y(i,j) = h2*(sin(beta(i)).*sin(alpha(j))).^(1/n)+y0;z(i,j) = h3*(cos(beta(i))).^(1/p)+z0;else if (sin(beta(i))*cos(alpha(j))<0 && sin(beta(i))*sin(alpha(j))>=0 && cos(beta(i))<0)x(i,j) = -h1*abs(sin(beta(i)).*cos(alpha(j))).^(1/m)+x0;y(i,j) = h2*(sin(beta(i)).*sin(alpha(j))).^(1/n)+y0;z(i,j) = -h3*abs(cos(beta(i))).^(1/p)+z0;else if (sin(beta(i))*cos(alpha(j))<0 && sin(beta(i))*sin(alpha(j))<0 && cos(beta(i))>=0)x(i,j) = -h1*abs(sin(beta(i)).*cos(alpha(j))).^(1/m)+x0;y(i,j) = -h2*abs(sin(beta(i)).*sin(alpha(j))).^(1/n)+y0;z(i,j) = h3*(cos(beta(i))).^(1/p)+z0;else if (sin(beta(i))*cos(alpha(j))<0 && sin(beta(i))*sin(alpha(j))<0 && cos(beta(i))<0)x(i,j) = -h1*abs(sin(beta(i)).*cos(alpha(j))).^(1/m)+x0;y(i,j) = -h2*abs(sin(beta(i)).*sin(alpha(j))).^(1/n)+y0;z(i,j) = -h3*abs(cos(beta(i))).^(1/p)+z0;endendendendendendendendend
end figure(1)
mesh(x,y,z); %绘制超二次曲面
运行结果:
Matlab代码:绘制超二次曲面(超椭球体)相关推荐
- Adaboost算法原理以及matlab代码实现(超详细)
一.AdaBoost简介 Boosting, 也称为增强学习或提升法,是一种重要的集成学习技术, 能够将预测精度仅比随机猜度略高的弱学习器增强为预测精度高的强学习器,这在直接构造强学习器非常困难的情况 ...
- LDPC译码原理(公式推导)及其matlab代码实现(超详细)
目录 博文更改记录 一.背景概述 二.LDPC译码理论 2.1 LDPC码的表示方法 2.1.1LDPC码的矩阵表示 2.1.2 Tanner图表示 2.2符号说明 2.3LDPC译码算法 2.3.1 ...
- matlab画倾斜的椭球,在MATLAB中绘制椭圆和椭球
How do I draw an ellipse and an ellipsoid using MATLAB? (x^2/a^2)+(y^2/b^2)=1 n=40; a=0; b=2*pi; c=0 ...
- matlab绘制抛物线,MATLAB中绘制抛物线的图像,请补充完成下面代码: clc,clear; x=linspace(...
MATLAB中绘制抛物线的图像,请补充完成下面代码: clc,clear; x=linspace(-2,2,100); ____________; plot(x,y) 答: y=x.^2 在下列各项中 ...
- 【机械】基于广义Hoek-Brown实现应变软化岩体GRC曲线及围岩位移应力塑性区绘制附matlab代码
1 内容介绍 基于岩体的强度参数随着最大塑性主应变的增加而逐渐演化这一力学行为,采用广义Hoek-Brown(H-B)强度准则,以最大塑性主应变作为应变软化参数,假设广义Hoek-Brown强度准则中 ...
- 机器学习之MATLAB代码--MATLAB量子粒子群优化LSTM超参数负荷预测(十三)
机器学习之MATLAB代码--MATLAB量子粒子群优化LSTM超参数负荷预测(十三) 代码 数据 结果 代码 代码按照下列顺序依次: 1. function result(true_value,pr ...
- 风电光伏的场景生成与消减-matlab代码 可利用蒙特卡洛模拟或者拉丁超立方生成光伏和风电出力场景
风电光伏的场景生成与消减-matlab代码 可利用蒙特卡洛模拟或者拉丁超立方生成光伏和风电出力场景,并采用快速前推法或同步回代消除法进行削减,可以对生成场景数和削减数据进行修改,下图展示的为1000个 ...
- MATLAB绘制任意密度的球体并且绘制颜色
使用MATLAB可以绘制各种几何体,赋予他们型状与颜色.这里主要附上如何绘制球体,并且任意绘制颜色. clc clear %假设两个模块之间接触点坐标为(x0,y0,z0),绘图主体模块球中心 %坐标 ...
- MATLAB代码:储能参与调峰调频联合优化模型 代码主要做的是考虑储能同时参与调峰以及调频的联合调度模型,现有代码往往仅关注储能在调峰方面的能力,而实际上同时参与调峰调频将超线性的提高储能的收益
MATLAB代码:储能参与调峰调频联合优化模型 关键词:储能 调频 调峰 充放电优化 联合运行 参考文档:<Using Battery Storage for Peak Shaving and ...
最新文章
- vux Cell组件
- Reptile:requests + Xpath 爬取段子网的段子
- SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
- 手机正在录音怎么隐藏
- 读书笔记-01大型网站架构演化的价值观
- linux ip地址配置
- UNIX环境高级编程学习之路
- IDEA背景颜色及背景图片设置
- socks代理转http代理
- 2021-2027全球与中国Al2O3氧化铝陶瓷基板白板市场现状及未来发展趋势
- 图片格式转换工具(ReaConverter Pro)中文免费版 v7.441
- chloe.mysql_WPF权限控制——【3】数据库、自定义弹窗、表单验证
- 使用AppleScript批量删除Mac中的信息
- 【JZOJ B组】【NOIP2013模拟】Heaven Cow与God Bull
- html语言闪烁特效代码,css3 实现文字闪烁效果的三种方式示例代码
- 从车辆工程到大数据开发,我经历了什么?
- 从零了解进程(操作系统定位,进程的概念,特征,虚拟地址)
- [收藏]超实用压力测试工具-ab工具
- ICPR 2022 | 多模态字幕识别竞赛正式启动!
- NRF51822-QFAC/NRF51822-QFAA/NRF51822-QFAB