fillpoly() 함수란?
C 언어의 graphics.h 헤더 파일에는 fillpoly() 함수가 포함되어 있습니다. 이 함수는 삼각형, 사각형, 오각형, 육각형 등 다양한 다각형(polygon)을 화면에 그린 뒤 내부를 색으로 채우는 역할을 합니다.
fillpoly() 함수는 다각형의 외곽선만 그리는 drawpoly() 함수와 동일한 인자(argument)를 사용하며, 차이점이라면 그린 도형의 내부까지 자동으로 채워준다는 점입니다.
함수 문법
void fillpoly( int number, int *polypoints );
매개변수 설명
- number: 다각형을 구성하는 점의 개수로, (n + 1)개를 의미합니다. 여기서 n은 다각형의 꼭짓점(vertex) 수입니다.
- polypoints: (n × 2)개의 정수 배열을 가리키는 포인터로, 각 정수 쌍(pair)이 다각형 위 한 점의 x 좌표와 y 좌표를 나타냅니다.
꼭짓점이 n개인데도 (n + 1)개의 좌표를 지정하는 이유는, 마지막 점의 좌표가 첫 번째 점의 좌표와 동일해야 도형이 닫히면서 완전한 다각형이 그려지기 때문입니다.
입력 예시
arr[] = {320, 150, 400, 250, 250, 350, 320, 150};위 배열은 4개의 점(8개의 정수)으로 구성되어 있으며, 마지막 좌표 (320, 150)가 첫 번째 좌표와 같으므로 삼각형이 닫힌 형태로 그려집니다.
예제 코드
// C 언어에서 fillpoly() 함수 구현 예제
#include <graphics.h>
int main()
{
// gd1은 그래픽 모드(Graphics Mode)로,
// 픽셀 단위로 이미지를 생성하는 디스플레이 모드입니다.
// DETECT는 "graphics.h" 헤더 파일에 정의된 매크로로,
// 시스템에 맞는 그래픽 드라이버를 자동으로 감지합니다.
int gd1 = DETECT, gm1;
// 다각형을 구성할 좌표 배열
int arr1[] = {320, 150, 400, 250, 250, 350, 320, 150};
// initgraph 함수는 디스크에서 그래픽 드라이버를 로드하여
// 그래픽 시스템을 초기화합니다.
initgraph(&gd1, &gm1, "");
// fillpoly 함수 호출: 4개의 점으로 삼각형을 그리고 채웁니다.
fillpoly(4, arr1);
getch();
// closegraph 함수는 그래픽 모드를 종료하고
// 그래픽 시스템이 할당한 모든 메모리를 해제합니다.
closegraph();
return 0;
}실행 결과
위 코드를 실행하면 지정한 세 좌표를 꼭짓점으로 하는 삼각형이 화면에 그려지고, 기본 설정색으로 내부가 채워진 결과를 확인할 수 있습니다.
정리
fillpoly() 함수는 BGI(Borland Graphics Interface) 환경에서 다각형을 손쉽게 그리고 채울 수 있는 유용한 도구입니다. 핵심은 첫 좌표와 마지막 좌표를 동일하게 지정해 도형을 닫아주는 것이며, 이 원칙만 지키면 어떤 다각형이든 간단하게 표현할 수 있습니다.