查看: 81|回复: 2|关注: 0
打印 上一主题 下一主题

[已解决] plot3作图问题

[复制链接]

新手

5 麦片

财富积分


050


2

主题

10

帖子

0

最佳答案
跳转到指定楼层
1#
发表于 昨天?01:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
te.mat已放于附件中;想知道为什么橘色部分的图形显示不出来,但是若没有另外两个plot(蓝色部分),这个图形又会显示。

load('te.mat');
g=size(vv,1);
a=vv(1,2:4);
b=vv(2,2:4);
for k=3:g
c=vv(k,2:4);
t=0.95;%越接近1越好
ab=b-a;%向量AB
bc=c-b;%向量BC
%求AB的切点E
e=zeros(1,3);
for i=1:3
? ? e(i)=t*b(i)+(1-t)*a(i);
end
%做线段AE
plot3([a(1) e(1)],[a(2) e(2)],[a(3) e(3)],'k');
hold on


%求BC的切点F
f=zeros(1,3);
for i=1:3
? ? f(i)=t*b(i)+(1-t)*c(i);
end
%求圆心
o = CircleCenter(e, b, f);
ob=b-o;
r=norm(ob);
%构造点
of=f-o;oe=e-o;
l=1;
for t1= 0:pi/50:100
n=of+t1*oe;
n=n/norm(n);
n1(l)=n(1);n2(l)=n(2);n3(l)=n(3);
l=l+1;
end
plot3(n1,n2,n3,'-*r');
hold on
h.LineWidth = 2;


if k==g
? ? %做线段FC
plot3([f(1) c(1)],[f(2) c(2)],[f(3) c(3)],'k');
end

k=k+1;a=f;b=c;
end

%%
%求圆心
function p = CircleCenter(p1, p2, p3)
% CircleCenter(p1, p2, p3) 根据三个空间点,计算出其圆心
%? ?p1,p2,p3:三个空间点
% 圆的法向量
pf= cross(p1-p2, p1-p3);
if any(pf == 0)
? ???error('三个点不能共线!!');
end
% 两条线段的重点,之后需要求中垂线
p12 = (p1 + p2)/2;
p23 = (p2 + p3)/2;
% 求两条线的中垂线
p12f = cross(pf, p1-p2);
p23f = cross(pf, p2-p3);
% 求在中垂线上投影的大小
ds = ( (p12(2)-p23(2))*p12f(1) - (p12(1)-p23(1))*p12f(2) ) / ( p23f(2)*p12f(1) - p12f(2)*p23f(1) );
% 得出距离
p = p23 + p23f .* ds;
end

te.mat

446 Bytes, 下载次数: 0

新手

5 麦片

财富积分


050


2

主题

10

帖子

0

最佳答案
2#
?楼主| 发表于 昨天?01:16 | 只看该作者
我知道了,因为数值上两者相差太大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表