APIAny_TriangulatePolyID
폴리곤을 삼각형들로 분해합니다.
GSErrCode ACAPI_Goodies ( APIAny_TriangulatePolyID, API_ElementMemo* memo, API_Coord*** coords );
파라미터
- memo
- [in] 폴리곤의 파라미터들입니다. 폴리곤의 좌표들과 서브 폴리곤 끝점들은 반드시 메모의 coords 핸들과 pends 핸들이어야 합니다.
- coords
- [out] 삼각형들의 좌표들입니다.
리턴 값
NoError
- 함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
- 파라미터들 중 하나 이상이
NULL
입니다. APIERR_REFUSEDPAR
- 폴리곤 내 호가 있습니다.
APIERR_MEMFULL
- 동작을 완료하기에는 메모리가 부족합니다.
APIERR_IRREGULARPOLY
- 입력 폴리곤이 불규칙적입니다.
다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.
설명
이 함수는 폴리곤을 삼각형들로 분해하는 데 사용합니다.
서버 애플리케이션이 coords
핸들을 할당하고 좌표들로 채울 것입니다.
생성된 삼각형들의 개수는 리턴된 핸들 크기를 기반으로 결정되어야 합니다.
이 함수는 호 세그먼트들을 갖고 있지 않은 폴리곤들만 허용합니다.
더 이상 필요하지 않으면 coords
핸들을 폐기하는 것을 잊지 마십시오.
예제
#include "GSBase.h" /* BMhKill */ GSErrCode TriangulateSlab (const API_Guid& slabGuid) { API_Element element; API_ElementMemo memo; API_Coord **coords; Int32 nTriangles; GSErrCode err; BNZeroMemory (&memo, sizeof (API_ElementMemo)); BNZeroMemory (&element, sizeof (API_Element)); element.header.guid = slabGuid; err = ACAPI_Element_Get (&element); if (!err) { if (element.slab.poly.nArcs > 0) return APIERR_REFUSEDPAR; err = ACAPI_Element_GetMemo (element.header.guid, &memo); if (!err) { err = ACAPI_Goodies (APIAny_TriangulatePolyID, &memo, &coords); if (!err) { nTriangles = BMGetHandleSize ((GSHandle) coords) / (3 * sizeof (API_Coord)); /* ... */ BMKillHandle ((GSHandle *) &coords); } ACAPI_DisposeElemMemoHdls (&memo); } } return err; }
요구사항
- 버전: API 4.1 또는 이후
- 헤더: APIdefs_Goodies.h