는 각 angle
에서 생략 부호의 중심에서 냄새가 나는데 방사형 선이있는 경우
을 (타원 축을 대표하는 두 벡터가 좌표축에 parllel있는 가정 하에서), 그 선은 점
에서 타원을 교차
x = x_half_axis * cos(angle);
y = y_half_axis * sin(angle);
여기에서 x_half_axis
및 y_half_axis
은 절반 축 벡터의 길이 (크기)와 비슷합니다.
그럼, 각도를 약간 작게 선택하십시오. delta
. 해당 단계에서 전체 [0...2*Pi]
범위를 통해 중심점을 스윕하고 0
각도로 시작한 다음 delta
각도로 시작한 다음 2 * delta
각도로 시작합니다. 각 angle
값에 대해 타원 점의 좌표는 위의 수식에 의해 주어집니다. 그렇게하면 타원의 다각형 표현이 생성됩니다.
당신의 delta
는 다음을 확인하십시오 "타원형 다각형"잘 닫을 수 있도록 신중하게 선택해야한다 비교적 큰 (타원에 몇 점) 인 경우 : 2*Pi
이 delta
단계의 정수로 분할한다. 작은 delta
값을 입력해도 문제가되지 않습니다. 최소 - 최대 축 벡터 좌표축에 평행하지 않는 경우
하여 여전히 상기 방법을 사용하고 대응하는 회전 변환을 적용하여 적절한 최종 위치까지 얻어진 점을 변형 할 수있다.
고정 - 델타 각도 스테핑에는 몇 가지 단점이 있습니다. 그것은 타원의 miminum 축 (곡률이 더 작은 곳) 근처에 다각형 점의 더 밀집된 순서를 생성하고, 최대 축 (곡률이 더 큰 곳) 근처의 점들의 더 드문 드문 한 순서를 생성합니다. 이것은 실제로 바람직한 행동의 반대입니다. 더 높은 곡률의 영역에서 높은 점 밀도를 갖는 것이 좋습니다.
이것이 문제인 경우 variadic stepping을 사용하도록 알고리즘을 업데이트 할 수 있습니다. 각도 델타는 최대 축에 가까워짐에 따라 점진적으로 감소하고 최소 축에 접근함에 따라 증가해야합니다. (Xc,Yc)
의 중심 축 벡터 (Xm,Ym)
, (XM,YM)
를 (이 두 직교한다) 상기 수식에서 [0,2Pi]
t
와
X = XM cos(t) + Xm sin(t) + Xc
Y = YM cos(t) + Ym sin(t) + Yc
이라고 가정
출처
2014-10-15 15:20:56
AnT
이것을 테셀레이션이라고합니다. 봐봐. 커브를 테셀레이션하려는 경우 가장 쉬운 방법은 곡선의 파라 메트릭 표현에서 시작하는 것입니다. 이것도보세요. –
이 폴리선에 대한 요구 사항을 정의해야합니다. – MBo
이것을 곡선 평탄화라고합니다. –