MATLAB畫圓,圓心在另圓上移動

2021-03-04 09:01:39 字數 5783 閱讀 1288

1樓:一點點的小

sita=0:0.05:2*pi;

r=2;

x=r*cos(sita);

y=r*sin(sita);

x=[x,x(1)];

y=[y,y(1)];

figure,plot(x,y,'r');

hold on;

r1=1;

si=0:0.05:2*pi;

for ii=1:length(x)

x1=x(ii)+r1*cos(si);

y1=y(ii)+r1*sin(si);

x1=[x1,x1(1)];

y1=[y1,y1(1)];

plot(x1,y1,'b')

endaxis([-5,5,-5,5]);

axis equal;

matlab中如何在空間中畫圓,已知圓心和另外兩點,這兩點到圓心的距離相等

2樓:匿名使用者

1. 下面的程式給出了具體的計算過程.若要多次執行,建議編成m檔案;

2.資料若改為x0=1;y0=2;z0=3;xp=0;yp=2;zp=3;xq=1;yq=2;zq=4;得到乙個平行於xoz平面的圓;

3.本問題的難點在於如何將平面座標轉換為空間座標,大部分計算利用空間解析幾何可以解決,整個過程個人感覺旋轉角度的計算重要且麻煩

知道了圓的半徑和圓心座標,怎樣用matlab畫出這個圓?

3樓:匿名使用者

方法來有很多,列舉兩種自

先用[x,y]=scircle1(o1,o2,r)來生成以bai(o1,o2)為圓心,dur為半徑的zhi圓周上的散點[x,y],再用plot(x,y)就可dao

以了或者用polar極座標來畫,也是用描點法,a=0:0.1:2*pi;b=ones(size(a))*r;polar(a,b)也可以,具體的用法找幫助,很詳細

4樓:匿名使用者

比較粗糙的辦法:轉化成多邊形

matlab 如何根據一組圓心座標函式畫圓?

5樓:匿名使用者

data=;

t=0:360;

figure

axis([0 10 0 10]);

hold on

for i=1:length(data)

x=data(1)+sin(t/360*2*pi);

y=data(2)+cos(t/360*2*pi);

plot(x,y);

hold on

endhold off

希望採納,設定為

滿意答案,謝謝

請教matlab變化圓心畫圓

6樓:

第一種和第二種是動態的,第三種是靜態的

1、3d版

clear all;

clc;

r0=100;

r=27.5;

l1=180;

l2=105;

du=180/pi;

wt3=0:1:75;

y0=(acos((l1^2+l2^2-(r0+r)^2)/(2*l1*l2)))*du;

y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;

y=y0+y1;

r=sqrt(l1^2+l2^2-2*l1*l2*cos(y/du));

%以上為公式

%hold on;% 加上hold on使得所有圖形都在一張圖上,按照matlab順序執行的特點,hold on不能放在多重繪圖語句的最後面,一般放在第乙個繪圖語句的前面或者第一第二個語句的中間都行,如:a註釋所示

%axis equal% 是一種對當前圖形控制代碼的修正命令,放在任意位置都行,注意只對當前圖形控制代碼有效,對於動態圖,其用法跟hold on類似

x=zeros(1,76);% 刪除m,n的預開闢記憶體空間的語句,因為他們的長度是由0:0.1:2*pi的長度決定

y=zeros(1,76);% x,y的長度由0:75決定,所以為76

%以上為縮小範圍

for i=0:1:75 %畫曲線

x(i+1)=r(i+1)*cos(i*pi/180.0);

y(i+1)=r(i+1)*sin(i*pi/180.0);

k=1;

for t=0:0.1:2*pi %畫圓

m(k)=x(i+1)+r*cos(t);

n(k)=y(i+1)+r*sin(t);

k=k+1;

endz=repmat(i,1,k-1);

plot3(m,n,z,'r');

axis([-20 220 -40 200 0 78]);

hold on

plot3(x(1:i+1),y(1:i+1),0:i,'b');

pause(0.1);

% 將繪圖語句放在迴圈外

% hold on % a 如:把hold on語句放在此處也行

end2、2d版

clear all;

clc;

r0=100;

r=27.5;

l1=180;

l2=105;

du=180/pi;

wt3=0:1:75;

y0=(acos((l1^2+l2^2-(r0+r)^2)/(2*l1*l2)))*du;

y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;

y=y0+y1;

r=sqrt(l1^2+l2^2-2*l1*l2*cos(y/du));

%以上為公式

hold on;% 加上hold on使得所有圖形都在一張圖上,按照matlab順序執行的特點,hold on不能放在多重繪圖語句的最後面,一般放在第乙個繪圖語句的前面或者第一第二個語句的中間都行,如:a註釋所示

axis equal% 是一種對當前圖形控制代碼的修正命令,放在任意位置都行,注意只對當前圖形控制代碼有效,對於動態圖,其用法跟hold on類似

x=zeros(1,76);% 刪除m,n的預開闢記憶體空間的語句,因為他們的長度是由0:0.1:2*pi的長度決定

y=zeros(1,76);% x,y的長度由0:75決定,所以為76

%以上為縮小範圍

for i=0:1:75 %畫曲線

x(i+1)=r(i+1)*cos(i*pi/180.0);

