Top

클래스 설계

모든 그래픽 프로그램의 핵심 부분은 RGB 색상 및 이미지와 같은 그래픽 엔티티뿐만 아니라 벡터 및 행렬과 같은 기하학적 엔티티에 대한 우수한 클래스 또는 루틴을 갖는 것입니다. 이러한 루틴은 가능한 깨끗하고 효율적으로 이루어져야 합니다. 보편적인 설계 질문은 위치와 변위가 서로 다른 작업을 수행하기 때문에 별도의 클래스여야 하는지 여부입니다. (Goldman, 1985; DeRose, 1989). 이 질문에 대한 동의는 거의 없으며 그래픽 전문가들 사이에서 몇 시간 동안 열띤 토론을 벌일 수 있지만 예를 들어 구별하지 않을 것이라고 가정해 보겠습니다. 이것은 작성해야 할 몇 가지 기본 클래스가 다음을 포함한다는 것을 의미합니다.

vecotr2: $x$ 및 $y$ 구성요소를 저장하는 2D 벡터 클래스입니다. 인덱싱 연산자가 잘 지원될 수 있도록 길이 2 배열에 이러한 구성 요소를 저장해야 합니다. 벡터 더하기, 벡터 빼기, 내적, 외적, 스칼라 곱하기, 스칼라 나눗셈에 대한 연산도 포함해야 합니다.

vector3: vector2와 유사한 3D 벡터 클래스입니다.

hvector: 4개의 구성요소가 있는 동차 벡터 (7장 참조).

rgb: 세 가지 구성 요소를 저장하는 RGB 색상입니다. RGB 더하기, RGB 빼기, RGB 곱하기, 스칼라 곱하기, 스칼라 나누기에 대한 연산도 포함해야 합니다.

transform: 변환을 위한 $4 × 4$ 행렬. 위치, 방향 및 표면 법선 벡터에 적용할 행렬 곱셈과 멤버 함수를 포함해야 합니다. 6장에서 보듯이 이것들은 모두 다릅니다.

image: 출력 작업이 있는 RGB 픽셀의 2D 배열입니다.

또한 간격, 직교 기준 및 좌표 프레임에 대한 클래스를 추가하거나 추가하지 않을 수 있습니다.