อัลกอริทึมสำหรับการสร้างมุมของรูปหลายเหลี่ยมปกติ n- ด้าน


10

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

ดังนั้นฉันจะหาอัลกอริธึมได้ที่ไหน?


2
ให้ฉันคืนความเชื่อของคุณใน Google ;-) การเข้าชมครั้งที่สี่สำหรับ "อัลกอริธึมรูปหลายเหลี่ยมปกติ": gamedev.net/topic/… "จากนั้นเมื่อใช้ตรีโกณมิติพื้นฐานเลือก n จุดเว้นระยะเท่ากันรอบวงกลมของวงกลม (เช่น - ถ้า n เท่ากับ 3 เลือก 3 คะแนนบน เส้นรอบวงที่อยู่ห่างจากกัน 120 องศา) ซึ่งเป็นสิ่งที่รหัสของเควินทำ
Eric

คำตอบ:


15

ด้วยการiไปจาก0 to n-1รวม:

pointX[i] = ( sin( i / n * 2 * PI ) * radius ) + xOffset;
pointY[i] = ( cos( i / n * 2 * PI ) * radius ) + yOffset;

แก้ไข: ตามที่ Lars Viklund พูดถึงในความคิดเห็นนี่เป็นเพียงความปลอดภัยในภาษาเช่นจาวาสคริปต์ซึ่งการแบ่งจำนวนเต็มส่งกลับจำนวนจุดลอยตัวมากกว่าจำนวนเต็ม ในภาษาอื่นคุณควรโยนมันiให้ลอยก่อน


3
ระวังกับดักของการแบ่งอินทิกรัลใน i / n ในภาษาที่การหารจำนวนเต็มให้จำนวนเต็ม
Lars Viklund

เป็นจุดที่ดีมากฉันจะเพิ่มข้อแม้นั้นในคำตอบ
Elva

สิ่งนี้ไปโดยไม่บอก แต่คุณจะต้องป้องกันกรณีที่n * 2 * PI == 0คุณจะมีรูปหลายเหลี่ยมที่ไม่มีความสุข :(.
Zack The Human

การ จำกัด จำนวนโอเวอร์โฟลว์มีเพียง n เท่านั้นที่n * 2 * PI == 0ฉันสามารถคิดได้ว่าเป็น 0 ซึ่งเท่าที่ฉันทราบนั้นไม่ได้กำหนดเช่นเดียวกับ i / 0 ดังนั้นจึงไม่มีปัญหาใช่มั้ย :)
Elva
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.