Bir episikloid , bir daire üzerindeki bir noktanın, başka bir daire etrafında dönerken yaptığı bir eğridir. Bir siklog , düzlem boyunca yuvarlanırken normal bir çokgenin üzerindeki bir noktanın şeklidir . Bir episikloon , normal bir poligondaki bir noktadan izlenen eğridir.
Verilen bir epicyclogon çeken bir program yazın r
, r1
, r2
, n1
, n2
:
r = number of clockwise revolutions rolling polygon makes around stationary polygon (any real number as limited by float values)
r1 = distance from center of stationary polygon to each of its vertices (positive real number)
r2 = distance from center of rolling polygon to each of its vertices (positive real number)
n1 = number of sides stationary polygon has (integer greater than 2)
n2 = number of sides rolling polygon has (integer greater than 2)
notlar
r
Negatif olduğunda , silindir saat yönünün tersine gitmelidir .- Zira
r
, bir devrim, iki şeklin centroidlerini bağlayan çizgi tam 360 derece süpürdüğünde meydana gelir. Bu kavram tüm değerlerini içerecek şekilde genişletilmiştirr
. (Yani çeyrek devrede, santroidleri birbirine bağlayan çizgi 90 derece süpürür.) - Bu argümanlar komut satırından gelmeli veya programınız onlardan isteymelidir (örn. Python ile
input()
). r1
ver2
görüntünün boyutları değil, birbirlerine göredir. Böylece bir "birimi" istediğiniz sayıda gerçek piksel olarak ayarlayabilirsiniz.
İzlemeniz gereken nokta, yuvarlanma şeklinin köşelerinden biridir. Şekiller, bu köşe ile sabit bir tepe noktasına ve bitişik iki tarafa değecek şekilde başlamalıdır:
Tam başlangıç köşeleri ve sabit poligonun açısı önemli değil.
Çıktı
Çıktı en az 600x600 piksel (veya 600 olarak ayarlanabilen değişken boyutta) bir görüntüye gitmelidir. Görüntüde iyi çerçevelenmiş olan, parametreler tarafından belirtilen tüm epikliniği eğrisi göstermelidir.
Yuvarlanma ve sabit çokgenler de çizilmelidir (rulo son haliyle). İki şekil ve epiklik, gözle görülür şekilde farklı üç renkte olmalıdır.
Ayrıca basit bir yolu olmalı değil çokgenler (değişikliği çizmek true
için false
kod kısıtlamasını fazla olarak).
Lütfen bize en az 2 çıkış resmi gösterin. Gerekirse onları küçültmek sorun değil.
puanlama
Geçerli çıktı görüntüleri üreten en kısa kod kazanır.
Bonuslar
- Çıktı çizilen eğrinin animasyonlu bir gif (veya benzeri) olması durumunda eksi 50 bayt.
- Eksi 150 byte izin halinde
n1
ven2
şekiller uzunluğunun hat kesimleri olmak çok değeri 2 alır2 * r1
(ya dar2
) birbirleri etrafında, "döner". Centroidler diğer durumlarda olduğu gibi birbirleri etrafında dönmediklerinden,r
ne zamann1
ven2
2 yaşında olmanız nasıl size bağlıdır . (Hiç "yuvarlanma" değil, onu ele almak sayılmaz.)
Bu yeni fikrin iyi uygulandığını görmek için oldukça istekli olduğum için (ve tam olarak bir çakal değil), kazanana 150 ödül temsilcisi ödeyeceğim. Yarışma aynı gün ödül sona erecek.
Kodun çoğunu başka bir gönderimden yeniden yazdıkları açıksa, ödül kazanana verilmez.
Zaten bunu yapan kütüphane işlevlerine (varsa) izin verilmez.
Not: Bu , herkesin göndermekte özgür olduğu artık sorularımdan geldi . Ama eğer hiç kimse onlara mesaj göndermezse, zamanında geleceğim için iyi bir şans var. : P