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