2D 닫힌 폴리 라인이 있습니다. 그러나 폴리선을 정의하는 정점은 균등하지 않습니다. 때로는 두 사람이 매우 가까울 때가 있습니다. 때로는 네 사람이 매우 가까워지는 경우도 있습니다.최소한의 변형으로 부드럽게 폴리 라인을 만듭니다.
나는 폴리 라인을 부드럽게하고 싶습니다,하지만 일반 평균 알고리즘이 영역 축소하는 경향이있다 :
for (int i = 0; i < (V.Length-1); i++)
{
PointF prev = V[i-1]; //I have code that wraps the index around.
PointF next = V[i+1];
PointF pt = V[i];
float ave_x = one_third * (prev.X + next.X + pt.X);
float ave_y = one_third * (prev.Y + next.Y + pt.Y);
smooth_polyline[i] = new PointF(ave_x, ave_y);
}
내 폴리 라인이 포인트의 수천을 포함하는 두 개의 인접한 세그먼트 사이의 각도는 일반적으로 1 개보다 작은 정도를 .
이 곡선을 부드럽게하는 더 좋은 방법이 있습니까? 너무 많이 영향을주지 않고 정점을보다 균등하게 배치 할 수있는 방법이 있습니까?
"꼭짓점을보다 균등하게 배치 하시겠습니까?" 스무딩 알고리즘은 신호를 증폭하거나 압축합니다. – LJM
내가 아스키에서 이것을 할 수 있는지 보자. 다음과 같은 폴리 라인이 있다고 상상해 보자. (점들은 모서리이다) : ● ─ ● ─ ● ─ ────── 변경하고 싶다. 이것은 다음과 같이됩니다 : ● ────────────────────── ● "vertex spacing"이란 인접한 어떤 정점들 사이의 거리를 더 비슷하게 만들고 싶습니다. –