การคำนวณรูปหลายเหลี่ยม centroid ทรงกลม


11

ฉันต้องการวิธีทั่วไปในการคำนวณเซนทรอยด์สำหรับรูปหลายเหลี่ยมบนทรงกลม

จนถึงตอนนี้การอ้างอิงออนไลน์ที่ดีที่สุดดูเหมือนจะเป็น:

เครื่องมือสำหรับกราฟิกและรูปร่างโดย Jeff Jenness

วิธีดังกล่าวอธิบายว่ามีการย่อยสลายรูปหลายเหลี่ยมเป็นรูปสามเหลี่ยมหลายทรงกลมและคำนวณค่าเฉลี่ยของรูปสามเหลี่ยมทรงกลม centroids ถ่วงน้ำหนักด้วยพื้นที่สามเหลี่ยมทรงกลม

ฉันรู้ว่ามีหลายวิธีในการกำหนดรูปหลายเหลี่ยม centroid ทรงกลม แต่ฉันกำลังมองหาสิ่งที่คล้ายกับคำจำกัดความต่อไปนี้สำหรับจุดและ polylines:

  • คะแนน : ค่าเฉลี่ยเลขคณิตของเวกเตอร์คาร์ทีเซียนที่เป็นตัวแทนของคะแนน
  • Polylines : ค่าเฉลี่ยถ่วงน้ำหนักของเวกเตอร์คาร์ทีเซียนซึ่งเป็นจุดกึ่งกลางของแต่ละส่วนของเส้นโดยถ่วงน้ำหนักด้วยความยาว (ทรงกลม) ของแต่ละส่วน

ดูเหมือนว่ามีความต่อเนื่องที่สมเหตุสมผลในการกำหนดรูปหลายเหลี่ยม centroids เป็นค่าเฉลี่ยถ่วงน้ำหนักของการสลายตัวแบบสามเหลี่ยมซึ่งแบ่งตามพื้นที่

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

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

คำตอบ:


9

มันจะไม่ทำงานอย่างสม่ำเสมอแม้ว่าคุณจะทำการวิเคราะห์สามเหลี่ยมทั้งหมดที่สัมพันธ์กับจุดคงที่เดียว ปัญหาคือการคำนวณแบบกลมและแบบยูคลิดผสมกันโดยไม่คำนึงถึงความหมาย

วิธีหนึ่งที่จะทำให้เรื่องนี้ชัดเจนคือการพิจารณาสามเหลี่ยมค่อนข้างสุดขั้วเช่นเกือบครึ่งหนึ่งของซีกโลก ตัวอย่างเช่นเริ่มต้นที่ (lon, lat) = (-179, 0), วิ่งตามเส้นศูนย์สูตรไปที่ (0, 0), จากนั้นขึ้นไปที่ขั้วเหนือที่ (0, 90) จากนั้นกลับไปที่จุดเริ่มต้นที่ (- 179, 0) นี่คือรูปสามเหลี่ยม 90-179-90 ซึ่งประกอบด้วยครึ่งหนึ่งของซีกโลกตะวันตกส่วนใหญ่ ปัญหาคือจุดปลายของมัน (แสดงเป็นจุดสีขาวในรูป) อยู่ในระนาบ: หนึ่งอยู่ที่ขั้วและอีกสองอันเกือบจะอยู่ฝั่งตรงข้ามของมัน ดังนั้นค่าเฉลี่ยของพวกเขาฉายกลับไปที่ทรงกลม (จุดสีแดง) เกือบจะอยู่ที่เสา - แต่มันก็อยู่ห่างจากจุดศูนย์กลางที่สมเหตุสมผลพอ ๆ กับที่จะได้รับ:

สามเหลี่ยมทรงกลมขนาดใหญ่

