ฉันจะทดสอบได้อย่างไรว่ารูปหลายเหลี่ยมนั้นมีโทนสีเดียวกับเส้นที่กำหนดเองหรือไม่?


16

คำที่เกี่ยวข้อง : รูปหลายเหลี่ยมในเครื่องบินที่เรียกว่า monotone ด้วยความเคารพเป็นเส้นตรงถ้าทุกมุมฉากเป็นแอPLLตัดกับPมากที่สุดสองครั้ง

ให้รูปหลายเหลี่ยมPเป็นไปได้ไหมที่จะตรวจสอบว่ามีเส้นใด ๆ หรือLไม่ที่รูปหลายเหลี่ยมPนั้นเป็นรูปหลายเหลี่ยมที่มีสีเดียวกับL ? ถ้าใช่เป็นอย่างไร

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


ทำไมไม่เพียงหมุน / เปลี่ยนระบบพิกัดที่กลายเป็นx -axis จากนั้นเรียกใช้อัลกอริทึมเก่าอีกครั้ง การทำงานเพิ่มเติมควรจะจัดการได้ในO ( 1 ) LxO(1)
HdM

4
@HdM: Line L ไม่ได้รับเป็นส่วนหนึ่งของอินพุต
Tsuyoshi Ito

คำตอบ:


16

มันเป็นไปได้.

พิจารณารูปหลายเหลี่ยมของคุณและพิจารณาจุดยอด "เว้า" จะกำหนดว่าเส้นใดจะตัดกันรูปหลายเหลี่ยมมากกว่าสองครั้ง ในรูปต่อไปนี้ฉันทำเครื่องหมายช่วงเวลา (สีแดง) ของมุมต้องห้าม หากคุณรวมมันเข้าด้วยกันและเห็นรูในดิสก์สีแดงแสดงว่ามีมุมที่ได้รับอนุญาต (เป็นสีน้ำเงิน) รูปหลายเหลี่ยมนั้นซ้ำซากกับความชันของเส้นใด ๆ- 1 / tan δ (เป็นสีเขียว)δ1/tanδ

Asteroids

ตอนนี้อัลกอริทึม

ให้เป็นiจุดยอดของรูปหลายเหลี่ยม แรกคำนวณมุมแน่นอนαฉันของขอบ( วีฉันโวฉัน+ 1 )และมุมภายในβฉันของจุดสุดยอดวีฉัน ใช้ฟังก์ชั่นที่มีในภาษาการเขียนโปรแกรมที่ดีทั้งหมดvi=(xi,yi)iαi(vivi+1)βiviatan2

βฉัน = α ฉัน+ 1 - αฉัน + { 0  ถ้า  α ฉัน+ 1αฉัน 2 π  ถ้า  α ฉัน+ 1 < α i

αi=atan2(yi+1yi,xi+1xi)
βi=αi+1αi+{0 if αi+1αi2π if αi+1<αi

ย้อนกลับลำดับของจุดยอดถ้าพวกเขาไม่อยู่ในลำดับทวนเข็มนาฬิกาเช่นถ้าไม่ได้เป็นลบ ( s = - 2 π : ทวนเข็มนาฬิกา, s = 2 π : ตามเข็มนาฬิกา)s=iβinπs=2πs=2π

mπβJ>πδJ[αJ+1,αJ]πJβJ>π

( α J < δ < α J + 1 )  ถ้า  α J < α J + 1

(δ<αJ+1αJ<δ) ถ้า αJ+1<αJ
(αJ<δ<αJ+1) ถ้า αJ<αJ+1

αJαJ[0,π)πδ

O(n2)αJ พอควร πγ1,...γม.δ{γ12,γ1+γ22,,γm1+γm2,γm+π2}.

If you have find some δ then L exists and is of slope 1/tanδ. Otherwise P is not monotonous.


What software did you use to make that illustration?
jojman

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