Matlab:任意的三维Cubic空间中生成大小不一样的小球,并画出截面

news2024/11/28 0:36:49

生成小球和大球的代码块

clear all
clc
close all
% entorid3D = rand(10,3, 0.1,0.9);

% for c11 = 0.05:0.3:0.95
%     for c12 = 0.05:0.3:0.95
%         for c13 = 0.05:0.3:0.95
%             [x1,y1,z1]  = ellipsoid(c11, c12, c13, 0.05, 0.05, 0.05,100);
%             surf(x1,y1,z1,'LineStyle','none','FaceColor', 'r') %画出来球
%             axis equal %保证各个维度的长短一致
%             hold on
%         end
%     end
% end
% hold on

% Big spere
[xb,yb,zb]  = ellipsoid(2.0, 2.0, 2.0, 0.49, 0.49, 0.49,100);
surf(xb,yb,zb,'LineStyle','none','FaceColor', 'c') %画出来球
axis equal %保证各个维度的长短一致
hold on

% Small speres
for c21 = 1.5:1.0:2.9
    for c22 = 1.5:1.0:2.9
        c23 = 2.0;
        [x2,y2,z2]  = ellipsoid(c21, c22, c23, 0.25, 0.25, 0.25,100);
        surf(x2,y2,z2,'LineStyle','none','FaceColor', 'b') %画出来球
        axis equal %保证各个维度的长短一致
    end
end
hold on

% Small speres
for c33 = 1.5:1.0:2.9
    for c32 = 1.5:1.0:2.9
        c31 = 2.0;
        [x3,y3,z3]  = ellipsoid(c31, c32, c33, 0.25, 0.25, 0.25,100);
        surf(x3,y3,z3,'LineStyle','none','FaceColor', 'r') %画出来球
        axis equal %保证各个维度的长短一致
    end
end
hold on
xlabel('$x_1$', 'Fontsize', 18, 'Interpreter', 'latex')
ylabel('$x_2$', 'Fontsize', 18, 'Interpreter', 'latex')
zlabel('$x_3$', 'Fontsize', 18, 'Interpreter', 'latex')
set(gca, 'XMinortick', 'off', 'YMinorTick', 'off', 'Fontsize', 14);
set(gcf, 'Renderer', 'zbuffer');
hold on

axis([1 3 1 3 1 3]);
camlight('headlight')

在这里插入图片描述
下面的图为画分别平行于 xoy 和 yoz 的截面

clear all
close all
clc

num2xy_point = 30000;
xy_point = rand(num2xy_point, 2);
xy_point(:,1) = 1+xy_point(:,1)*2;
xy_point(:, 2) = 1+xy_point(:, 2)*2;
count_num2xy=1;
for ip2xy = 1:num2xy_point
    x1_ip = xy_point(ip2xy,1);
    y1_ip = xy_point(ip2xy,2);
    
    % 抠除中心大球     
    cx1_b = x1_ip-2.0;
    cy1_b = y1_ip-2.0;
    rcb = sqrt(cx1_b^2+cy1_b^2);
    
    % 抠除小球 1
    cx1_1 = x1_ip-1.5;
    cy1_1 = y1_ip-1.5;
    rc1 = sqrt(cx1_1^2+cy1_1^2);
    
    % 抠除小球 2
    cx1_2 = x1_ip-2.5;
    cy1_2 = y1_ip-2.5;
    rc2 = sqrt(cx1_2^2+cy1_2^2);
    
    % 抠除小球 3
    cx1_3 = x1_ip-1.5;
    cy1_3 = y1_ip-2.5;
    rc3 = sqrt(cx1_3^2+cy1_3^2);
    
    % 抠除小球 4
    cx1_4 = x1_ip-2.5;
    cy1_4 = y1_ip-1.5;
    rc4 = sqrt(cx1_4^2+cy1_4^2);
    
    if rcb>0.49 && rc1>0.25 && rc2>0.25 && rc3>0.25 && rc4>0.25
        irregularD1(count_num2xy, 1)=x1_ip;
        irregularD1(count_num2xy, 2)=y1_ip;
        count_num2xy=count_num2xy+1;
    end
end
size2xy_point = size(irregularD1);
irregularD1Z = ones(max(size2xy_point),1)*2.0;
irregularD1X = irregularD1(:, 1);
irregularD1Y = irregularD1(:, 2);

irregularD1XYZ = [irregularD1X,irregularD1Y,irregularD1Z];

