물체의 기하학적 중심을 찾으십니까?


37

2D 또는 3D 포인트 세트가 제공됩니다.

물체의 기하학적 중심을 찾는 방법은 무엇입니까?

다음 그림에 따르면 기하 중심은 가장 간단한 형태, 즉 균일 한 질량 밀도로 계산되는 경우 질량 중심과 다릅니다. 실제로 문제를 계산할 때 문제가 나타납니다. 일반적으로 한 가지 방법은 X 좌표와 Y 좌표를 개별적으로 평균화하는 것입니다. 즉, 주어진 점 (여기서는 2D)에 대한 평균 위치를 찾는 것입니다. 이것은 객체를 나타내는 점 집합에 대한 중심으로 사용될 수 있습니다. 도시 된 바와 같이, 하단 모서리를 따라 여분의 정점이 있기 때문에 간단한 사각형의 경우 결과 중심은 (0.5,0.4) 이고 정답은 (0.5,0.5) 입니다.
주어진 예제는 너무 간단합니다. 그러나 관심있는 문제는 정점 좌표 만 사용할 수있는 2D의 복잡한 모양과 3D의 객체에 대한 것입니다.
효율적인 계산 방법 인 BTW가 중요합니다.

Wikipedia와 같은 일부 웹 링크를 확인했지만 현재 문제는 2D 및 3D 포인트 그룹이 대표 포인트를 찾고자한다는 것입니다. 따라서 중심이 관심을 갖게되었다. 포인트는 토폴로지 정보없이 제공됩니다. 포인트 클라우드로 간주 할 수 있습니다. 여기에서 데모는 일반적으로 알려진 좌표 평균 계산 (예 : 이 스택 오버 플로우 Q & A 참조 )이 예제에 표시된대로 올바르지 않을 수 있음을 분명히하기 위해 제공되었습니다 .

여기에 이미지 설명을 입력하십시오

다음은 비교를위한 구현입니다.

  • aa = 아래에 허용 된 답변
  • chull = 포인트의 볼록 껍질, 즉 골든 다각형
  • 센트 = 위키 백과에서 제안하고 논의 중심 AA 다각형의 중심으로
  • centl = aa 에서 설명한 폴리 라인의 중심

시각적으로에 centl비해 지정된 형상을 더 잘 나타냅니다 cent. 다른 두 곳은 유망 해 보이지만 일반적으로 포인트의 분산이 불균일 한 경우 일반적으로 너무 편향됩니다.
또한 볼록 껍질은 문제를 상당히 간단하게 만들지 만 공간에 대칭 적 위치를 지정하지 않으면 너무 길고 짧은 가장자리를 생성 할 수 있습니다. 즉, 두 경우 모두에 대해 간단한 평균화 (즉, 가중치 없음)를 수행하면 인식이 필요합니다 : 전체 점 (녹색) 또는 볼록 껍질 다각형 정점 (파란색).

여기에 이미지 설명을 입력하십시오

주어진 점에 대한 최소 면적 직사각형 찾기 에서 하나의 응용 프로그램을 찾을 수 있습니까? .


이것이 효과가 있습니까? 다각형의 중심을 찾으십니까? (StackOverflow)
blah238

3
귀하의 질문이 무엇인지 잘 모르겠습니다. 지오메트리 중심 (일반적으로 중심)은 무게 중심 (질량 중심)과 다를 수 있습니다. 이것은 잘 알려진 사실입니다. 또한 지오메트리의 중심을 계산하는 다양한 방법이 있습니다. en.wikipedia.org/wiki/Triangle_center , en.wikipedia.org/wiki/Encyclopedia_of_Triangle_Centers & faculty.evansville.edu/ck6/encyclopedia/ETC.html을 참조하십시오 .
Devdatta Tengshe

1
업데이트 다시 : 토폴로지가없는 경우 포인트 클라우드는 포인트 클라우드입니다. 다각형 광장의 당신의 그림은 적용되지 않습니다 (및 (0.5,0.4)의 당신의 '중심'은 그런데, 모든 표준 식에 발생하는 나타나지 않습니다 대칭을 위해 강력하게 주장하고 있는 에 맞춰 광장의 중앙 지점 (0.5 , 0.5), 정의 된 방식에 관계없이). 2 차원 이상의 점 구름에 대한 대표 또는 중심 위치를 찾는 방법에 대한 아이디어는 stats.stackexchange.com/questions/1927을 참조하십시오 .
whuber

1
@ Developer, 지금 당신의 요점을 알았습니다. "사각형"(실제로 다각형)의 맨 아래에있는 다섯 번째 점은 정점 좌표의 간단한 평균화로 whuber의 대답에서 설명하는 것처럼 다각형과 다른 barycenter를 생성합니다.
blah238

