การหมุนคาลิปเปอร์คือโมดูล Python ที่ใช้อัลกอริทึมที่มีชื่อเดียวกัน
อัลกอริทึมถูกประดิษฐ์ขึ้นครั้งแรกโดย Michalel Shamos ในปี 1978 และได้รับชื่อ "การหมุนคาลิปเปอร์" ขอบคุณ Godfried Toussant ที่ให้ความสำคัญกับมันในกระดาษของเขาในปี 1983
วิธีการนี้มีชื่อว่าเพราะความคิดนั้นคล้ายคลึงกับการหมุนคาลิปเปอร์เวอร์เนียร์สปริงที่โหลดรอบด้านนอกของรูปหลายเหลี่ยมนูน ทุกครั้งที่ใบมีดของคาลิปเปอร์อยู่ที่ขอบของรูปหลายเหลี่ยมมันจะเป็นคู่ antipodal ที่มีจุดหรือขอบสัมผัสกับใบมีดตรงข้าม "การหมุน" ที่สมบูรณ์ของคาลิปเปอร์รอบรูปหลายเหลี่ยมตรวจจับคู่ antipodal ทั้งหมด; ชุดของคู่ทั้งหมดที่ดูเป็นกราฟสร้าง thrackle วิธีการหมุนคาลิปเปอร์สามารถตีความได้ว่าเป็นคู่ของอัลกอริทึมการกวาดเส้นซึ่งการกวาดนั้นอยู่ข้ามทางลาดของเส้นแทนที่จะเป็นจุดพิกัด X- หรือ Y-coordinates ของจุด
คำอธิบายด้านบนดัดแปลงมาจากหน้า Wikipedia: https://en.wikipedia.org/wiki/rotating_calipers
อัลกอริทึม "การหมุนคาลิปเปอร์" ถูกนำมาใช้โดยฉันสำหรับโครงการมหาวิทยาลัย ฉันต้องเผชิญกับปัญหามากมายในการหาทางออกที่มีประสิทธิภาพใน Python นั่นคือเหตุผลที่ฉันต้องการแบ่งปันกับทุกคนที่ต้องการการใช้งาน "การหมุนคาลิเปอร์" ที่รวดเร็วใน Python
เมื่อคาลิปเปอร์หมุนทำงานในเวลาเชิงเส้นมันต้องมีตัวถังนูนบนอินพุต Wihch คำนวณที่นี่โดยใช้อัลกอริทึมของ Graham ซึ่งทำงานใน O (nlogn) ทั้งหมดในอัลกอริทึมของ Algorihm (อัลกอริทึมของ Graham + การหมุนคาลิปเปอร์) ความซับซ้อนของเวลาคือ o (nlogn) + o (n) = o (nlogn)
Linux:
ตัวอย่างการใช้งานสามารถพบได้ที่นี่