num2yz_point = 30000;
yz_point = rand(num2yz_point, 2);
yz_point(:,1) = 1 + yz_point(:,1)*2;
yz_point(:, 2) = 1 + yz_point(:, 2)*2;
count_num2yz=1;
for ip2xy = 1:num2yz_point
    y2_ip = yz_point(ip2xy,1);
    z2_ip = yz_point(ip2xy,2);
    
    % 抠除中心大球     
    cy2_b = y2_ip-2.0;
    cz2_b = z2_ip-2.0;
    rcb2 = sqrt(cy2_b^2+cz2_b^2);
    
    % 抠除小球 1
    cy1_1 = y2_ip-1.5;
    cz1_1 = z2_ip-1.5;
    rc21 = sqrt(cy1_1^2+cz1_1^2);
    
    % 抠除小球 2
    cy2_2 = y2_ip-2.5;
    cz2_2 = z2_ip-2.5;
    rc22 = sqrt(cy2_2^2+cz2_2^2);
    
    % 抠除小球 3
    cy2_3 = y2_ip-1.5;
    cz2_3 = z2_ip-2.5;
    rc23 = sqrt(cy2_3^2+cz2_3^2);
    
    % 抠除小球 4
    cy2_4 = y2_ip-2.5;
    cz2_4 = z2_ip-1.5;
    rc24 = sqrt(cy2_4^2+cz2_4^2);
    
    if rcb2>0.49 && rc21>0.25 && rc22>0.25 && rc23>0.25 && rc24>0.25
        irregularD2(count_num2yz, 1)=y2_ip;
        irregularD2(count_num2yz, 2)=z2_ip;
        count_num2yz=count_num2yz+1;
    end
end
size2yz_point = size(irregularD2);
irregularD2X = ones(max(size2yz_point),1)*2.0;
irregularD2Y = irregularD2(:, 1);
irregularD2Z = irregularD2(:, 2);

irregularD2XYZ = [irregularD2X,irregularD2Y,irregularD2Z];

figure('name', 'fig')
scatter3(irregularD1X,irregularD1Y,irregularD1Z,'r.')
hold on

scatter3(irregularD2X,irregularD2Y,irregularD2Z,'c.')
hold on
xlabel('$x_1$', 'Fontsize', 18, 'Interpreter', 'latex')
ylabel('$x_2$', 'Fontsize', 18, 'Interpreter', 'latex')
zlabel('$x_3$', 'Fontsize', 18, 'Interpreter', 'latex')
set(gca, 'XMinortick', 'off', 'YMinorTick', 'off', 'Fontsize', 14);
set(gcf, 'Renderer', 'zbuffer');
hold on

axis([1 3 1 3 1 3]);

XYZ = [irregularD1XYZ;irregularD2XYZ];

u = 10*exp(-0.25*(XYZ(:,1)+XYZ(:,2)+XYZ(:,3)));

save('TwoSlice2TestXYZ.mat','XYZ')

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1582022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue+el-table 修改表格 单元格横线边框颜色及表格空数据时边框颜色

