2013-01-16 4 views
0

나에게 주어진 지시는 매우 모호했고 내가해야 할 일에 완전히 빠져 버렸다. 도움이 필요해. 설명하려고 노력하고 누군가가 나를 도울 수 있기를 바랍니다.pmm 파일을 출력하는 2D 배열 만들기 C++

나는 당신과 같이 값 COL와는 화소 (i, j)의 색상을 설정할 때 지정된 폭과 높이의 PPM 파일을 생성해야합니다

float col = float (((i & 0x08) == 0)^((j & 0x08) == 0));

사용할 수 있습니다

RGB 컬러는 다음 구조 : 배열

struct RGB { 
    float r; 
    float g; 
    float b; 
}; 

각 요소는 [0.0, 1.0]의 범위이며,이 파일에 기록하기 전에 [0, 255]로 변환한다.

이것은 내가 가진 것만 큼 많은 정보입니다. 나는 그가 실제로 내가 원하는 것을 잃어 버렸어. 이것은 경험이 많지만 나를위한 정보가 아닐 수 있습니다. 누군가가 이것에 대해 자세히 설명 할 수 있습니까? 또한 첫 번째 수식/코드 스 니펫은 무엇을 수행합니까?

나는 여전히 i와 j가 무엇인지 또는 수식이 무엇인지 또는 RGB의 2 차원 배열에 값을 쓰는 방법을 만들어 내는가!?!?

+0

'i'와 'j'는 설정하려는 픽셀의 좌표입니다. "** float col = float (((i & 0x08) == 0)^((j & 0x08) =)와 같이 값 col로 픽셀 (i, j)의 색상을 설정할 때, = 0));'* " –

+0

모든 도움을 주신 분들께서는 주로 설치 및 감사의 마음을 갖게되었습니다. – BerkleyJ

답변

0
[0 1]의 범위에

제 식 그렇지를 얻을 것이다 값 있지만0s1s때문에 오퍼레이터 == 복귀하거나 (비트의 표현은 0 또는 1) true 또는 false. 0 및/또는 하나 이상의 연산 XOR (^)는 0 또는 여기

1. 동작 XOR 대한 진리표 [0 ~ 255의 범위에서

----------------- 
| a | b | a^b | 
----------------- 
| 0 | 0 | 0 | 
----------------- 
| 0 | 1 | 1 | 
----------------- 
| 1 | 0 | 1 | 
----------------- 
| 1 | 1 | 0 | 
----------------- 

전환 [0 1]은 또한 반환 ]은 255로 곱한 값입니다.

void convertTo_255(struct RGB * array, size_t count { 
    for (size_t i = 0; i < count; i++) { 
     array[ i ].r *= 255; 
     array[ i ].g *= 255; 
     array[ i ].b *= 255; 
    } 
+0

그것은 구조체 RGB의 배열을 생성/생성하고 그 값을 채워서 그것을 혼란스럽게 만듭니다. 컴파일 후 배열의 크기를 설정할 수 없을 때 명령 줄에서 전달 된 차원을 사용하여 배열을 만드는 방법은 무엇입니까?i와 j 값은 무엇입니까? – BerkleyJ

1

PPM은 기본적으로 간단한 비트 맵 형식으로, 기본적으로 질문에 설명되어 있습니다. 자세한 내용을 보려면 google it 또는 cheche out http://netpbm.sourceforge.net/doc/ppm.html.

범위 [0.0 .. 1.0]에서 [0 .. 255]로 변환하려면 각 픽셀 구성 요소에 대해 255.0 배 곱하기 만하면됩니다.

요약 : 파일에 ppm 헤더 쓰기, 모든 픽셀 반복, 해당 구성 요소에 255 곱하기, 변환, 텍스트로 파일 쓰기. 파일의 모든 값은 공백으로 구분됩니다.

첫 번째 코드 스 니펫은 그림을 생성하는 방법을 알려줍니다. 기본적으로 i 번째와 j 좌표가 오른쪽에서 4 번째 비트가 다른 경우 색상이 흰색이고 동일한 경우 검정색입니다. 이것은 16x16 사각형으로 바둑판 패턴을 생성해야합니다.