2009-07-28 2 views
1

비슷한 두 선이 얼마나 유사한 지 비교할 수있는 알고리즘 (C# 구현이 바람직 함)이 있습니까? 제 경우에는 하나의 참 조선이 있습니다. 많은 보조 선 중에서 참조 선과 가장 가까운 두 번째 선을 선택할 필요가 있습니다.유사한 두 개의 2D 선형 선이있는 방법을 비교하는 척도

편집 : 시작 및 중지 지점이있는 2D 라인입니다. 당신이 유사점을 비교할 때, 완전한 라인을 고려해야합니다. 선의 방향 (즉, 왼쪽에서 오른쪽으로 또는 그 반대로)은 중요하지 않습니다. 그리고 예, 그것이 얼마나 가까운 지와 관계가 있습니다.

나는 이것이 일종의 주관적 (유사성이나 질문이 아닙니다)이지만, 여전히 작업을 수행 한 사람들이 있다고 확신합니다. 이.

+0

몇 개의 크기가 있습니까? – Nosredna

+0

컨텍스트를 조금 더 제공 할 수 있습니까? 선은 시작점과 끝점을 갖고 있습니까? 또는 점을 통과하는 방향 벡터입니까? 선이 참조 선에 가깝거나 길이/방향이 동일한 것이 더 중요합니까? 이 테스트는 무엇을 위해 사용됩니까? –

+1

"비슷한"의미를 결정하는 사람이되어야 할 것 같습니다. 서로가 얼마나 가까이에 있는지와 관련이 있습니까? 아니면 방향의 문제일까요? – Nosredna

답변

0

그래픽적인 의미의 선에 대해 이야기하는 경우 선 길이와 각도 등의 조합을 살펴볼 것입니다.

상황에 따라 길이의 제곱 (제곱근 저장)과 dy/dx (각도)의 최적화 (trig 함수를 저장하지만 divide-by- 제로의 경우).

+0

경사면은 2 차원에서 작동합니다. 더 많은 차원에서 그는 라인에서 추출한 단위 벡터의 내적을 만들고 싶습니다. 대답이있는 질문을 얻을 때까지 대답을 보류하고 있습니다. ;-) – Nosredna

+0

사실 ... 결국 편집 거리에 대해 이야기 할 수 있습니다. – geofftnz

3

명백한 메트릭에는 기울기, 길이 및 중간 점 사이의 거리가 포함됩니다. 당신은 그것들을 계산할 수 있고 당신이 좋아하는 가중치를 발견 할 수 있습니다.

한 가지로 모두 감싸고 싶다면 끝점 사이의 거리를 합산 해보십시오.

당신은 몇 가지 시도를해야하고 어떤 경우가 당신을 짜증나게하는지 알아 내고 이유를 알아 내야합니다.

0

회선 (및 일반적으로 초평면)은 객체 호출 Grassmanian에 있습니다. 예 : 비행기의 선은 2 차원 투영 공간과 같은 모양 인 Gr (1,3)에 있고, 가장 단순한 것은 Gr (2,4)입니다. 표준 메트릭 (plucker 임베딩에서 발생 - 위 링크 참조)과 함께 제공되는 컴팩트 메트릭 공간입니다. 그러나이 측정 기준은 계산하기에 비용이 많이 들지 않으므로 근사를 고려해야합니다 (2 차원에서 각도 대신 점으로 된 제품을 사용하는 것과 마찬가지로 작은 각도에서도 작동합니다)

자세한 내용 explantion (연결된 위키피디아 문서에 정의 된 기준) :

각 줄마다 두 개의 점 (x1, y1, z1)과 (x2, y2, z2)를 가져옵니다. A를 열이 (1, x1, y1, z1)^t 및 (1, x2, y2, z2)^t 인 4x2 행렬로합니다. P를 4 x 4 행렬로 정의하십시오. A (A^tA)^(- 1) A^t. 그러면 P는 l에만 의존하고 두 점의 선택에 의존하지 않습니다.

원하는 측정 항목은 두 줄에 해당하는 행간 차이의 상위 고유 값의 절대 값입니다.

+0

링크를 가져 주셔서 감사합니다.하지만 그리스어로되어 있습니다. 내가 사용할 수있는 의사 코드? – Graviton

관련 문제