এই চ্যালেঞ্জের লক্ষ্য একটি একটি অ্যানিমেশন উত্পাদন করা হয় চেইন ড্রাইভ সিস্টেম, একটি সেট গঠিত চক্রদন্ত গিয়ারের একটি একত্রে সংযুক্ত শৃঙ্খল ।
সাধারণ আবশ্যকতা
আপনার প্রোগ্রামটি তিনটি হিসাবে চিহ্নিত স্প্রোককেটের একটি তালিকা দেওয়া হবে (x, y, radius)
। ফলে শৃঙ্খল ড্রাইভ সিস্টেম এই sprockets, একটি একত্রে সংযুক্ত গঠিত হয় বদ্ধ টান চেইন তাদের প্রতিটি ওভার ক্ষণস্থায়ী, অনুক্রমে । আপনার লক্ষ্যটি হ'ল একটি গতিতে সিস্টেমটি দেখিয়ে অসীম লুপিং অ্যানিমেশন তৈরি করা । উদাহরণস্বরূপ, ইনপুট দেওয়া
(0, 0, 16), (100, 0, 16), (100, 100, 12), (50, 50, 24), (0, 100, 12)
, আউটপুট এর মত দেখতে কিছু উচিত
।
তুল্য সিস্টেম যেমন x- অক্ষ ডান পয়েন্ট, এবং Y- অক্ষ পয়েন্ট আপ যে হওয়া উচিত। আপনি ধরে নিতে পারেন যে রেডিয়াই 8 এর চেয়েও বেশি বা সমান (এটি পরে কেন গুরুত্বপূর্ণ তা আমরা দেখতে পাব)) আপনি আরও ধরে নিতে পারেন যে কমপক্ষে দুটি স্প্রোকেট রয়েছে এবং স্প্রোকেটগুলি একে অপরকে ছেদ করে না। ইউনিটইনপুট খুব সমালোচনামূলক নয়। এই পোস্টের সমস্ত উদাহরণ এবং পরীক্ষার কেসগুলি ইনপুট ইউনিট হিসাবে পিক্সেল ব্যবহার করে (সুতরাং উদাহরণস্বরূপ, পূর্ববর্তী চিত্রের মাঝারি স্প্রোকেটের ব্যাসার্ধটি 24 পিক্সেল;) এই ইউনিটগুলি থেকে খুব বেশি বিচ্যুত হওয়ার চেষ্টা করবেন না। বাকি চ্যালেঞ্জের মধ্যে, স্থানগত পরিমাণগুলি ইনপুট হিসাবে একই ইউনিটগুলিতে দেওয়া হবে বলে বোঝা যায় prop অনুপাতটি ঠিক রাখতে নিশ্চিত করুন! দ্যআউটপুট এর মাত্রা সব sprockets এর সীমান্ত বক্স চেয়ে সামান্য বড়, যথেষ্ট বড় হওয়া উচিত, যাতে সম্পূর্ণ সিস্টেম দৃশ্যমান। বিশেষত, স্প্রোককেটের নিখুঁত অবস্থানগুলি আউটপুটকে প্রভাবিত করবে না; কেবল তাদের আপেক্ষিক অবস্থানের উচিত (সুতরাং, উদাহরণস্বরূপ, যদি আমরা উপরের উদাহরণে সমস্ত স্প্রোকেটকে একই পরিমাণে স্থানান্তরিত করি তবে আউটপুট একই থাকবে))
শৃঙ্খল হওয়া উচিত স্পর্শক sprockets এটা যোগাযোগের সব বিন্দুতে পাস, এবং সোজা সর্বত্র অন্য। চেইনটি স্প্রোককেটের উপর দিয়ে যেতে হবে যেমন সংলগ্ন চেইন বিভাগগুলি (যা দুটি স্প্রোকেটের মধ্যে শৃঙ্খলার অংশগুলি, যা একই স্প্রোকেটে মিলিত হয়) একে অপরকে ছেদ না করে।
।
উদাহরণস্বরূপ, উপরের বাম সিস্টেমটি বৈধ থাকাকালীন মাঝেরটিটি নয়, যেহেতু নীচের বাম স্প্রোকেট ছেদ করে দুটি সংলগ্ন চেইন খণ্ডগুলি ছেদ করে। যাইহোক, লক্ষ করুন যে, ডান সিস্টেম হয় বৈধ, যেহেতু দুই ছেদ শৃঙ্খল অংশ সন্নিহিত নয় (এই সিস্টেম যদিও, ব্যতীত অন্য দুই একটি ভিন্ন ইনপুট দ্বারা উত্পাদিত হয়।)
জিনিসগুলি সহজ (আর) রাখার জন্য, আপনি ধরে নিতে পারেন যে কোনও স্প্রোকট তার দুটি প্রতিবেশী স্প্রোকেট বা তার প্রতিবেশী এবং তাদের অন্য প্রতিবেশীর উত্তল হালকে ছেদ করে না । অন্য কথায়, নীচের চিত্রের উপরের স্প্রোকটটি ছায়াযুক্ত অঞ্চলগুলির কোনওটিকে ছেদ না করতে পারে।
চেইন বিভাগগুলি তাদের পাশ দিয়ে যাওয়াগুলি ব্যতীত অন্য স্প্রোকেটগুলিকে ছেদ করতে পারে (যেমন শেষ পরীক্ষার ক্ষেত্রে)। এই ক্ষেত্রে, চেইন সর্বদা স্প্রোককেটের সামনে উপস্থিত হওয়া উচিত।
ভিজ্যুয়াল প্রয়োজনীয়তা
শৃঙ্খলে বিকল্প প্রস্থের কয়েকটি লিংক থাকা উচিত । সরু লিঙ্কটির প্রস্থ প্রায় 2 এবং প্রশস্ত লিঙ্কের প্রস্থ প্রায় 5 হওয়া উচিত । উভয় প্রকারের লিঙ্কের দৈর্ঘ্য প্রায় সমান হওয়া উচিত। দ্যকালচেইনের অর্থাত্, লিঙ্কগুলির প্রশস্ত / সরু জোড়ার মোট দৈর্ঘ্য 4 এর নিকটতম সংখ্যা হওয়া উচিত যা শৃঙ্খলার দৈর্ঘ্যের ক্ষেত্রে পূর্ণসংখ্যার বারের সাথে খাপ খায়। উদাহরণস্বরূপ, যদি শৃঙ্খলার দৈর্ঘ্য 1,000 হয়, তবে এর সময়কাল 12.5 হওয়া উচিত, এটি 4π (12.566 ...) এর নিকটতম সংখ্যা যা 1000 এর মধ্যে পূর্ণসংখ্যার সংখ্যার (80) ফিট করে? পিরিয়ডের জন্য শৃঙ্খলার দৈর্ঘ্যের মধ্যে একটি পূর্ণসংখ্যার বার ফিট করা গুরুত্বপূর্ণ, যাতে চেইনটি প্রায় আবৃত থাকে এমন বিন্দুতে কোনও শৈলী না থাকে।
ব্যাসার্ধ একটি চক্রদন্ত আর একটি কেন্দ্রীয় তিনটি সমকেন্দ্রি অংশ হওয়া উচিত অক্ষ , যা সম্পর্কে ব্যাসার্ধ 3 বৃত্ত হওয়া উচিত; চক্রদন্ত লাশ , অক্ষ, যা সম্পর্কে ব্যাসার্ধ্যের একটি বৃত্ত হওয়া উচিত প্রায় আর - 4.5; এবং স্প্রোকেটের রিম , শরীরের চারপাশে, যা প্রায়
R - 1.5 এর ব্যাসার্ধের বৃত্ত হওয়া উচিত । রিমে স্প্রোকেটের দাঁতও থাকতে হবে , যার প্রস্থ প্রায় 4 টি হওয়া উচিত; দাঁতগুলির আকার এবং ব্যবধানটি চেইন লিঙ্কগুলির আকারগুলির সাথে মিলিত হওয়া উচিত, যাতে তারা ঝরঝরে me
স্প্রোকেটের দাঁতগুলির সময়কাল, অর্থাত্ স্প্রোকটের পরিধি বরাবর দুটি টানা দাঁতের মধ্যবর্তী দূরত্বটি শৃঙ্খলার সময়কালের সাথে মিলিত হওয়া উচিত। যেহেতু সময়কাল প্রায় 4π, এবং যেহেতু স্প্রোকটের ব্যাসার্ধটি সমান হওয়ার গ্যারান্টিযুক্ত তাই সময়টি স্প্রোকটের পরিধিতে প্রায় বারের মতো পূর্ণসংখ্যার সাথে মাপসই করা উচিত, যাতে কোনও নির্দিষ্ট লক্ষণীয় নিদর্শন যাতে না থাকে সেদিকে স্প্রোকেটের দাঁতগুলি প্রায় জড়িয়ে আছে।
আপনি চেইন, স্প্রোকটের বিভিন্ন অংশ এবং পটভূমির জন্য যে কোনও রঙের সংমিশ্রণ ব্যবহার করতে পারবেন যতক্ষণ না তারা সহজেই পৃথকযোগ্য । পটভূমিটি স্বচ্ছ হতে পারে। এই পোস্টের উদাহরণগুলি #202020
শৃঙ্খলার #868481
জন্য, স্প্রোকটের অক্ষ এবং রিমের #646361
জন্য এবং স্প্রোকেটের শরীরের জন্য ব্যবহার করে।
অ্যানিমেশন প্রয়োজনীয়তা
প্রথম চক্রদন্ত ইনপুট তালিকা ঘুরান উচিত ঘড়ির কাঁটার দিকে ; বাকি স্প্রোকেটগুলি সেই অনুযায়ী ঘোরানো উচিত। শৃঙ্খল একটি এ সরানো উচিত গতি 16π সম্পর্কে (প্রায় 50) প্রতি সেকেন্ডে ইউনিট; ফ্রেম রেট আপনার উপর নির্ভর করে তবে অ্যানিমেশনটি যথেষ্ট মসৃণ হওয়া উচিত।
অ্যানিমেশনটি নির্বিঘ্নে লুপ হওয়া উচিত ।
কনফরমেন্স
কিছু ভিজ্যুয়াল অ্যাট্রিবিউট এবং অনুপাতগুলি ইচ্ছাকৃতভাবে কেবল মোটামুটিভাবে নির্দিষ্ট করা হয় — আপনাকে সেগুলির সাথে ঠিক মেলে না । আপনার প্রোগ্রামের আউটপুট এখানে দেওয়া উদাহরণগুলির পিক্সেল থেকে পিক্সেল প্রতিলিপি হতে হবে না, তবে এটি দেখতে অনুরূপ হওয়া উচিত। বিশেষত, চেইনের সঠিক অনুপাত এবং স্প্রোকেটস এবং চেইনের লিঙ্কগুলি এবং স্প্রোকেটের দাঁতগুলির সঠিক আকারটি নমনীয়।
অনুসরণ করার জন্য সবচেয়ে গুরুত্বপূর্ণ বিষয়গুলি হ'ল:
- শৃঙ্খলে সঠিক দিক থেকে ইনপুট ক্রমে স্প্রোককেটের উপর দিয়ে যেতে হবে।
- যোগাযোগের সমস্ত পয়েন্টে চেইনটি স্প্রোকেটগুলিতে স্পর্শকাতর হওয়া উচিত।
- চেইনের লিঙ্কগুলি এবং স্প্রোকেটগুলির দাঁতগুলি ঝরঝরেভাবে ঝাঁকুনি দেওয়া উচিত, কমপক্ষে ব্যবধান এবং পর্যায়টি সঠিক করতে।
- চেইনের লিঙ্কগুলি এবং স্প্রোককেটের দাঁতগুলির মধ্যে ব্যবধানটি এমন হওয়া উচিত যাতে তারা যে মোড় ঘুরিয়ে দেয় সেখানে কোনও লক্ষণীয় নিদর্শন নেই।
- স্প্রোককেটগুলি সঠিক দিকে ঘোরানো উচিত।
- অ্যানিমেশনটি নির্বিঘ্নে লুপ হওয়া উচিত।
একটি চূড়ান্ত নোট হিসাবে, প্রযুক্তিগতভাবে, এই চ্যালেঞ্জের লক্ষ্যটি হ'ল সংক্ষিপ্ততম কোডটি লেখা, যদি আপনি মনে করেন যে সৃজনশীল হয়ে উঠতে এবং আরও বিস্তৃত আউটপুট উত্পাদন করার উপযোগী হয়, তবে এটির জন্য যান!
চ্যালেঞ্জ
একটি প্রোগ্রাম বা একটি ফাংশন লিখুন , স্প্রোকেটগুলির একটি তালিকা গ্রহণ করুন এবং উপরে বর্ণিত অনুসারে সংশ্লিষ্ট চেইন ড্রাইভ সিস্টেম অ্যানিমেশন তৈরি করুন।
ইনপুট এবং আউটপুট
আপনি সময় নিতে পারে ইনপুট মাধ্যমে কমান্ড লাইন মাধ্যমে stdin , যেমন ফাংশন আর্গুমেন্ট , অথবা একটি ব্যবহার সমতুল্য পদ্ধতি । আপনি ইনপুটটির জন্য কোনও সুবিধাজনক বিন্যাস ব্যবহার করতে পারেন তবে এটি আপনার পোস্টে নির্দিষ্ট করে দেওয়ার বিষয়টি নিশ্চিত করুন।
আউটপুট হিসাবে , আপনি অ্যানিমেশনটি সরাসরি প্রদর্শন করতে পারেন , একটি অ্যানিমেশন ফাইল তৈরি করতে পারেন (উদাহরণস্বরূপ, একটি অ্যানিমেটেড জিআইএফ), বা ফ্রেম ফাইলগুলির একটি ক্রম উত্পাদন করতে (তবে, এই ক্ষেত্রে একটি ছোট জরিমানা রয়েছে; নীচে দেখুন)) আপনি যদি ফাইল আউটপুট ব্যবহার করেন, ফ্রেমের সংখ্যা যুক্তিসঙ্গত কিনা তা নিশ্চিত করুন (এই পোস্টের উদাহরণগুলি খুব কম ফ্রেম ব্যবহার করে;) ফ্রেমের সংখ্যা ন্যূনতম হতে হবে না, তবে আপনার অত্যধিক অতিরিক্ত অতিরিক্ত ফ্রেম তৈরি করা উচিত নয়। যদি আপনি ফ্রেমের ক্রম আউটপুট করেন তবে আপনার পোস্টে ফ্রেম রেট নির্দিষ্ট করে দেওয়ার বিষয়টি নিশ্চিত করুন ।
স্কোর
এটি কোড-গল্ফ । সবচেয়ে কম উত্তর , বাইটে, ধিক্কার জানাই।
+ 10% জরিমানা যদি আপনার প্রোগ্রামটি সরাসরি অ্যানিমেশনটি প্রদর্শন করার বা একক অ্যানিমেশন ফাইল তৈরির পরিবর্তে আউটপুট হিসাবে ফ্রেমের ক্রম উত্পাদন করে তবে আপনার স্কোরের 10% যোগ করুন।
পরীক্ষার মামলা
পরীক্ষা 1
(0, 0, 26), (120, 0, 26)
পরীক্ষা 2
(100, 100, 60), (220, 100, 14)
পরীক্ষা 3
(100, 100, 16), (100, 0, 24), (0, 100, 24), (0, 0, 16)
পরীক্ষা 4
(0, 0, 60), (44, 140, 16), (-204, 140, 16), (-160, 0, 60), (-112, 188, 12),
(-190, 300, 30), (30, 300, 30), (-48, 188, 12)
পরীক্ষা 5
(0, 128, 14), (46.17, 63.55, 10), (121.74, 39.55, 14), (74.71, -24.28, 10),
(75.24, -103.55, 14), (0, -78.56, 10), (-75.24, -103.55, 14), (-74.71, -24.28, 10),
(-121.74, 39.55, 14), (-46.17, 63.55, 10)
পরীক্ষা 6
(367, 151, 12), (210, 75, 36), (57, 286, 38), (14, 181, 32), (91, 124, 18),
(298, 366, 38), (141, 3, 52), (80, 179, 26), (313, 32, 26), (146, 280, 10),
(126, 253, 8), (220, 184, 24), (135, 332, 8), (365, 296, 50), (248, 217, 8),
(218, 392, 30)