2012-02-26 41 views
2

我的任務是編寫MATLAB代碼以生成如截圖所示的4部分徽標。左上角應該是黑色的,右下角應該是白色的。其他 兩種顏色應該由程序隨機選擇。 enter image description hereMATLAB:四部分顏色標誌(多邊形)

我採取了以下做法:

clear all 
clc 
close all 

x = [1 4 1 4 1 6.5 7 7]; 
y = [3 4 5.5 5 8 7 8 3]; 
fill(x,y,'k') 

它創建左上角黑色部分。我想知道這種方法是否足夠好,如果是,下一步是什麼。我想將這兩個變量存儲在一個形狀對象中(我不熟悉Matlab)並以某種方式旋轉它。你能幫我解決嗎?

回答

4

這樣做這一切的最簡單的方法,就是要確保您的中心點(即在不同顏色的交匯點) ,定位於[0,0]。然後,圖形的旋轉(90°的倍數)歸結爲改變輪廓的x和/或y值的符號。

如果您需要的數字與[0 0]不同,只需在旋轉後添加這些座標即可。

所以從你的代碼開始,你可以這樣做:

x = [1 4 1 4 1 6.5 7 7]-7; 
y = [3 4 5.5 5 8 7 8 3]-3; 
c = [5 6]; 
col = [0 0 0; 
     rand(2,3); 
     1 1 1]; 
fill(x+c(1), y+c(2),col(1,:)); hold on; 
fill(-x+c(1), y+c(2),col(2,:)); 
fill(x+c(1),-y+c(2),col(3,:)); 
fill(-x+c(1),-y+c(2),col(4,:)); hold off; 

編輯:澄清了colc變量。

變量col包含要在rgb樣式中使用的顏色,其中每行都是顏色。 rand會在[0,1]範圍內生成均勻的隨機數字,這也是顏色值預期爲的位置。在上面的代碼中生成了一個隨機矩陣,所以這意味着2個隨機顏色完全符合col矩陣。

變量c包含圖形的中心。如果你看圖,中心將在[5 6](所以5沿x軸,6沿y軸)。你可以使用兩個變量,但我認爲把它們放在一個變量中更容易處理。我個人會爲你的xy變量做同樣的事情,因爲這可以讓你更容易地使用rotation matrices,但這只是一個選擇問題。

+0

非常感謝,這似乎是非常簡單的。但是,請你幫助我理解一些命令嗎? 我想了解c變量是如何工作的。我看到你先設置一個顏色爲黑色,然後設置一個隨機顏色(不太理解括號中的2,3個值),然後將其設置爲白色? – 2012-02-26 14:32:11

5

你不需要旋轉,只需使用對稱

clear all 
clc 
close all 

x = [1 4 1 4 1 6.5 7 7]; 
y = [3 4 5.5 5 8 7 8 3]-3; 
clrs=jet(10); 
fill(x,y,'k') 
hold on; 
fill(2*max(x)-x,y,clrs(round(rand*10),:)) 
fill(x,-y,clrs(round(rand*10),:)) 
fill(2*max(x)-x,-y,'w')