1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| >> type perpendiculaire
clear all
A=[4,6,0];B=[1,3,0];C=[3,2,0];
ABC=[4,1,3;6,3,2;0,0,0];
plot3(ABC(1,:),ABC(2,:),ABC(3,:),'b.','MarkerSize',26)
hold on
line(ABC(1,:),ABC(2,:),ABC(3,:))
Vn=cross(A-B,B-C);
N=3*Vn/norm(Vn); % Vecteur normal au plan ABC avec un facteur de dimension = 3
%Perpendiculaire au point B
line([B(1),B(1)+N(1)],[B(2),B(2)+N(2)],[B(3),B(3)+N(3)],'Color','r','LineWidth',3)
axis(2*[-5,5,-5,5,0,5])
grid on
[C,R,CX,CY]=cxy(ABC(1,:),ABC(2,:));
plot3(C(1),C(2),0,'R.','MarkerSize',26)
hc=circle(C,R,1000,':');
% Perpendiculaire au point 100
line([CX(100),CX(100)+N(1)],[CY(100),CY(100)+N(2)],[0,N(3)],'Color','r','LineWidth',3)
function [C,R,CX,CY]=cxy(X,Y)
% Centre, rayon et points d'un cercle defini par trois points X=[x1,x2,x3]
% et Y=[y1,y2,y3]
N=(X(3)^2-X(2)^2)/(Y(3)-Y(2)) - (X(1)^2-X(2)^2)/(Y(1)-Y(2))+Y(3)-Y(1);
D=2*(X(3)-X(2))/(Y(3)-Y(2))-2*(X(1)-X(2))/(Y(1)-Y(2));
C(1)=N/D;
C(2)=-C(1)*((X(1)-X(2))/(Y(1)-Y(2)))+((X(1)^2-X(2)^2)/(Y(1)-Y(2))+Y(1)+Y(2))/2;
R=sqrt((X(1)-C(1))^2+(Y(1)-C(2))^2);
%Calcul des points du cercle
Theta=linspace(0,2*pi,1000);
Rho=ones(1,1000)*R;
[CX,CY] = pol2cart(Theta,Rho);
CX=CX+C(1);
CY=CY+C(2);
>> |
Partager