สปิโรกราฟราเป็นของเล่นที่วาดไฮโปคลอรอยด์และเอพิโตรรอยด์ สำหรับความท้าทายนี้เราจะเน้นที่ไฮโปคลอรอยด์
จากวิกิพีเดีย :
ไฮเปอร์โบรอยด์คือรูเล็ตที่ติดตามโดยจุดที่ติดอยู่กับวงกลมรัศมีr ที่หมุนไปรอบ ๆ ด้านในของรัศมีคงที่Rซึ่งจุดคือระยะทางdจากจุดศูนย์กลางของวงกลมภายใน
สมการพารามิเตอร์สำหรับพวกเขาสามารถกำหนดเป็น:
โดยที่θคือมุมที่เกิดขึ้นจากแนวนอนและศูนย์กลางของวงกลมกลิ้ง
งานของคุณคือการเขียนโปรแกรมที่จะวาดเส้นทางที่ติดตามโดยจุดที่กำหนดไว้ด้านบน ในฐานะที่เป็นอินพุทคุณจะได้รับR , rและdจำนวนเต็มทั้งหมดตั้งแต่ 1 ถึง 200
คุณสามารถรับอินพุตนี้จาก stdin, อาร์กิวเมนต์หรืออินพุตของผู้ใช้ แต่ไม่สามารถ hardcoded ลงในโปรแกรม คุณสามารถยอมรับได้ในรูปแบบใดก็ตามที่สะดวกที่สุดสำหรับคุณ เป็นสตริงจำนวนเต็ม ฯลฯ
สมมติ:
- หน่วยอินพุตมีหน่วยเป็นพิกเซล
- R > = r
เอาท์พุทควรเป็นตัวแทนกราฟิกของ hypotrochoid ที่กำหนดโดยอินพุต ไม่อนุญาตให้ใช้ ASCII หรือเอาต์พุตแบบข้อความอื่น ๆ ภาพนี้สามารถบันทึกเป็นไฟล์หรือแสดงบนหน้าจอ รวมภาพหน้าจอหรือภาพของเอาท์พุทสำหรับอินพุตที่คุณเลือก
คุณสามารถเลือกสีใดก็ได้ที่คุณต้องการสำหรับเส้นทาง / พื้นหลังโดยมีข้อ จำกัด เรื่องความคมชัด สองสีต้องมีองค์ประกอบ 'ค่า' HSV อย่างน้อยครึ่งหนึ่งของขนาดแยกจากกัน ตัวอย่างเช่นหากคุณวัด HSV จาก[0...1]
ควรมี0.5
ความแตกต่างอย่างน้อยที่สุด ระหว่าง[0...255]
ควรมีความ128
แตกต่างขั้นต่ำ
นี่คือรหัสกอล์ฟขนาดต่ำสุดของซอร์สโค้ดเป็นไบต์ชนะ
R>=r
แต่d
ไม่ได้ถูก จำกัดr
และสามารถอยู่ที่ใดก็ได้ในช่วง 1-200
R=200, r=1, d=200
ให้ คุณสามารถปรับขนาดภาพเป็นอินพุทถ้าคุณต้องการหรือเก็บไว้ที่ขนาดคงที่ตราบใดที่มันสามารถมองเห็นได้ทั้งหมด
R > r
หรือR ≥ r
? (เหมือนกันr
และd
.)