본문으로 건너뛰기

FitCircle

public CircleFitItem FitCircle(List<Vertex3D> vertices)

지정한 정점 목록에 가장 잘 맞는 원 반환 (Circle Fitting).
정점의 최적 평면(PCA)에 투영한 후 대수적 원 맞춤(Kasa)으로 중심과 반경을 구함.

Parameters​

NameTypeDescription
verticesList<Vertex3D>원 위의 정점 목록 (3개 이상)

Returns​

TypeDescription
CircleFitItem원 맞춤 결과. 실패 시 IsValid = false. MaxDeviation 으로 원 형상 여부 판단 가능

Examples​

private void Example()
{
List<VIZCore3D.NET.Data.Vertex3D> points = new List<VIZCore3D.NET.Data.Vertex3D>();
points.Add(new VIZCore3D.NET.Data.Vertex3D(10, 0, 0));
points.Add(new VIZCore3D.NET.Data.Vertex3D(0, 10, 0));
points.Add(new VIZCore3D.NET.Data.Vertex3D(-10, 0, 0));
points.Add(new VIZCore3D.NET.Data.Vertex3D(0, -10, 0));

VIZCore3D.NET.Data.CircleFitItem circle = vizcore3d.GeometryUtility.FitCircle(points);
if (circle.IsValid == false) return;

// 반경 대비 편차 3% 이내이면 원으로 판단
bool isCircle = circle.MaxDeviation < circle.Radius * 0.03f;
}