首先介紹一下rectangle函數
1.rectangle函數實際上是一個畫矩形的行數,語法調用為:
rectangle('Position',[x,y,w,h]),表示的是從左下角點(x,y)開始畫一個寬w高h的矩形。默認情況下是從(0,0)開始畫一個寬1高1的矩形。例如直接在命令窗口出入:rectangle,axis equal 畫出的圖形如下圖所示。(axis equal的意思是保持橫縱坐標等比例)
2.
rectangle函數可以制定矩形邊的曲率,這就為我們畫圓提供了一個思路。改變曲率的參數是'Curvature',[x,y] ,先改變一下曲率畫個試試。在matlab命令窗口中輸入如下命令:
rectangle('Position',[0,0,1,1],'Curvature',[0.5,0.8]),axis equal
3.
要畫圓的話只需要將曲率設置成1就行了。注意'Curvature',[0.5,0.8]后面的兩個參數[0.5,0.8]分別表示兩個邊的曲率。畫一個圓試試,輸入命令如下:
rectangle('Position',[0,0,1,1],'Curvature',[1,1]),axis equal;
4.
直接畫圓已經可以了,下一步就是指定圓形坐標和半徑了。我們不妨先分析一下:
1.rectangle函數本來畫的是矩形,可以指定初始位置坐標和半徑。如果要畫圓首先要把曲率都設置成1;
2.從上一部的圖中可以看出畫出的圓是曲率為0時矩形的內切圓,所以這里參數的長和寬都等於2倍的半徑,即w=h=2r;
3.下面是圓心,可以通過設置初始位置坐標來實現,圓心就是初始位置坐標(x,y)均加上半徑r。所以如果已知圓心坐標(x,y)和半徑r畫圓的話,rectangle函數的未知參數應該為 'Position',[x-r,y-r,2*r,2*r] 。
4.
matlab畫任意位置的圓。例如要畫一組圓,已知圓心坐標和半徑。
x,y,r
1,1,3
0,4,2
5,4,1
matlab程序:
rectangle('Position',[-2,-2,6,6],'Curvature',[1,1]),axis equal
rectangle('Position',[-2,2,4,4],'Curvature',[1,1]),axis equal
rectangle('Position',[4,3,2,2],'Curvature',[1,1],'edgecolor','r'),axis equal %加上顏色信息
今天在用MATLAB編程的時候,用到了已知圓心和半徑,畫圓的程序,上網搜了一下,主要有下面兩種,在這里總結一下:(這里我都是放在函數中做的,想畫多個圓的話可以加個for循環調用一下函數,或者直接用向量做都是可以的,在這里我不在多說)
第一種:
function [] = circle( x,y,r )
rectangle('Position',[x-r,y-r,2*r,2*r],'Curvature',[1,1],'linewidth',1),axis equal
end
rectangle這個函數有興趣的可以查一下,這個是畫矩形的函數,這里我們把曲率設置成1,畫出來的是圓,但是這種方法沒有辦法改變話圓的顏色,不是填充色,而是圓外輪廓的顏色,至今我還沒找到方法。如果有知道的可以給我評論下,謝謝啦
補充: rectangle改變圓外輪廓的顏色:在函數中加入'EdgeColor', 'w',這個是看到評論中說可以改變,但是我現在沒有環境,沒法測試,感興趣的朋友可以試一下,感謝評論留言的小伙伴。
第二種:
function [] = plot1( x,y,r )
theta=0:0.1:2*pi;
Circle1=x+r*cos(theta);
Circle2=y+r*sin(theta);
c=[123,14,52];
plot(Circle1,Circle2,'c','linewidth',1);
axis equal
end
這種是利用圓的參數方程做的,效果比上面的好,但是比上面的麻煩了一點
補充:看到有評論說可以用MATLAB里自帶的工具畫圓,但是我現在沒有工具,無法進行測試,但是在這里還是補充上,感興趣的朋友可以試一下:
viscircles(centers,radii)
原文:https://blog.csdn.net/ZLK961543260/article/details/70216089