2011-03-02 4 views
2

이것은 힘든 것입니다. 임의의 수의 점을 기반으로 모양을 식별 할 코드를 작성하려고합니다.임의의 포인트 수를 기준으로 모양을 확인하십시오.

기본적으로 터치 인터페이스를 통해 사용자는 모양을 "그립니다"(그리고 이것은 특정 터치 포인트 수를 통해 추적됩니다) 나는 두 번째 표면에 여러 점이 남았습니다.

이러한 점을 토대로, 윤곽이 그려진 모양이 삼각형, 사각형 또는 원인지를 대략적으로 설명해야합니다. 이 작업을 수행하는 가장 쉬운 방법은 무엇입니까? 어떤 아이디어?

+1

Mechanical Turk의 또 다른 멋진 작업 : D –

+1

@svth : 코드 공유를위한 질문자를위한 +1 –

답변

2

좋은 첫 번째 단계는 사용자가 직선을 그리려는 지점을 찾기 위해 포인트 수를 줄이는 것입니다. Ramer–Douglas–Peucker 알고리즘이 이에 적합합니다.

+0

포인터를 가져 주셔서 감사합니다. Douglas-Peucker를 사용하여 모든 작업을 합리적으로 잘 수행했습니다. – svth

+0

Btw, 누군가이 스레드를 가로막고 Douglas-Peucker의 Objective C 구현을 원한다면 여기에 있습니다 : http://sveinbjorn.org/files/software/dp-objc.zip – svth

1

최소 제곱을 가진 점에 가장 잘 맞는 곡선, 삼각형 및 사각형을 찾아보십시오. 가장 작은 차이/표준 편차를 가진 모양이 가능성있는 용의자입니다. 가장 잘 맞는 모양을 찾는 것은 약간 까다 롭습니다.

원을 중심점과 반경으로 특성화합니다. 분산을 최소화하는 점과 반경을 찾으십시오. 이 경우의 분산은 주어진 점과 반경에 대해 계산하기 쉽습니다. 빠른 Google 검색은 필요한 수학과 함께 Finding a Circle that Best Fits a Set of Points이라는 제목의 논문을 찾습니다.

사각형의 중심점, 변 길이, 회전 각도 (0 ~ 90도)가 있습니다. 거리를 최소화해야하는 가장 가까운면을 찾기 위해 사분면을 결정하거나 네면까지의 거리를 계산하고 최소로 유지해야하기 때문에 분산을 계산하는 것이 약간 까다 롭습니다. 똑같은 원리이지만 두 개가 아닌 세 개의 변수가 있습니다.

삼각형을 사용하면 모서리로 3 점을 선택하고 측면까지의 거리의 제곱을 최소화 할 수 있습니다. 사각형과 마찬가지로 각 점이 실제로 가장 가까운면을 파악해야합니다.

사용자가 그리기 기술을 잘 추측 할 수 있다면 각 모양에 맞는 적절한 맞추기가 무엇인지 그리고 가장 적합한 것이 맞는지 확인할 수 있습니다. 원 - 중심은 모든 점의 평균이고 반경은 중심으로부터의 평균 거리입니다. 삼각형 - 중심을 모든 점의 평균으로 가져오고, 중심에서 가장 먼 점은 하나의 꼭짓점이며, 그 꼭지점에서 가장 먼 점은 또 다른 꼭지점이며 두 점 사이의 선에서 가장 먼 점은 세 번째 꼭지점입니다. 정사각형 - 삼각형과 비슷하지만 세 번째 꼭지점에서 가장 먼 점 하나를 더 추가하여 일반적인 사변형을 얻습니다. 그 접근이 얼마나 관대한지 잘 모르겠지만 목적에 충분할 수 있을까요? 어느 쪽이든, 그것은 최소 제곱 문제를 풀기위한 수치 적 방법에 대한 좋은 초기 추측을 만들 것입니다.

관련 문제