2012-02-26 3 views
2

내 작업은 스크린 샷과 같이 4 부분 로고를 생성하는 MATLAB 코드를 작성하는 것입니다. 왼쪽 상단은 검정색이어야하며 오른쪽 하단은 흰색이어야합니다. 다른 두 가지 색상을 프로그램에서 임의로 선택해야합니다. 왼쪽 상단의 검은 부분을 만들어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

나는 다음과 같은 접근 방식을 가지고있다. 그 접근법이 충분히 좋은지, 그것이 있다면, 다음 단계는 무엇인지 궁금합니다. 모양 객체 또는 무언가 (나는 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에는 그림의 중심이 포함됩니다. 플롯을 보면 중심은 [5 6] (x 축은 5, y 축은 6)입니다. 대신에 두 개의 변수를 사용할 수는 있지만 두 변수를 모두 변수에 유지하는 것이 더 쉽게 처리 할 수 ​​있다고 생각합니다. 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') 
관련 문제