2012-02-26 9 views
2

私の仕事は、スクリーンショットに示すように、4つのロゴを生成するMATLABコードを書くことです。左上は黒、右下は白でなければなりません。他の 2色は、プログラムによってランダムに選択する必要があります。左上の黒い部分を作成MATLAB:4パートカラーロゴ(ポリゴン)

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') 

enter image description here

Iは、以下のアプローチをとっています。私は、そのアプローチが十分であるかどうか、それがあれば、次のステップは何かと思います。私はそれらの2つの変数を形状オブジェクトや何かに格納することを考えました(私は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]の範囲内の均一な乱数を生成します。これは、色の値が期待される場所でもあります。上記のコードでは、2x3のランダムな行列が生成されるため、colの行列内に完全に収まる2つのランダムな色を意味します。

変数cには、Figureの中央が含まれています。プロットを見ると、中心は[5 6](x軸に沿って5、y軸に沿って6)になります。代わりに2つの変数を使用することもできますが、両方を変数にまとめると処理が簡単になると思います。私はあなたのxy変数についても同じことを個人的に行います。それはrotation matricesをより簡単に使用できるようにするためですが、それは選択の問題です。

+0

ありがとう、これは非常に簡単なようです。しかし、いくつかのコマンドを理解して私を助けてくれますか? 私はc変数の仕組みを理解しようとしています。私はあなたが黒に最初に色を設定し、次にランダムな色を設定することを見て(しかし、ブラケットの2,3の値をかなり理解していない)、それを白に設定しますか? –

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')