การค้นหาจุดศูนย์กลางของเรขาคณิตของวัตถุ?


37

รับชุดของคะแนน 2D หรือ 3D:

จะหาจุดศูนย์กลางของเรขาคณิตของวัตถุได้อย่างไร?

จากรูปต่อไปนี้จุดศูนย์กลางของรูปทรงเรขาคณิตนั้นแตกต่างจากจุดศูนย์กลางมวลถ้าคำนวณในรูปแบบที่ง่ายที่สุดนั่นคือความหนาแน่นของมวลเนื้อเดียวกัน ปัญหาปรากฏขึ้นจริงในการคำนวณของเหล่านั้น โดยทั่วไปวิธีหนึ่งคือค่าพิกัดXเฉลี่ยและค่าพิกัดYแยกกันคือหาตำแหน่งเฉลี่ยไปยังจุดที่กำหนด (ที่นี่ในรูปแบบ 2 มิติ) สิ่งนี้อาจใช้เป็นเซนทรอยด์สำหรับชุดของจุดที่แสดงวัตถุ ตามที่ปรากฏเนื่องจากการจุดสุดยอดพิเศษตามขอบด้านล่างเป็นรูปสี่เหลี่ยมผืนผ้าง่ายๆเซนทรอยด์ส่งผลให้เป็น(0.5,0.4)ในขณะที่คำตอบที่ถูกต้องคือ(0.5,0.5)
โปรดทราบว่าตัวอย่างที่ให้มานั้นง่ายเกินไป อย่างไรก็ตามปัญหาที่น่าสนใจสำหรับรูปร่างที่ซับซ้อนในแบบ 2 มิติและวัตถุในแบบ 3 มิติซึ่งมีเพียงจุดยอดของจุดยอด
BTW เป็นวิธีการคำนวณที่มีประสิทธิภาพเป็นที่สนใจ

เพียงแค่พูดถึงว่าฉันได้ตรวจสอบการเชื่อมโยงเว็บบางอย่างเช่น Wikipedia แต่ปัญหาปัจจุบันของฉันคือว่ามีกลุ่มของจุด 2D และ 3D ต้องการที่จะหาจุดที่เป็นตัวแทนสำหรับผู้ที่ ดังนั้นเซนทรอยด์จึงกลายเป็นที่สนใจ คะแนนจะได้รับโดยไม่มีข้อมูลทอพอโลยี คุณอาจถือว่าพวกเขาเป็น cloud point การสาธิตที่นี่จัดทำขึ้นเพื่อให้ชัดเจนว่าค่าเฉลี่ยของพิกัดที่รู้จักกันทั่วไป (ดูตัวอย่างคำถามและคำตอบ Stack Overflow ) อาจไม่ถูกต้องตามที่แสดงในตัวอย่าง

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือการใช้งานบางอย่างสำหรับการเปรียบเทียบ:

  • aa = คำตอบที่ยอมรับด้านล่าง
  • chull = ตัวเรือนูนของจุดคือรูปหลายเหลี่ยมสีทอง
  • cent = centroid เสนอใน Wikipedia และพูดคุยกันในaaในฐานะ polygon centroid
  • centl = centroid ของ polyline ดังอธิบายในaa

สายตามีลักษณะเป็นตัวแทนที่ดีกว่าสำหรับรูปทรงเรขาคณิตที่ได้รับเมื่อเทียบกับcentl centอีกสองคนดูมีแนวโน้มที่นี่ แต่โดยปกติแล้วพวกเขาจะลำเอียงมากเกินไปถ้าการกระจายตัวของคะแนนไม่เหมือนกันเพราะเป็นกรณีปกติ
และพิจารณาด้วยว่าถึงแม้ว่าตัวเรือนูนจะทำให้เกิดปัญหาได้ง่ายขึ้น แต่มันอาจสร้างขอบที่ยาวและสั้นเกินไปโดยไม่มีการวางตำแหน่งแบบสมมาตรในพื้นที่นั่นคือการรับรู้เป็นสิ่งจำเป็นถ้าคุณทำการหาค่าเฉลี่ยง่าย ๆ (เช่นไม่มีน้ำหนัก) : จุดทั้งหมด (สีเขียว) หรือจุดยอดรูปหลายเหลี่ยมนูน (สีน้ำเงิน)

ป้อนคำอธิบายรูปภาพที่นี่

สามารถพบแอปพลิเคชันหนึ่งตัวในการหาพื้นที่สี่เหลี่ยมจัตุรัสขั้นต่ำสำหรับจุดที่กำหนดหรือไม่ .



