回 帖 发 新 帖 刷新版面

主题:经过线段BP端点P(xk,yk)画外切圆弧PD,用matlab编程画出以上图形

请教各位:在此多谢
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,显示不是实际尺寸大小??怎么办

回复列表 (共2个回复)

沙发


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 

板凳

非常感谢。

我来回复

您尚未登录,请登录后再回复。点此登录或注册