เป็นอีกตัวอย่างหนึ่งมาลองหารูปหลายเหลี่ยมที่เป็นตัวแทนของซีกโลกตอนบนที่เกี่ยวข้องกับศูนย์กลางของมันนั่นคือขั้วโลกเหนือ เราจะแบ่งซีกโลกตะวันตกออกเป็นสองส่วนเท่า ๆ กันเสมอแต่ละอันจะมีรูปสามเหลี่ยม 90-90-90 (ดังนั้นการหลีกเลี่ยงปัญหาใด ๆ อย่างไรก็ตามซีกโลกตะวันออกจะแบ่งออกเป็นกึ่ง lunes เท่ากับn จุดยอดของ Lune k ( k = 1, 2, ... , n ) มี (lon, ลาดพร้าว) พิกัด

((k-1) * 180/n, 0),  (k * 180/n, 0),  (k * 180/n, 90).

Lunes สำหรับ k = 8

รูปนี้แสดงการตั้งค่าสำหรับ k = 8 จุดสีแดงเป็นรูปสามเหลี่ยม "กึ่งกลาง" ที่คำนวณได้ตามเอกสาร "เครื่องมือสำหรับกราฟิกและรูปร่าง", หน้า 65-67

เมื่อทำการคำนวณฉันพบว่าด้วยk = 2 ศูนย์กลางถ่วงน้ำหนักของพื้นที่นั้นอยู่ที่ขั้วโลกเหนือ (ตามที่ระบุโดยการพิจารณาสมมาตร) แต่เมื่อเพิ่มขึ้นnผลจะเปลี่ยนไปอย่างรวดเร็วในซีกโลกตะวันตกและใน ขีด จำกัด เข้าใกล้ละติจูดของ 89.556 องศาพร้อมลองจิจูด -90 องศา นี่คือประมาณ 50 กิโลเมตรทางใต้ของขั้วโลกเหนือนั่นเอง

ข้อผิดพลาด +/- 50 กิโลเมตรสำหรับรูปหลายเหลี่ยมที่ทอดยาว 20,000 กิโลเมตรนั้นมีขนาดเล็ก จำนวนรวมของการเปลี่ยนแปลงโดยพลการเนื่องจากสมการที่แตกต่างกันในกรณีนี้มีเพียง 0.5% เห็นได้ชัดว่าข้อผิดพลาดสัมพัทธ์สามารถทำให้ใหญ่โดยพลการโดยรวมสามเหลี่ยมเชิงลบ (เพียงเพิ่มและลบสามเหลี่ยมขนาดใหญ่จริง ๆ บางตัวที่สัมพันธ์กับสามเหลี่ยมเล็ก ๆ ) ไม่ว่าใครก็ตามที่พยายามใช้การคำนวณทรงกลมอย่างเห็นได้ชัดคือพยายามหลีกเลี่ยงข้อผิดพลาดในการฉายภาพดังนั้นพวกเขาจึงมองหาความแม่นยำสูง ไม่สามารถใช้วิธีการวิเคราะห์ตำแหน่งนี้ได้


คุณได้แสดงให้เห็นว่าข้อผิดพลาดสามารถสะสมสำหรับ n ขนาดใหญ่ แต่ก็ไม่ชัดเจนว่าวิธีการที่จำเป็นต้องมีข้อบกพร่อง คุณใช้ค่าใดของ n เพื่อให้ได้ค่า จำกัด
Jason Davies

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

เจสันฉันได้เพิ่มตัวอย่างเบื้องต้นเพื่อให้สัญชาตญาณคุณ ขีด จำกัด ของตัวเองจะเข้าหาอย่างรวดเร็ว; โหลสองสามโหลจะได้รับตัวเลขที่สำคัญหลายประการ แต่ตัวอย่างใหม่ควรหยุดพักการสงสัยใด ๆ ที่การถ่วงน้ำหนักแบบสามเหลี่ยมนี้ทำอะไรที่สมเหตุสมผล - ยกเว้นสามเหลี่ยมเล็ก ๆ ซึ่งคุณจะทำได้ดีกว่าการคำนวณในพิกัดที่ฉายในตอนแรก เหตุผลเดียวสำหรับการคำนวณทรงกลมคือเมื่อพื้นที่การวิเคราะห์ของคุณเป็นสากลอย่างแท้จริงจากนั้นการคาดการณ์ทั้งหมดจะทำให้เกิดการบิดเบือนมาก
whuber

1
เยี่ยมมากขอบคุณ ดังนั้นหากฉันเข้าใจอย่างถูกต้องการหาเวกเตอร์คาร์ทีเซียนเพียงอย่างเดียวไม่ได้ส่งผลให้เซนทรอยด์ที่เหมาะสมสำหรับรูปสามเหลี่ยมทรงกลม ฉันจะตรวจสอบวิธีการที่ดีกว่าเช่นการหาจุดตัดของมัธยฐานวงวงกลม
Jason Davies

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

3

เป็นความคิดที่ดีที่จะแจกแจงคุณสมบัติที่เซนทรอยด์ของรูปหลายเหลี่ยมควรมี นี่คือเกณฑ์ของฉัน:

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

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

(c) ควรลดความหมายภาพถ่ายของ centroid สำหรับรูปหลายเหลี่ยมขนาดเล็ก

นี่คือสองวิธีที่ตรงตามเกณฑ์เหล่านี้:

(1) คำนวณเซนทรอยด์สำหรับรูปหลายเหลี่ยมรูปวงรีในสามมิติและฉายกลับไปที่พื้นผิวรูปไข่ (ตามปกติกับรูปวงรี) ข้อได้เปรียบที่ยิ่งใหญ่: เซนทรอยด์สามารถคำนวณได้โดยการแบ่งรูปหลายเหลี่ยมเป็นรูปทรงที่ง่ายขึ้น

(2) เซนทรอยด์เป็นจุดที่มีระยะทางทางธรณีวิทยาต่ำสุด RMS ไปยังทุกจุดในการตกแต่งภายในของรูปหลายเหลี่ยม ดู Buss และ Fillmore "ค่าเฉลี่ยทรงกลมและการประยุกต์ใช้กับเส้นโค้งทรงกลมและการแก้ไข", ธุรกรรม ACM ในกราฟิก20 , 95–126 (2001) ประโยชน์ใหญ่: จุดที่เกิดไม่ได้ขึ้นอยู่กับวิธีการที่พื้นผิวจะถูกฝังอยู่ใน R 3

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

สมมติว่าจุดสิ้นสุดของขอบคือ (φ 1 , λ 1 ) และ (φ 2 , λ 2 ) ให้ azimuths ของขอบและปลายทางโดยα 1 และα 2 สมมติว่ารัศมีของทรงกลมเท่ากับ 1 พื้นที่ของรูปสามเหลี่ยมคือ

  A = α 2 - α 1
      = 2 tan −1 [tan ½ (λ 2 - λ 1 ) sin ½ (φ 2 + φ 1 ) / cos ½ (φ 2 + φ 1 )]

(สูตรนี้สำหรับพื้นที่เนื่องจาก Bessel มีพฤติกรรมเป็นตัวเลขที่ดีกว่าสูตรของ L'Huilier ที่ใช้กันทั่วไปในพื้นที่ของรูปสามเหลี่ยม)

ส่วนประกอบของเซนทรอยด์สำหรับรูปสี่เหลี่ยมสามเหลี่ยมนี้ได้มาจาก

  2 Ax ⟩ = φ 2บาป (λ 2 - λ 0 ) - φ 1บาป (λ 1 - λ 0 )
  2 Ay ⟩ = cos α 02 - σ 1 ) - (φ 2 cos (λ 2 - λ 0 ) - φ 1 cos (λ 1 - λ 0 ))
  2 Az ⟩ = (λ 2 - λ 1 ) - sin α 02 - σ1 )

