matlab 已知圆台的两个底面中心坐标和半径,求上下底面的圆上的点的坐标。

用matlab编程实现... 用matlab 编程实现 展开
 我来答
dukinkin
推荐于2016-11-17 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2443
采纳率:90%
帮助的人:1067万
展开全部

x1=rand(1);y1=rand(1);z1=rand(1);r1=rand(1);%一个底中心,半径

x2=rand(1);y2=rand(1);z2=rand(1);r2=rand(1);%另一个底中心,半径


v=[x1-x2 y1-y2 z1-z2]; %两中心连线向量

[m num]=min(abs(v)); %找向量的最小值

a=zeros(1,3);a(num)=1;  %最小方向单位向量

a1=cross(a,v); a1=a1./sqrt(sum(a1.^2)); %计算一个方向的基

a2=cross(a1,v);a2=a2./sqrt(sum(a2.^2)); %计算正交基

deg=linspace(0,360,100); %0~360度分100点,可根据需要增加点数

p1=repmat([x1 y1 z1],length(deg),1)+(cosd(deg)'*a1+sind(deg)'*a2)*r1;%一个底圆

p2=repmat([x2 y2 z2],length(deg),1)+(cosd(deg)'*a1+sind(deg)'*a2)*r2;%另一个底圆


plot3([x1 x2],[y1 y2],[z1 z2],'.-r');hold on;  %画两底中心连线

plot3(p1(:,1),p1(:,2),p1(:,3),'-');            %画一个底圆

plot3(p2(:,1),p2(:,2),p2(:,3),'-');hold off;   %画另一个底圆

axis equal



推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式