3
ฉันไม่แน่ใจว่าคำถามของคุณคืออะไร ศูนย์กลางของเรขาคณิตหรือ (โดยปกติเซนทรอยด์) อาจแตกต่างจาก barycenter (ศูนย์กลางของมวล) นี่คือข้อเท็จจริงที่รู้จักกันดี นอกจากนี้ยังมีวิธีต่างๆในการคำนวณจุดศูนย์กลางของรูปทรงเรขาคณิต โปรดดู: en.wikipedia.org/wiki/Triangle_center , en.wikipedia.org/wiki/Encyclopedia_of_Triangle_Centers & คณะ . evansville.edu/ck6/encyclopedia/ETC.html
Devdatta Tengshe

1
การอัปเดตอีกครั้ง: เมื่อไม่มีโทโพโลยีเมฆจุดเป็นเพียงจุดเมฆ รูปของคุณของตารางเหลี่ยมไม่ได้ใช้ (และ 'เซน' ของคุณ (0.5,0.4) ไม่ปรากฏว่าเกิดขึ้นจากสูตรมาตรฐานใด ๆ โดยวิธีการ: สมมาตรระบุอย่างยิ่งสำหรับการใด ๆ ที่จุดกลางของตารางให้ตรงกับ (0.5 0.5) ไม่ว่ามันจะถูกกำหนดอย่างไร) สำหรับความคิดบางอย่างเกี่ยวกับการหาตัวแทนของกลางหรือสถานที่สำหรับเมฆจุดในสองมิติและอื่น ๆ โปรดดูstats.stackexchange.com/questions/1927
whuber

1
@ ผู้พัฒนาฉันเห็นจุดของคุณตอนนี้จุดที่ 5 ของคุณที่ด้านล่างของ "สี่เหลี่ยม" (อันที่จริงเป็นรูปหลายเหลี่ยม) ทำให้การหาค่าเฉลี่ยของจุดยอดง่าย ๆ ทำให้ barycenter แตกต่างจากที่เป็นรูปหลายเหลี่ยม
blah238

1
Aha! ฉันพลาดจุดสุดยอดที่ห้าอย่างสมบูรณ์แม้ว่าฉันจะมองหาบางอย่างเช่นนั้น เพื่อช่วยผู้อ่านในอนาคตฉันได้ทำการแก้ไขเล็กน้อยในคำถามเพื่อชี้ให้เห็น นี้จริงๆไม่ได้รับหัวใจของเรื่องเกินไป: การแทรกหรือลบจุดตามขอบจะเปลี่ยนวิธีโพลี {บรรทัด gon} เป็นตัวแทนแต่ก็ไม่ควรเปลี่ยนการคำนวณของคุณสมบัติเรขาคณิตโดยธรรมชาติ นั่นคือเหตุผลที่ barycenter ของจุดยอดสามารถมีความสัมพันธ์โดยพลการกับ barycenters ของรูปหลายเหลี่ยมหรือขอบเขต
whuber

คำตอบ:


44

รูปหลายเหลี่ยมทุกรูปมี "ศูนย์" อย่างน้อยสี่รูปแบบ:

  • ศูนย์กลางของจุดยอด

  • ศูนย์กลางของขอบของมัน

  • barycenter มันเป็นรูปหลายเหลี่ยม

  • "ศูนย์กลาง" เฉพาะ GIS มีประโยชน์สำหรับการติดฉลาก (โดยปกติจะคำนวณด้วยวิธีการกรรมสิทธิ์ที่ไม่มีเอกสาร)

(พวกเขาอาจบังเอิญตรงในกรณีพิเศษ แต่สำหรับรูปหลายเหลี่ยม "ทั่วไป" พวกเขาเป็นจุดที่แตกต่างกัน)

"barycenter" โดยทั่วไปคือ "ศูนย์กลางของมวล" สามประเภทแตกต่างกันไปตามที่สันนิษฐานไว้ว่ามวลอยู่: มันอยู่บนจุดยอด, กระจายอย่างสม่ำเสมอบนขอบหรือกระจายอย่างสม่ำเสมอทั่วรูปหลายเหลี่ยมของตัวเอง

