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


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.