需求 目前 找到对应的css样式进行修改 修改后 css样式 >>>.el-table th.el-table__cell.is-leaf {border-bottom: 1px solid #444B5F !important;}第二个问题 修改 表格空数据时,边框颜色 css样式 >>>.el-table::before {background-color: tra…

C/C++的前置++、后置++以及前置--、后置--使用的详细讲解

在c/c语言中,变量的自增和自减经常被使用到,所以今天就来个详细讲解。本次讲解用到的语言是c语言,在c中的原理也是一样的。 变量自增自减分为四种情况,每种情况的结果都有所差异,四种情况分别为前置、后置、前置--、后…

代码整洁之道【2】--函数

关于函数部分的总结 一、函数只做一件事 函数应该只做一件事、做好这件事、只做这件事。 判断函数是否不止做了一件事,还有一个方法,就是看是否能再拆出一个函数,该函数不仅只是单纯地重新 二、函数尽量不要太长 按照作者的理论&#xff…

MQ之————如何保证消息的可靠性

MQ之保证消息的可靠性 1.消费端消息可靠性保证: 1.1 消息确认(Acknowledgements): 消费者在接收到消息后,默认情况下RabbitMQ会自动确认消息(autoAcktrue)。为保证消息可靠性,可以…

VMware启动显示“打开虚拟机时出错: 获取该虚拟机的所有权失败”

提示框(忘截图了)里提示目录C:\Users\mosep\Documents\Virtual Machines\VM-Win10 x64\中的某个文件(在我这里好像是VM-Win10 x64.vmx,VM-Win10 x64是我给虚拟机取的名字)在被使用中。 找到这个目录,删除.…

【Linux】虚拟化技术docker搭建SuitoCRM系统及汉化

CRM系统 CRM(Customer Relationship Management,客户关系管理)系统是一种用于管理和优化企业与客户关系的软件工具。在商业竞争激烈的现代社会中,CRM系统已成为许多企业提高销售、增强客户满意度和实现持续增长的重要工具。 搭建…

NumPy进阶(二)

2. NumPy进阶(二) 2.1 Numpy数组操作 2.1.1 添加元素 numpy.append 函数在数组的末尾添加值。 追加操作会分配整个数组,并把原来的数组复制到新数组中 注意: 插入的维度要保证所有数组的长度是相同的如果没有指定轴,数组会被扁平处理 ndarr…

MOMENT: A Family of Open Time-series Foundation Models

MOMENT: A Family of Open Time-series Foundation Models PDF: https://arxiv.org/pdf/2402.03885.pdf Code: https://anonymous.4open.science/r/BETT-773F/README.md 1 概述 MOMENT是一个用于通用时间序列分析的开源基础模型系列。由于缺少大型公共时间序列存储库、时间序…

matlab:有限差分求解纳维尔(Navier)边界的双调和(Biharmonic)方程,边值为零

我们考虑如下形式的双调和方程的数值解 其中,Ω是欧氏空间中的多边形或多面体域,在其中,d为维度,具有分段利普希茨边界,满足内部锥条件,f(x) ∈ L2(Ω)是给定的函数,∆是标准的拉普拉斯算子。算…

JVM规范中的运行时数据区

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

YOLOv9改进策略 :卷积魔改 | 变形条状卷积,魔改DCNv3二次创新

💡💡💡本文独家改进: 变形条状卷积,DCNv3改进版本,不降低精度的前提下相比较DCNv3大幅度运算速度 💡💡💡强烈推荐:先到先得,paper级创新,直接使用; 💡💡💡创新点:1)去掉DCNv3中的Mask;2)空间域上的双线性插值转改为轴上的线性插值; 💡💡💡…

QT windeployqt打包出现无法正常启动问题

QT 通过windeployqt 打包后出现的问题 原因QT构建选择的是64位的 但是windows下运行的却是32位的 步骤打开32的所在路径 一般在上一级目录会有安装好的64位的MSVC工具 运行打包即可

装饰建材商城网满足家装行业需求,改变传统装修市场

装饰建材商城网满足家装行业需求,改变传统装修市场 随着国内楼市的火爆发展,家装行业可谓是炙手可热。人们关于家装的需求也开始从过去简单的宜居,开始向多元化需求转变,如环保、健康、安全、绿色、时尚等等。加上互联网的快速发展…

电能质量测试仪的功能特点

武汉凯迪正大电能质量测试仪功能特点 1、多通道测量:4个电压通道、4个电流通道同时测量。 2、电气参数测量:可同时测量电压幅值、电流幅值、相位、频率、有功功率、无功功率、功率因数等参数; 3、可测量2-64次的电压谐波和电流谐波含量&am…

C语言:指针详解(1)

目录 一、内存和地址 1.内存 2.究竟该如何理解编址 二、指针变量和地址 1.取地址操作符(&) 2.解引用操作符(*) 3.指针变量的大小 三、指针变量类型的意义 1.指针的解引用 2.指针-整数 3.void*指针 四、const修饰指针 1.const修饰变量 2.const修饰指针变量 五…

【计算机毕业设计】企业仓储管理系统——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

如何利用在线仿真软件提高教学质量?

在教育技术迅速发展的今天,老师们面临着一个共同的挑战:如何有效地利用新兴技术提高教学质量。特别是在科学、技术、工程和数学(STEM)教育领域,实践性和互动性是学习过程中不可或缺的元素。本文将深入探讨在线仿真软件…

[大模型]ChatGLM3-6B Code Interpreter

ChatGLM3-6B Code Interpreter 请注意,本项目需要 Python 3.10 或更高版本。 环境准备 由于项目需要python 3.10或更高版本,所以我们在在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择Miniconda–>conda3–>3.10(ubu…

护眼灯值不值得买?收获好评最多的护眼灯十大品牌推荐

如今,我们可以清晰地观察到越来越多的人很早就戴上眼镜的现象。这可能是由于频繁接触电子产品,长时间的学习,或处于不良的光线环境下造成的。不论原因何在,我们都意识到创造良好的光线环境对保护视力至关重要。尽管一些人对市面上…

springboot3使用自定义注解+AOP+redis优雅实现防重复提交

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 实现思路 实现步骤 1.定义防重复提交注解 2.编写一个切面去发现该注解然后执行防重复提交逻辑 3.测试 …