1
아하! 나는 그런 것을 찾고 있었지만 그 다섯 번째 정점을 완전히 놓쳤다. 미래의 독자들을 돕기 위해, 나는 이것을 지적하기 위해 질문을 약간 편집했습니다. 가장자리를 따라 꼭짓점을 삽입하거나 삭제하면 poly {line, gon}이 표시 되는 방식이 변경 되지만 고유 한 기하학적 속성의 계산은 변경되지 않아야합니다. 그렇기 때문에 정점의 중심은 다각형의 경계 또는 경계와 거의 임의의 관계를 가질 수 있습니다.
whuber

답변:


44

모든 다각형에는 최소한 네 개의 "중심"이 있습니다.

  • 정점의 중심.

  • 가장자리의 중심.

  • 그 중심은 다각형입니다.

  • 라벨링에 유용한 GIS 관련 "센터"(보통 문서화되지 않은 독점적 방법으로 계산).

(특별한 경우 우연히 일치 할 수 있지만 "일반"다각형의 경우 별개의 점입니다.)

"바리 센터"는 일반적으로 "질량 센터"입니다. 3 가지 유형은 질량이있는 것으로 추정되는 위치에 따라 다릅니다. 이는 완전히 정점에 있거나 가장자리에 균일하게 퍼지거나 다각형 자체에 균일하게 퍼집니다.

세 가지 barycenter를 모두 계산하는 간단한 방법이 있습니다. 한 가지 접근법은 두 질량의 분리 된 결합의 무게 중심이 무게 중심의 총 질량 가중 평균 이라는 기본 사실에 의존합니다 . 이를 통해 다음을 쉽게 얻을 수 있습니다.

  1. 두 (동일한 가중치) 정점의 중심은 평균입니다. 이것은 좌표를 개별적으로 평균화하여 얻습니다. 기하학적으로 두 정점을 연결하는 선분의 ​​중간 점입니다.

  2. 유도 적으로, n (동일 가중) 정점 의 중심은 좌표를 개별적으로 평균화하여 얻습니다.

  3. 선분의 중심은 중간 점입니다. (이것은 대칭으로 명확합니다.)

  4. 폴리 라인의 중심은 각 선분의 중간 점을 찾은 다음 세그먼트 길이를 가중치로 사용하여 가중치 평균을 형성합니다.

    예를 들어 점 (0,0), (6,0), (6,12)로 묘사 된 "L"모양을 고려하십시오. 중간 지점이 ((0 + 0) / 2, (0 + 6) / 2) = (3,0) 인 길이 6과 중간 지점이 ((6 + 6) / 2, (0 + 12) / 2) = (6,6). 따라서 길이 가중 평균 좌표는 (x, y)

    x = (6*3 + 12*6) / (6+12) = 5,  y = (6*0 + 12*6) / (6+12) = 4.
    

    이것은 3 개의 꼭짓점의 중심과 같으며, ((0 + 6 + 6) / 3, (0 + 0 + 12) / 3) = (4,4)입니다.

    ( 편집 다른 예로서, 모양의 정사각형이지만 점 (0,0), (1 / 2,0), (1,0)의 순서에 의해 결정된 오각형으로 표현되는 문제의 그림을 고려하십시오 . (1,1), (0,1) .5 개의 변의 길이는 1/2, 1/2, 1, 1, 1 및 중간 점 (1 / 4,0), (3 / 4,0), (1 , 1 / 2), (1 / 2,1) 및 (0,1 / 2) 각각의 가중 평균은

    [(1/2)*(1/4, 0) + (1/2)*(3/4, 0) + (1)*(1, 1/2) + (1)*(1/2, 1) + (1)*(0, 1/2)] / (1/2+1/2+1+1+1)
    = (2/4, 2/4) = (0.5, 0.5)
    

    정점의 무게 중심 (위의 2 번과 같이 계산 됨)이 (0.5, 0.4) 임에도 불구하고 원하는대로.

  5. 다각형의 중심은 삼각 분할을 통해 삼각형으로 분해 할 수 있습니다. 삼각형-사각형 다각형의 중심은 정점의 중심과 일치합니다. 이 barycenters의 면적 가중 평균은 다각형의 barycenter입니다. 삼각형 영역은 정점 좌표 (예를 들어, 두 변의 웨지 곱) 와 관련하여 쉽게 계산됩니다 . 서명 된 (양수 또는 음수) 영역을 활용하는 방법을 포함하여 이러한 영역 계산에 대한 그림은 내 (오래된) 코스 노트 페이지의 "영역"섹션을 참조하십시오 .

    ( 편집 예를 들어 질문에 묘사 된 다각형을 고려하십시오. 왼쪽에 ((0,0), (1 / 2,0), (0,1)) 삼각형으로 ((0,1), 중간에 (1 / 2,0), (1,1)), 오른쪽에 ((1,1), (1,0), (1 / 2,0)) 영역은 1/4 , 1/2, 1/4 및 각각의 정점은 (정점을 평균하여 얻은) (1 / 6,1 / 3), (1 / 2,2 / 3) 및 (5 / 6,1 / 3), 각각의 바리 센터의 면적 가중 평균은

    [(1/4)*(1/6,1/3) + (1/2)*(1/2,2/3) + (1/4)*(5/6,1/3)] / (1/4 + 1/2 + 1/4)
    = (12/24, 6/12)
    = (0.5, 0.5)
    

    아래쪽 가장자리를 따라 다섯 번째 정점이 존재하더라도 그래야합니다.)

이러한 각 방법이 효율적 이라는 것은 분명합니다 . 각 단계에서 일정한 시간을 사용하여 다각형의 "스파게티"표현을 한 번만 통과하면됩니다. 순수한 정점의 첫 번째를 제외한 모든 경우에 꼭 정점 좌표 목록보다 더 많은 정보가 필요합니다. 그림의 토폴로지도 알아야합니다. "L"예에서, 예를 들어 (0,0)이 (6,12)가 아닌 (6,0)에 연결되어 있음을 알아야했습니다.

이것들은 모두 유클리드 개념입니다. 그것들은 여러 가지 방법으로 구 (또는 타원체)로 확장 될 수 있습니다. 간단한 하나는 3 차원 (유클리드) 차원의 단순한 복합물로 피처를보고 적절한 barycenter를 계산 한 다음 타원체 중심에서 바깥쪽으로 다시 투영합니다. 새로운 개념이나 공식이 필요하지 않습니다. 처음 두 좌표 외에 세 번째 (z) 좌표 만 사용하면됩니다. (영역은 여전히 쐐기 제품의 길이를 사용하여 발견됩니다.)

또 다른 일반화 는 피타고라스에 따르면 유클리드 메트릭 (제곱합의 제곱근) 이 p> = 1에 대한 다른 Lp 메트릭 으로 변경 될 수 있음 을 인식합니다. pth 제곱합의 pth 근을 취합니다. 위에서 사용 된 아름다운 첨가물 속성 (barycenters는 그림의 간단한 부분의 barycenters에 대한 가중치 평균)을 더 이상 일반적으로 유지하지 않기 때문에 적절한 "barycenters"를 찾는 것이 더 이상 간단하지 않습니다. 종종, 반복 근사 수치 해를 구해야합니다. 그들은 심지어 독특하지 않을 수도 있습니다.

다양한 목적으로 추가 센터를 정의 할 수 있습니다 . 삼각형에는 다각형으로 일반화 할 수있는 여러 가지 중심이 있습니다 : 원주 중심, (일부) 최대 원형 중심, 최소 면적 경계 타원의 중심 등. 모든 세트는 볼록 껍질 및 획득 된 선체의 중심과 같은 다양한 "헐"로 묶을 수 있습니다.

이러한 "중심"중 많은 부분이 반드시 다각형 내부에 위치 할 필요는 없습니다. ( 볼록 다각형 의 합리적인 중심은 내부에 위치합니다.)

이러한 다양한 접근 방식과 솔루션은 "기하 중심"또는 "중심"과 같은 일반적인 용어에주의해야한다는 것을 나타냅니다.


커뮤니티 : 귀하가 흥미 발견 너무 경우 'whuber'에서이 같은 이러한 좋은 답변은 업 투표 당신에게, 따라서 자신의 취향과 내 친숙으로 만 좋은 질문에 대한 질문에 모두의 마음을 것이라고 예상 할 수있다)
개발자

