三角形外接圆

来源:互联网 发布:关于网络爆红的论文 编辑:程序博客网 时间:2024/05/07 17:05
http://www.cnblogs.com/tiandsp/p/3995876.html
clear all;close all;clc;p=rand(3,2);    %(x,y)cen1=(p(1,:)+p(2,:))/2;         %三角形一条边中点cen2=(p(2,:)+p(3,:))/2;         %另一条边中点k1=-1/((p(1,2)-p(2,2))/(p(1,1)-p(2,1)));    %一条边垂直平分线b1=cen1(2)-k1*cen1(1);k2=-1/((p(2,2)-p(3,2))/(p(2,1)-p(3,1)));    %另一条边垂直平分线b2=cen2(2)-k2*cen2(1);x0=-(b1-b2)/(k1-k2);             %求两直线交点y0=-(-b2*k1+b1*k2)/(k1-k2);                                    r=sqrt((y0-p(1,2))^2+(x0-p(1,1))^2); hold on;plot(p(:,1),p(:,2));p=circshift(p,1);plot(p(:,1),p(:,2));theta=0:0.01:2*pi;x=x0+r*cos(theta);y=y0+r*sin(theta);plot(x,y,'-',x0,y0,'.');axis equal





http://bbs.csdn.net/topics/10322015



x1=0,y1=0,x2=0,y2=1,x3=1,y3=0;
a=x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2);
b=(x1^2+y1^2-x2^2-y2^2)/2;
c=(x1^2+y1^2-x3^2-y3^2)/2;
d=b*(y1-y3)-c*(y1-y2);
e=c*(x1-x2)-b*(x1-x3);

如果a等于0,则说明给定的三点共线(我们知道共线的三点无法确定一个圆)
如果a不等于0,则圆心坐标为(d/a,e/a),r=sqrt((d/a-x1)^2+(e/a-y1)^2))



set(gca,'yminorgrid','on');
set(gca,'ygrid','on');

grid on;//开启网格模式

grid off;//关闭网格模式

grid minor;



hold on 是当前轴及图形保持而不被刷新,准备接受此后将绘制

hold off 使当前轴及图形不在具备被刷新的性质

hold on 和holdoff,是相对使用的
前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到
后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是holdoff,则再画另一幅图时,原来的图就看不到了,在轴上绘制的是新图,原图被替换了

varargout:在matlab中定义m函数时通过varargout我们可以得到可变个数个返回值。

nargout:在matlab中定义一个函数时, 在函数体内部, nargout指出了输出参数的个数.

nargin:在matlab中定义一个函数时, 在函数体内部, nargin是用来判断输入变量个数的函数。


num2str :把数值转换成字符串, 转换后可以使用fprintf或disp函数进行输出。

str = num2str(A)
把数组A中的数转换成字符串表示形式。
str = num2str(A, precision)

zeros:zeros功能是返回一个m×n×p×...的double类零矩阵。

ones:产生m×n的全1矩阵。如果调用方式为ones(n),则表示产生n×n的方阵。


rand、randn、magic、eye(单位矩阵)

nargin

0 0
原创粉丝点击