y(i+1)=r(i+1)*sin(i*pi/180.0);

k=1;

for t=0:0.1:2*pi %畫圓

m(k)=x(i+1)+r*cos(t);

n(k)=y(i+1)+r*sin(t);

k=k+1;

endplot(m,n,'r');

axis([-20 220 -40 200]);

hold on

plot(x(1:i+1),y(1:i+1),'b');

pause(0.1);

% 將繪圖語句放在迴圈外

% hold on % a 如:把hold on語句放在此處也行

end3、靜態2d版

clear all;

clc;

r0=100;

r=27.5;

l1=180;

l2=105;

du=180/pi;

wt3=0:1:75;

y0=(acos((l1^2+l2^2-(r0+r)^2)/(2*l1*l2)))*du;

y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;

y=y0+y1;

r=sqrt(l1^2+l2^2-2*l1*l2*cos(y/du));

%以上為公式

hold on;% 加上hold on使得所有圖形都在一張圖上,按照matlab順序執行的特點,hold on不能放在多重繪圖語句的最後面,一般放在第乙個繪圖語句的前面或者第一第二個語句的中間都行,如:a註釋所示

axis equal% 是一種對當前圖形控制代碼的修正命令,放在任意位置都行,注意只對當前圖形控制代碼有效,對於動態圖,其用法跟hold on類似

x=zeros(1,76);% 刪除m,n的預開闢記憶體空間的語句,因為他們的長度是由0:0.1:2*pi的長度決定

y=zeros(1,76);% x,y的長度由0:75決定,所以為76

%以上為縮小範圍

for i=0:1:75 %畫曲線

x(i+1)=r(i+1)*cos(i*pi/180.0);

y(i+1)=r(i+1)*sin(i*pi/180.0);

k=1;

for t=0:0.1:2*pi %畫圓

m(k)=x(i+1)+r*cos(t);

n(k)=y(i+1)+r*sin(t);

k=k+1;

endplot(m,n,'r');

axis([-20 220 -40 200]);

hold on

plot(x(1:i+1),y(1:i+1),'b');

% 將繪圖語句放在迴圈外

% hold on % a 如:把hold on語句放在此處也行end

7樓:轉基因牛

for i=0:1:75 %畫曲線

x(i+1)=r(i+1)*cos(i*pi/180.0);

y(i+1)=r(i+1)*sin(i*pi/180.0);

for t=0:1:2*pi %畫圓

m=x(i+1)+r*cos(t);

n=y(i+1)+r*sin(t);

plot(m,n,'r')

hold on

endend

plot(x,y,'r')

axis equal

hold on

不知道是不是你hold on的問題

8樓:

^%試一下

r0=100;

r=27.5;

l1=180;

l2=105;

du=180/pi;

wt3=0:1:75;

y0=(acos((l1^2+l2^2-(r0+r)^2)/(2*l1*l2)))*du;

y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;

y=y0+y1;

r=sqrt(l1^2+l2^2-2*l1*l2*cos(y/du));

%以上為公式

x=zeros(1,360);

y=zeros(1,360);

m=zeros(1,360);

n=zeros(1,360);

%以上為縮小範圍

for i=0:1:75 %畫曲線

x(i+1)=r(i+1)*cos(i*pi/180.0);

y(i+1)=r(i+1)*sin(i*pi/180.0);

%%%%%%%%%%%

%改變t間隔

for t=0:0.1:2*pi %畫圓m=x(i+1)+r*cos(t);

n=y(i+1)+r*sin(t);

%%%%%%%%%%%

%改變畫圖指令及hold on

plot(m,n,'-r')

hold on

endend

%%%%%%%%%%%

%最後的零點不出現

plot(x(1:76),y(1:76),'r')axis equal

怎麼在幾何畫板上怎麼以圓心和半徑繪圓

幾何畫板作為專業的繪圖工具,其中有很多方法畫圓,介紹如下 方法一 直接選擇 圓工具 在畫板上隨意畫圓。方法二 利用圓心和半徑繪圓。首先先用點工具在畫板上畫一點作為圓心 然後利用線段工具畫一條線段作為半徑 用移動工具選中點和線段,執行 構造 以圓心和半徑繪圓 就可以畫出已知半徑的圓。上面兩個是常用方法...

在AI中如何畫圓,在AI中如何畫乙個圓

在ai中畫乙個圓的步驟如下 1 新建乙個ai檔案,開啟工具欄裡面的 矩形工回具 如下圖紅答框所示 2 在矩形工具選單裡面選擇 橢圓工具 如下圖紅框所示 4 選中圓形,調節上方的兩個框,左邊是填充顏色,右邊是描邊顏色,即可改變圓的顏色 5 如下示例,開啟描邊設定,就有很多顏色選擇,選擇需要的顏色即可,...

在「matlab」中的程式如何呼叫為另程式生成的資料

將兩個放在同一目錄下,將該矩陣宣告為全域性變數 即可。前提是你第乙個程式得執行成功生成這個矩陣。要注意的是 中間任何的修改都會影響該矩陣後續的使用。matlab如何在乙個檔案中呼叫另乙個檔案的輸出結果 一 另外乙個程式肯定是個m檔案,或者乙個函式,假設函式名為fun,那麼在這個程式中,輸內入 容c ...