作业帮 > 数学 > 作业

matlab画球、取两点、做切面

来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/11/06 06:31:32
matlab画球、取两点、做切面
画一个球,球心O,在球的某个切面取两个点a和b,其圆心角为12度.做角aOb的平分线L1,再做L1的垂直面M. 分别作点a,b的切面(做成矩形).然后把两个切面的交线,以及两个切面映射到垂面M上.
比较着急,谢谢大家
matlab画球、取两点、做切面
描述不清楚,弄不懂题意
点a,b在球的某个切面内,是指a,b在和圆相切的平面内,还是a,b在球面上,在某个Oab截平面内?
在某个Oab截平面内还是可以理解,因为对称性,球面任意符合圆心角为12度的两点,都是等价的
而如果a,b在和圆相切的某个平面内,那么随意取两点满足aOb=12度的情况太多了
由于一开始就含糊不清,很难猜测后面描述的垂直面,切面的定义.
再问: 点a,b在球的某个水平切面的边界上,也就是同时在球面上,大神求助!!
再答: L1的垂直面M是什么意思,是和L1垂直的平面吗?
和L1垂直的平面有无数多个,这个垂直面M是不是和圆相切的面呢?

点a,b的切面,是值过点a,b和圆相切的平面吗?
再问: L1的垂面是和L1垂直的面。
a,b的切面是指其和球面相切的面,不是圆面。
因为要求的是两个切面及其相交线映射到这个垂面上,所以任意选取一个垂面即可。选取一个视觉上能看到的垂面即可。
再答: [x y z]=sphere(30);

a=[cosd(6),sind(6),0];
b=[cosd(-6),sind(-6),0];
L1=[2,0,0];

fa=[-1 -a(2)/a(1)+a(1)+a(2)*a(2)/a(1) -1;1 a(2)/a(1)+a(1)+a(2)*a(2)/a(1) -1;1 a(2)/a(1)+a(1)+a(2)*a(2)/a(1) 1;-1 -a(2)/a(1)+a(1)+a(2)*a(2)/a(1) 1];
fb=[-1 -b(2)/b(1)+b(1)+b(2)*b(2)/b(1) -1;1 b(2)/b(1)+b(1)+b(2)*b(2)/b(1) -1;1 b(2)/b(1)+b(1)+b(2)*b(2)/b(1) 1;-1 -b(2)/b(1)+b(1)+b(2)*b(2)/b(1) 1];

h=surf(x,y,z);hold on;hidden off;
set(h,'Edgecolor','none','Facecolor','c','FaceAlpha',0.3);

plot3([0 a(1)],[0 a(2)],[0 a(3)]);
plot3([0 b(1)],[0 b(2)],[0 b(3)]);
plot3([0 L1(1)],[0 L1(2)],[0 L1(3)]);

ha=fill3(fa(:,2),fa(:,1),fa(:,3),'r');
set(ha,'FaceAlpha',0.3);
hb=fill3(fb(:,2),fb(:,1),fb(:,3),'g');
set(hb,'FaceAlpha',0.53);
hM=fill3([2;2;2;2],[-2;-2;2;2],[-2 2 2 -2],'y');
set(hM,'FaceAlpha',0.2);
plot3([1/cosd(6);1/cosd(6)],[0;0],[-1;1],'k');
plot3([2;2],[0;0],[-1;1],'k');
axis equal;
view([45 45]);
hold off;