Một epicycloid là đường cong một điểm trên một vòng tròn tạo ra khi nó cuộn quanh một vòng tròn khác. Một cyclogon là hình dạng một điểm trên một đa giác thông thường tạo ra khi nó lăn trên một mặt phẳng. Một epicyclogon là đường cong được vạch bởi một điểm trên một đa giác thông thường khi nó cuộn quanh một điểm khác.
Viết một chương trình thu hút một epicyclogon cho 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)
Ghi chú
- Khi
r
âm là con lăn nên đi ngược chiều kim đồng hồ . - Đối với
r
, một cuộc cách mạng xảy ra khi đường nối giữa tâm của hai hình quét ra hết 360 độ. Khái niệm này được mở rộng để bao gồm tất cả các giá trị củar
. (Vì vậy, trong một phần tư cuộc cách mạng, đường nối giữa tâm sẽ quét ra 90 độ.) - Các đối số này phải xuất phát từ dòng lệnh hoặc chương trình của bạn sẽ nhắc cho chúng (ví dụ với Python
input()
). r1
vàr2
có liên quan với nhau, không phải kích thước của hình ảnh. Vì vậy, bạn có thể đặt một "đơn vị" là bất kỳ số pixel thực tế nào.
Điểm bạn phải tìm ra là một trong những đỉnh của hình dạng lăn. Các hình phải bắt đầu với đỉnh này chạm vào một đỉnh cố định và hai cạnh kề nhau:
Các đỉnh bắt đầu chính xác và góc của đa giác đứng yên không quan trọng.
Đầu ra
Đầu ra phải đi đến một hình ảnh có ít nhất 600x600 pixel (hoặc một số kích thước thay đổi có thể được đặt thành 600). Nó phải hiển thị toàn bộ đường cong epicyclogon được chỉ định bởi các tham số, được đóng khung tốt trong hình ảnh.
Các đa giác lăn và cố định cũng phải được rút ra (với con lăn ở trạng thái cuối cùng). Hai hình dạng và epicyclogon nên có ba màu khác nhau đáng chú ý.
Ngoài ra còn phải là một cách đơn giản để không vẽ đa giác (một sự thay đổi true
để false
trong cũng đủ code).
Vui lòng cho chúng tôi xem ít nhất 2 hình ảnh đầu ra. Bạn có thể thu nhỏ chúng nếu cần thiết.
Chấm điểm
Mã ngắn nhất tạo ra hình ảnh đầu ra hợp lệ sẽ thắng.
Tiền thưởng
- Trừ 50 byte nếu đầu ra là một gif hoạt hình (hoặc tương tự) của đường cong được vẽ.
- Trừ đi 150 byte nếu bạn cho
n1
vàn2
lấy giá trị 2 để các hình dạng trở thành các đoạn có độ dài2 * r1
(hoặcr2
), "lăn" xung quanh nhau. Cách bạn xử lýr
khi nàon1
vàn2
2 là tùy thuộc vào bạn vì các nhân mã không xoay quanh nhau như cách họ làm trong các trường hợp khác. (Không "lăn" chút nào không được tính là xử lý nó.)
Vì tôi khá háo hức khi thấy ý tưởng mới lạ này được thực hiện tốt (và nó không chính xác là một cuộc thi làm bánh), tôi sẽ trao 150 tiền thưởng cho người chiến thắng. Cuộc thi sẽ kết thúc cùng ngày hết tiền thưởng.
Tiền thưởng sẽ không được trao cho người chiến thắng nếu rõ ràng họ chỉ đơn giản viết lại phần lớn mã từ một bài nộp khác.
Các chức năng thư viện đã xảy ra để làm điều này (nếu có) không được phép.
Lưu ý: Điều này xuất phát từ những câu hỏi còn sót lại của tôi mà bất cứ ai cũng có thể đăng miễn phí. Nhưng nếu không có ai đăng chúng thì sẽ có cơ hội tốt. : P