โดยที่σ 2 - σ 1คือความยาวของขอบและλ 0และα 0คือลองจิจูดและ azimuth ของขอบที่มันตัดผ่านเส้นศูนย์สูตร และแกนxและyจะเน้นเพื่อที่เส้นศูนย์สูตรคือx = 1, y = 0 ( zคือแกนผ่านเสาแน่นอน)


คุณช่วยอธิบายได้ไหมว่าทำไมตำแหน่งของเซนทรอยด์ของเจนเนนส์จึงขึ้นอยู่กับการแบ่งรูปหลายเหลี่ยมออกเป็นสามเหลี่ยม? ฉันรู้จากตัวอย่างของ @ whuber ว่าการคำนวณเซนทรอยด์ของ Jenness นั้นไม่ถูกต้องสำหรับรูปสามเหลี่ยมทรงกลม แต่จะเกิดอะไรขึ้นถ้าเซนทรอยด์ที่อยู่บนพื้นฐานของรูปสามเหลี่ยมทรงกลมมีการใช้แทน สิ่งนี้จะยังคงล้มเหลวหรือไม่
เจสันเดวีส์

Jenness แทนที่รูปหลายเหลี่ยมทรงกลมอย่างมีประสิทธิภาพโดยชุดของสามเหลี่ยมระนาบและคำนวณ centroid ของพวกเขา ชัดเจน (?) ผลลัพธ์จะขึ้นอยู่กับการแบ่งพาร์ติชัน การคำนวณที่ฉันทำโดยใช้เซนทรอยด์ของสามเหลี่ยมทรงกลมนั้นใช้ได้ คุณสามารถหาสูตรสำหรับเซนทรอยด์ใน JE Brock, The Inertia Tensor สำหรับ Spherical Triangle, J. Applied Mechanics 42, 239 (1975) dx.doi.org/10.1115/1.3423535
cffk

ฉันลองดูที่กระดาษของ Brock อีกครั้ง สูตรของเขาสำหรับจุดศูนย์กลางมวลของสามเหลี่ยมทรงกลมเกี่ยวข้องกับผลรวมเหนือขอบของสามเหลี่ยม ดังนั้นจึงเป็นเรื่องธรรมดาที่จะนำไปใช้กับรูปหลายเหลี่ยม (โดยไม่จำเป็นต้องแยกมันออกเป็นรูปสามเหลี่ยม)
cffk

คุณคิดที่จะให้การอ้างอิงสำหรับการคำนวณพื้นที่เนื่องจาก Bessel ด้วยหรือไม่ ฉันไม่สามารถพบมันได้ทุกที่และฉันสนใจที่จะเขียนรูทีนทรงกลมทรงกลมที่แม่นยำ (และแม่นยำ) ขอบคุณ!
Jason Davies

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