컴퓨터 지식 네트워크 - 컴퓨터 백과사전 - 선분의 교차점을 결정하는 방법 – MATLAB Chinese Forum

선분의 교차점을 결정하는 방법 – MATLAB Chinese Forum

모두 지우기

clc

n=6

rp=rand(2,n);%임의의 n 포인트를 생성합니다. 여기서는 5개를 선택했습니다.

y=rp(2,:);

x=rp(1,:);

L=[]% line Matrix

h=1;% counter

m=0;% counter

er=1e-10% 비교 오류, 이에 대해서는 나중에 설명하겠습니다.

p>

i=1:n-1의 경우

h=h+1;

l=h:n의 경우

m=m+ 1 ;

L(m,:)=[x(i) y(i) x(l) y(l)];% 모든 점을 선으로 연결합니다

X= [x(i) x(l)];

Y=[y(i) y(l)];

line(X,Y)% draw 모든 선

p>

잠깐만

h=1;

si=size( L);

mark=zeros(1,si(1));%는 행렬을 교차점으로 표시하는 데 사용됩니다.

i=1:m-1

h =h+1;

l=h:m의 경우

x11=L(i,1);

y11=L(i, 2);

x12=L(i,3);

y12=L(i,4);

x21=L(l,1) ;

p>

y21=L(l,2);

x22=L(l,3);

y22=L(l,4);% 두 개를 추출합니다. L 라인 매트릭스의 라인

a1=(y12-y11)/(x12-x11);%here y1=a1*x1+b1,y2=a2*x2+b2 , 두 라인을 나타냅니다. 선분 1에서 a1=(y12-y11)/(x12-x11), b1=y11-x11*a1

b1=y11-x11*a1;

a2=( y22-y21)/(x22-x21);% 선분 2에서, a2=(y22-y21)/(x22-x21), b2=y21-x21*a2;

b2=y21- x21*a2;

xc=(b2-b1)/(a1-a2);% 여기서 xc는 두 선분이 무한히 길 때 교차점의 x 값입니다. xc= (b2-b1 )/(a1-a2)

yc=a1*xc+b1;% 여기서 yc는 무한히 긴 두 선분의 교차점의 y 값입니다. yc=a1*xc +b1

if x11>x12% x11, x12, 즉 선분의 두 점을 크기에 따라 정렬

s=x11;

x11 = x12;

x12=s;

end

x21>x22%가 x21, x22, 즉 해당 선분에 따라 두 점을 선분에 놓으면 크기 정렬

s=x21;

x21=x22;

x22=s;

>

end

if xc-x11>er && x12-xc>er && xc-x21>er && x22-xc>er% xc의 크기를 x11, x12, x21과 비교하여 x22 이 무한선의 교차점이 선분에 있는지 확인하는 관계,

plot(xc,yc,'o')% xc가 동시에 두 개의 선분에 포함되면 다음과 같습니다. 점이 교차점입니다

유지

mark(i)=i;%i번째 선분은 교차점으로 표시됩니다

mark(l) =l;%l번째 선분이 표시되었습니다. 교차점이 있습니다

end

end

end

nm=0 ;

Lm=[];

for i=1:si(1)

mark(i);

if mark (i)==0%는 표시되지 않습니다. 즉 교차점이 없는 행렬이 없으며 이는 Lm 행렬에 기록되고 두꺼운 빨간색 선으로 표시됩니다.

nm=nm+1;

X=[L(i,1) L(i,3)];

Y=[L(i,2) L(i,4)];

line(X,Y,'color','red' ,'LineWidth',2)% 모든 선 그리기

보류

Lm(nm,:) =[L(i,1) L(i,2) L (i,3) L(i,4)];

colnames={'교차점이 없는 선분 끝점 1, x', '교차점이 없는 선분 끝점 1, y', '교차점이 없는 선분 끝점 2, x', '교차점이 없는 선분 끝점 2, y'};

t = uitable(Lm, colnames); %교차하지 않는 선분을 작성하려면 테이블을 사용하세요.

Lm

上篇: 국제화물운송업은 어떤 산업에 속합니까? 下篇: 멋진 글꼴
관련 내용