나는 그것이 어떤 문장에서 유용하다는 것을 알았고, 응답을위한 동기 부여로서 다른 경쟁자들에게 언젠가주고 싶다. 나는 이것을 지금까지 훌륭한 건설 답변으로 표시합니다.
개발자

구의 웨지 제품을 사용하여 왜 영역이 여전히 발견 되는지 설명 할 수 있습니까 ? 구형 삼각형 영역이 더 적합하지 않습니까? 내가 찾은 가장 가까운 참조 (이 훌륭한 답변을 제외하고!)는 jennessent.com/downloads/Graphics_Shapes_Online.pdf- 구형 삼각형 영역을 사용합니다.
Jason Davies

@Jason 나는 흥미 롭습니다 : 구형 삼각형 영역을 사용하여 구형 피처의 중심 을 계산하려면 어떻게 제안 합니까?
whuber

@whuber 구면 다각형은 구면 삼각형으로 분해되고 각 삼각형의 중심은 정점의 데카르트 좌표를 평균하여 계산됩니다. 다각형 barycenter는이 삼각형의 가중 평균입니다. 여기서 가중치는 구형 삼각형 영역이며 대답에서 제안한 평면 영역이 아닙니다 (쐐기 제품을 올바르게 이해한다고 가정).
Jason Davies
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.