那是因爲你沒有爲框中指定座標正確。請記住,line
需要兩個向量,其中第一個向量是一列x
座標,第二個向量是一列y
座標。除了第一點外,每一個對(x, y)
都將具有從其先前(i-1)點直到第點繪製的線。由A
和B
繪製的線是相同的線。 C
和D
也是如此。這只是修改語句的問題,因此您正在繪製線條。
在繪製可愛的ASCII圖形框圖示:
(0, rho) (rho, rho)
------------------------
| |
| |
| |
| |
------------------------
(0, 0) (rho, 0)
您需要繪製四條線。讓我們逆時針遍歷:
- 從
(0, 0)
要(0, rho)
- 從
(0, rho)
要(rho, rho)
- 從
(rho, rho)
要(rho, 0)
- 從
(rho, 0)
要(0, 0)
因此,修改你的代碼是:
rho = 2*pi;
A = line([0 0],[0 rho]);
B = line([0 rho],[rho rho]);
C = line([rho rho],[rho 0]);
D = line([rho 0],[0 0]);
順便說一句,上面的代碼可能以後不能移植。你會得到線條句柄,因爲你不用這個作爲fill
的輸入。
我們終於得到:
這可能是更清潔,只是把所有的座標,在短短兩個向量,並呼籲line
。這也將使得這個戲很好地與fill
:
rho = 2*pi;
x = [0, 0, rho rho, 0];
y = [0, rho, rho, 0, 0];
line(x, y);
hold on;
fill(x, y, 'b');
請注意,我們使用正確的約定line
,然後繪製它,然後我們填充它。如果您遵循前面指定的邏輯,我們畫一條從(0, 0)
到(0, rho)
,然後從(0, rho)
到(rho, rho)
,然後從(rho, rho)
到(rho, 0)
然後最後從(rho, 0)
回到(0, 0)
。請注意,我們必須在開始和結束時使用原點(0, 0)
,以確保我們在正方形的底部邊緣繪製線條。我們還使用hold on
將填充框添加到您在圖上繪製的方形邊界之後。 fill
需要座標向量,就像line
一樣。我們得到: