Düzenli, n taraflı çokgenin köşelerini oluşturmak için algoritma


10

Bunu çok sayıda anahtar kelime kombinasyonu kullanarak googledim, ancak büyük bir sürprizle, belirli bir çevreye düzenli, n taraflı bir çokgen oluşturmak, yani n köşe noktaları için koordinatları bulmak için bir algoritma bulamadım . Tüm bulabildiğim fiziksel pusula ve yeşilayla ya da kaynaksız etkileşimli tarayıcı eklentileriyle nasıl yapılacağı ile ilgili talimatlardı.

Peki böyle bir algoritmayı nerede bulabilirim?


2
Google'a olan inancınızı geri getireyim. ;-) "Düzenli çokgen algoritması" için dördüncü vuruş: gamedev.net/topic/… "Daha sonra, temel trigonometri kullanarak, dairenin çevresine eşit aralıklarla yerleştirilmiş n noktasını seçin (yani - n 3 ise, birbirinden 120 derece ayrı çevre). " Bu tam olarak Kevin'in kodunun yaptığıdır.
Eric

Yanıtlar:


15

İle igiden 0 to n-1Anin:

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

Düzenleme: Lars Viklund yorumlarda belirtildiği gibi, bu sadece tamsayı bölümü bir tamsayı yerine bir kayan nokta sayısı döndürür javascript gibi dillerde güvenlidir. Diğer dillerde, önce ibir şamandıra almalısınız .


3
Tamsayı bölmenin bir tamsayı verdiği dillerde i / n cinsinden integral bölünme tuzağına dikkat edin.
Lars Viklund

Aah çok iyi bir nokta, cevaba bu uyarıyı ekleyeceğim.
Elva

Bu söylemeye gerek yok, ama aynı zamanda n * 2 * PI == 0mutsuz bir çokgenin olduğu ya da sahip olacağınız davaya karşı da korunmak isteyeceksiniz :(.
Zack The Human

n * 2 * PI == 0Düşünebildiğim tek n , 0 olduğu için garip taşmaları engelliyor, bildiğim kadarıyla tanımsız, i / 0 ile aynı. :)
Elva
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.