主题:经过线段BP端点P(xk,yk)画外切圆弧PD,用matlab编程画出以上图形
xihang
[专家分:0] 发布于 2009-04-23 13:23:00
请教各位:在此多谢
1. 经过线段B(x1,yn)P(xk,yk)端点P(xk,yk)画外切圆弧P(xk,yk)D(xn,yn),用matlab编程画出以上图形
2. 另菜鸟问题:matlab编程PLOT出的图形显示怎样处理(或设置)才能不失真??
例如矩形显示:yn-y1=0.5, xn-x1=3,显示不是实际尺寸大小??怎么办
最后更新于:2009-04-23 14:37:00
回复列表 (共2个回复)
沙发
ronei [专家分:360] 发布于 2009-04-23 20:09:00
clc;
% coordiantes
syms x_B y_B x_P y_P x_D y_D
%%
%hold on;
%%
[x,y] = solve('(x-x_P)^2+(y-y_P)^2=(x-x_D)^2+(y-y_D)^2','(x-x_P)*(x_B-x_P)+(y-y_P)*(y_B-y_P)=0','x,y');
% coordiante of B
x_B = 1.0; y_B=1.0;
% coordiante of P
x_P = 2.0; y_P=0.5;
% coordiante of D
x_D = 4.0; y_D=1.0;
% coordiante of circle center
x_R=eval(x);
y_R=eval(y);
BP_x=[x_B x_P];
BP_y=[y_B y_P];
line(BP_x,BP_y);
hold on;
plot(x_D,y_D,'*');
plot(x_P,y_P,'*');
plot(x_R,y_R,'*');
plot(x_B,y_B,'*');
[r theta_s]= trans(x_P,y_P,x_R,y_R);
[r theta_e]= trans(x_D,y_D,x_R,y_R);
%draw_circle([x_R,y_R],r,1000,':');
center=[x_R y_R];
axis equal
radius =r;
NOP=100;
THETA=linspace(theta_s,theta_e,NOP);
RHO=ones(1,NOP)*radius;
[X,Y] = pol2cart(THETA,RHO);
X=X+center(1);
Y=Y+center(2);
H=plot(X,Y,'r');
function [r,theta]=trans(x,y,x_c,y_c)
r = ((x-x_c)^2+(y-y_c)^2)^(1/2);
if (x-x_c)>0
theta = asin((y-y_c)/r) ;
if theta < 0
theta = 2.*pi+theta ;
end
else
theta = pi-asin((y-y_c)/r) ;
end
板凳
xihang [专家分:0] 发布于 2009-04-24 17:17:00
非常感谢。
我来回复