matlab 两个球体相交的体积

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了matlab 两个球体相交的体积脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

主要参考了一个网上的一些方法  下面是原理

设 d 为两球球心之间的距离

1、d >= R+ri :两球不相交,即相交部分体积=0.

2、d+ri = R :小球在大球里面,即相交部分体积 = 小球体积 =  matlab 两个球体相交的体积.

3、R-ri < d < R+ri :两球相交,相交部分体积:

设 matlab 两个球体相交的体积 ,matlab 两个球体相交的体积 .

matlab 两个球体相交的体积matlab 两个球体相交的体积 .

V = matlab 两个球体相交的体积 .

matlab 两个球体相交的体积

 

 

 

证明:

相交部分体积是由2块构成的,分别属于两个球体。其中一块的体积公式为(以大球为例):

matlab 两个球体相交的体积

matlab 两个球体相交的体积

matlab 两个球体相交的体积

matlab 两个球体相交的体积

matlab 两个球体相交的体积

matlab 两个球体相交的体积

matlab 两个球体相交的体积

matlab 两个球体相交的体积

matlab 两个球体相交的体积

matlab 两个球体相交的体积

代码:

 1 function [] = sphere()    
 2 clc
 3 clear
 4  pi=3.1415926;
 5 Circle_A.x=0;
 6 Circle_A.y=0;
 7 Circle_A.z=0;
 8 Circle_A.r=5;
 9 % % % % % % % % % % 
10 Circle_B.x=0;
11 Circle_B.y=0;
12 Circle_B.z=5;
13 Circle_B.r=5;
14 int16 T=20;
15 int16 Case=1;
16 V=0.0;
17 d=sqrt((Circle_A.x - Circle_B.x)*(Circle_A.x - Circle_B.x) + (Circle_A.y - Circle_B.y)*(Circle_A.y - Circle_B.y) + (Circle_A.z - Circle_B.z)*(Circle_A.z - Circle_B.z));
18 if(d>=Circle_A.r+Circle_B.r)
19 V=0;
20 elseif(d+Circle_A.r<=Circle_B.r)
21 V=V+(4.0 / 3)*pi*Circle_A.r*Circle_A.r*Circle_A.r;
22 elseif(d+Circle_B.r<=Circle_A.r)
23 V=V+(4.0 / 3)*pi*Circle_B.r*Circle_B.r*Circle_B.r;
24 else
25 co = double((Circle_A.r*Circle_A.r+d*d-Circle_B.r*Circle_B.r)/(2.0*d*Circle_A.r));
26 h = double(Circle_A.r*(1-co));
27 V=V+(1.0/3)*pi*(3.0*Circle_A.r-h)*h*h;
28 co=double((Circle_B.r*Circle_B.r+d*d-Circle_A.r*Circle_A.r)/(2.0*d*Circle_B.r));
29 h=double(Circle_B.r*(1-co));
30 V=V+(1.0/3)*pi*(3.0*Circle_B.r-h)*h*h;
31 end
32 V

 

脚本宝典总结

以上是脚本宝典为你收集整理的matlab 两个球体相交的体积全部内容,希望文章能够帮你解决matlab 两个球体相交的体积所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。