matlabプログラムは3点を実現して1つの円(円心、半径)を確定します

1715 ワード

clc;clear all
A=input('最初の座標点の[x 1,y 1]:')を入力してください.
B=input('2番目の座標点の[x 2,y 2]:')を入力してください.
C=input('3番目の座標点の[x 3,y 3]:')を入力してください.
plot([A(1) B(1)],[A(2) B(2)],'b','linewidth',2);hold on
plot([A(1) C(1)],[A(2) C(2)],'b','linewidth',2);
plot([C(1) B(1)],[C(2) B(2)],'b','linewidth',2);
judge1=(B(1)-C(1))(B(2)-A(2))-(B(1)-A(1))(B(2)-C(2));
judge2=B(2)-A(2);
I1=0.5(C(2)-A(2))(B(2)-C(2))*(B(2)-A(2));
I2=0.5(A(1)2-B(1)2)(B(2)-C(2));
I3=0.5(B(1)2-C(1)2)(B(2)-A(2));
if(judge1==0)
fprintf('           ,      。');

else
x0=(I1+I2+[I3](https://www.baidu.com/s?wd=I3&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dWnhNbuHmvnH-bm1bzmWnL0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPWDLP1fYn1fvPj6zPjTsPHTz))/judge1;

if(judge2==0)

    y0=-(B(1)-C(1))*(x0-0.5*(B(1)+C(1)))/(B(2)-C(2))+0.5*(B(2)+C(2));

else

    y0=-(B(1)-A(1))*(x0-0.5*(B(1)+A(1)))/(B(2)-A(2))+0.5*(B(2)+A(2));

end

r=sqrt((x0-A(1))^2+(y0-A(2))^2);

theta=0:0.01:2*pi;

fprintf('
(%f,%f)
',x0,y0); fprintf(' %f
',r); x=x0+r*cos(theta); y=y0+r*sin(theta); plot([x0,A(1)],[y0,A(2)],'g'); plot([x0,B(1)],[y0,B(2)],'g'); plot([x0,C(1)],[y0,C(2)],'g'); plot(x,y,'r','linewidth',2); grid on axis equal

end
実行後、画像に示す形式で座標を入力します.
左に曲がる
|
右に曲がる
[画像のアップロードに失敗しました...(image-303586-11877287198)]
そして効果図が得られますよ!!
左に曲がる
|
右に曲がる
[画像のアップロードに失敗しました...(image-8597 c-1511877287197)]