I need to draw arc through three points in three-dimensional space. Can you please help me out?
    5 次查看(过去 30 天)
  
       显示 更早的评论
    
x_i = [0,5,20];
y_i = [0,0,0];
z_i = [20,5,0];
P1 = [x_i(1);y_i(1);z_i(1)]
P2 = [x_i(2);y_i(2);z_i(2)]
P3 = [x_i(3);y_i(3);z_i(3)]
v1 = cross(P2-P1,P3-P1);
v1 = v1/norm(v1)
syms x y z
P0 = [x;y;z];
eqn1 = dot(P0-P1,v1) == 0
eqn2 = dot(P0-(P2+P1)/2,P2-P1) == 0
eqn3 = dot(P0-(P3+P1)/2,P3-P1) == 0
[A,B] = equationsToMatrix([eqn1, eqn2, eqn3], [x, y, z])
P_centre = linsolve(A,B)
Can you please tell me where I am going wrong?
采纳的回答
  Matt J
      
      
 2022-10-21
        
      编辑:Matt J
      
      
 2022-10-21
  
      I would suggest this FEX download,
x_i = [0,5,20];
y_i = [0,0,0];
z_i = [20,5,0];
P1 = [x_i(1),y_i(1),z_i(1)];
P2 = [x_i(2),y_i(2),z_i(2)];
P3 = [x_i(3),y_i(3),z_i(3)];
pfit=planarFit([P1;P2;P3]');
 xy=pfit.R(:,2:3)'*pfit.XYZ;
 cfit=circularFit(xy);
 C=cfit.sample(0:360);
XYZ =num2cell( pfit.R(:,2)*C{1} + pfit.R(:,3)*C{2} + pfit.normal'*pfit.distance  ,2);
scatter3(x_i,y_i,z_i,'filled','r','SizeData',50);
line(XYZ{:}); axis equal
xlabel x, ylabel y, zlabel z

2 个评论
  Matt J
      
      
 2022-10-22
				
      编辑:Matt J
      
      
 2022-10-22
  
			pfit=planarFit([P1;P2;P3]');
 xy=pfit.R(:,2:3)'*pfit.XYZ;
 cfit=circularFit(xy);
 xy=xy-cfit.center';
 t1=atan2d(xy(2,1),xy(1,1));
 t2=atan2d(xy(2,3),xy(1,3));
 C=cell2mat(cfit.sample(linspace(t1,t2)));
XYZ = num2cell( pfit.R(:,2)*C(1,:) + pfit.R(:,3)*C(2,:) + pfit.normal'*pfit.distance  ,2);
scatter3(x_i,y_i,z_i,'filled','r','SizeData',50);
line(XYZ{:}); axis equal
xlabel x, ylabel y, zlabel z

更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Linear Algebra 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





