มีวิธีการง่าย ๆ ในการคำนวณ barycenters ทั้งสาม วิธีการหนึ่งขึ้นอยู่กับข้อเท็จจริงพื้นฐานที่ว่าbarycenter ของสหภาพที่แยกจากกันของมวลชนสองคนนั้นคือค่าเฉลี่ยน้ำหนักมวลรวมของผู้ถือบารีเซ็นต์ จากนี้เราได้รับดังต่อไปนี้:

  1. ศูนย์กลางของจุดยอดสองจุด (น้ำหนักเท่ากัน) คือค่าเฉลี่ย สิ่งนี้ได้มาจากการหาค่าพิกัดโดยเฉลี่ยแยกต่างหาก มันเป็นจุดกึ่งกลางของส่วนของเส้นตรงที่รวมสองจุดยอด

  2. เหนี่ยวนำbarycenter ของจุดยอดn (ถ่วงน้ำหนักเท่ากัน)นั้นได้มาจากการหาค่าเฉลี่ยพิกัดของพวกมันแยกกัน

  3. barycenter ของส่วนของเส้นตรงคือจุดกึ่งกลาง (นี่คือความชัดเจนโดยสมมาตร.)

  4. barycenter ของ polylineนั้นได้มาจากการหาจุดกึ่งกลางของแต่ละส่วนของเส้นแล้วสร้างค่าเฉลี่ยถ่วงน้ำหนักโดยใช้ความยาวของส่วนเป็นน้ำหนัก

    ตัวอย่างเช่นลองพิจารณารูปร่าง "L" ที่ระบุโดยจุด (0,0), (6,0), (6,12) มีสองส่วน: หนึ่งในความยาว 6 พร้อมจุดกึ่งกลางที่ ((0 + 0) / 2, (0 + 6) / 2) = (3,0) และอีกความยาว 12 ที่มีจุดกึ่งกลางที่ ((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.
    

    สิ่งนี้แตกต่างจาก barycenter ของสามจุดยอดซึ่งคือ (0 + 6 + 6) / 3, (0 + 0 + 12) / 3) = (4,4)

    ( แก้ไขเป็นอีกตัวอย่างหนึ่งให้พิจารณาตัวเลขในคำถามซึ่งถึงแม้ว่าจะเป็นรูปสี่เหลี่ยมจัตุรัส แต่จะแสดงเป็นรูปห้าเหลี่ยมที่กำหนดโดยลำดับของคะแนน (0,0), (1 / 2,0), (1,0), (1,1), (0,1). ห้าด้านมีความยาว 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)
    

    อย่างที่ใคร ๆ ก็คาดหวังแม้ว่า barycenter ของจุดยอดเพียงอย่างเดียว (คำนวณใน # 2 ด้านบน) คือ (0.5, 0.4)

  5. barycenter ของรูปหลายเหลี่ยมสามารถหาได้โดยการหารูปสามเหลี่ยมเพื่อแยกย่อยมันออกเป็นรูปสามเหลี่ยม barycenter ของสามเหลี่ยม -qua-polygon เกิดขึ้นพร้อมกับ barycenter ของจุดยอด ค่าเฉลี่ยถ่วงน้ำหนักพื้นที่ของ 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 ตามลำดับและ barycenters ของพวกเขา - ได้มาโดยเฉลี่ยจุดยอดของพวกเขา - (1 / 6,1 / 3), (1 / 2,2 / 3) และ (5 / 6,1 / 3) ตามลำดับค่าเฉลี่ยถ่วงน้ำหนักพื้นที่ของ barycenters เหล่านี้เท่ากับ

    [(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,0) และไม่ใช่ (6,12) ตัวอย่างเช่น

นี่คือแนวคิดทั้งหมดของยุคลิด พวกมันสามารถขยายไปถึงทรงกลม (หรือทรงรี) ได้หลายวิธี หนึ่งตรงไปตรงมาดูคุณสมบัติเป็นซับซ้อนซับซ้อนในสามมิติ (Euclidean) คำนวณ barycenter ที่เหมาะสมจากนั้นฉายมันออกมาจากจุดศูนย์กลางของทรงรีกลับไปที่พื้นผิว สิ่งนี้ไม่ต้องการแนวคิดหรือสูตรใหม่ คุณต้องทำงานกับพิกัดที่สาม (z) เท่านั้นนอกเหนือจากพิกัดสองค่าแรก (พื้นที่ยังคงพบโดยใช้ความยาวของผลิตภัณฑ์ลิ่ม)

การวางนัยทั่วไปอื่นยอมรับว่าการวัดแบบยุคลิด - สแควร์รูทของผลรวมของกำลังสองตาม Pythagoras - สามารถเปลี่ยนเป็นตัวชี้วัด Lpอื่น ๆสำหรับ p> = 1: คุณใช้ราก pth ของผลรวมของพลัง pth การค้นหา "barycenters" ที่เหมาะสมนั้นไม่ใช่เรื่องง่ายอีกต่อไปเพราะคุณสมบัติของสารเติมแต่งที่สวยงามที่ถูกใช้ประโยชน์เหนือ (barycenters เป็นค่าเฉลี่ยถ่วงน้ำหนักของ barycenters ของส่วนที่ง่ายกว่าของรูป) ไม่ได้อยู่ในทั่วไป บ่อยครั้งที่ต้องแก้ปัญหาเชิงตัวเลขซ้ำ ๆ โดยประมาณ พวกเขาอาจไม่ได้เป็นเอกลักษณ์

สามารถกำหนดศูนย์เพิ่มเติมสำหรับวัตถุประสงค์ต่าง ๆ สามเหลี่ยมมีศูนย์กลางที่แตกต่างกันมากมายซึ่งสามารถทำให้เป็นรูปหลายเหลี่ยม (ค่อนข้าง) กับรูปหลายเหลี่ยม: ศูนย์กลางของวงกลมรอบกลาง, ศูนย์กลางของ (บางส่วน) สูงสุดในวงกลม, ศูนย์กลางของวงรีขอบเขตต่ำสุดของพื้นที่และอื่น ๆ ชุดใด ๆ สามารถล้อมรอบใน "ฮัลล์" ต่างๆเช่นฮัลล์นูนและศูนย์กลางของฮัลล์เหล่านั้นที่ได้รับ

โปรดทราบว่า "ศูนย์" เหล่านี้จำนวนมากไม่จำเป็นต้องอยู่ภายในด้านในของรูปหลายเหลี่ยม (จุดศูนย์กลางใด ๆ ที่เหมาะสมของรูปหลายเหลี่ยมนูนจะอยู่ภายในการตกแต่งภายใน)

วิธีการและวิธีการแก้ปัญหาที่หลากหลายนี้บ่งชี้ว่าเราควรระวังคำศัพท์ทั่วไปเช่น "ศูนย์กลางของเรขาคณิต" หรือเพียงแค่ "ศูนย์กลาง": มันอาจจะเกี่ยวกับอะไรก็ได้


สำหรับชุมชน: คำตอบที่ดีเช่นนี้จาก 'whuber' สามารถคาดหวังได้สำหรับคำถามที่ดีเท่านั้นเนื่องจากความคุ้นเคยของฉันกับการตั้งค่าของเขาดังนั้นคุณอยากให้ทุกคนลงคะแนนคำถามด้วยหรือไม่ถ้าคุณพบว่ามันน่าสนใจ;)
นักพัฒนา

ฉันพบว่ามันมีประโยชน์ในบางส่วนต้องการที่จะให้บางครั้งกับ contirbuters อื่น ๆ เป็นแรงจูงใจในการตอบ ฉันทำเครื่องหมายสิ่งนี้อย่างไรก็ตามคำตอบที่สร้างสรรค์ที่ยอมรับได้
นักพัฒนา

คุณช่วยอธิบายได้หรือไม่ว่าทำไมพื้นที่ถึงยังใช้ผลิตภัณฑ์ลิ่มบนทรงกลม? พื้นที่สามเหลี่ยมทรงกลมจะไม่เหมาะสมกว่าหรือไม่ การอ้างอิงที่ใกล้เคียงที่สุด (นอกเหนือจากคำตอบที่ยอดเยี่ยมนี้!) ที่ฉันพบคือ: jennessent.com/downloads/Graphics_Shapes_Online.pdf - ซึ่งใช้พื้นที่ของรูปสามเหลี่ยมทรงกลม
Jason Davies

@ Jason ฉันทึ่ง: คุณจะเสนอวิธีการใช้พื้นที่สามเหลี่ยมทรงกลมเพื่อคำนวณbarycentersของคุณสมบัติทรงกลมได้อย่างไร
whuber

@whuber รูปหลายเหลี่ยมทรงกลมถูกแบ่งออกเป็นรูปสามเหลี่ยมทรงกลมและ barycenter ของแต่ละสามเหลี่ยมคำนวณโดยหาค่าเฉลี่ยพิกัดคาร์ทีเซียนของจุดยอด ฉันเสนอว่ารูปเหลี่ยม barycenter เป็นค่าเฉลี่ยถ่วงน้ำหนักของสามเหลี่ยมเหล่านี้โดยที่น้ำหนักคือพื้นที่สามเหลี่ยมทรงกลมไม่ใช่พื้นที่ภาพถ่ายตามที่คุณแนะนำในคำตอบของคุณ (สมมติว่าฉันเข้าใจผลิตภัณฑ์ลิ่มอย่างถูกต้อง)
Jason Davies
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.