এই একটি ফলো-আপ প্রশ্ন হল এই অন্যটি ।
আমি এটি জানতে চাই যে বিশ্বের আমার প্রতিনিধিত্ব (বর্তমানে 160Kmx160Km) এটি অঙ্কন অঞ্চলে (বর্তমানে 800x600 পিক্সেল) ফিট করার জন্য কোন সাধারণ / সাধারণ / সেরা প্যাটার্ন রয়েছে কিনা ?
আমি কমপক্ষে চারটি ভিন্ন পদ্ধতির কথা ভাবতে পারি:
ন্যাভভ ওয়ান (আমি এ পর্যন্ত এটি যেভাবে করেছি) আমি একটি বিশ্বব্যাপী ফাংশন বাস্তবায়ন করেছি sc(vector)
যা কেবল ভেক্টরের পাস করা একটি ছোট আকারের অনুলিপি ফিরে আসবে This এটি অবশ্যই কাজ করে তবে আমাকে কোড লিখতে বাধ্য করে:
drawCircle(sc(radius), sc(position))
মোড়ানো কার্যাদি । আমি বেশ কয়েকটি ফাংশন সংজ্ঞায়িত করতে পারি, তাদের প্রত্যেকটি আসল মিডলওয়্যারটি মোড়ানো। উদাহরণস্বরূপ, আমি সংজ্ঞায়িত করতে পারি myDrawCircle
যা প্রথমে স্কেলিংয়ের প্রয়োজন যুক্তিগুলি স্কেল করবে এবং তারপরে drawCircle
পরবর্তীগুলির সাথে কল করবে। এটি আমার কোডটি সম্ভবত আরও পঠনযোগ্য এবং বজায় রাখা সহজ করে তুলবে, তবে আমার প্রচুর মোড়ক ফাংশন লিখতে হবে যা মূর্খ sound
ফাংশন সাজসজ্জা । আমি কেবল বিদ্যমান মিডলওয়্যার ফাংশনগুলি সজ্জিত করতে পারতাম, যা ক্লাসের ইনস্ট্যান্টেশন হিসাবে সমস্ত পরামিতিগুলির জন্য স্বয়ংক্রিয় স্কেলিং সরবরাহ করে Vector3D
, তবে সমস্যাটি হ'ল সেই ফাংশনগুলি একই পরামিতিগুলির উপস্থিতি list
বা Vector2D
খুব বেশি কাজ করে এবং ডেকরেটারকে জানার কোনও উপায় থাকত না কোন তালিকাগুলি ছোট করতে হবে (উদাহরণস্বরূপ ব্যাসার্ধ) এবং কোনটি নয় (আরজিবি মান))
পৃষ্ঠের সূচনা । যে পৃষ্ঠটি আমি আঁকতে যাচ্ছি তার সংজ্ঞা দেওয়ার সময়, আমি স্কেলিং ফ্যাক্টরটি সংজ্ঞায়িত করতে পারি (যাতে আমি তখন প্যারামিটার হিসাবে পিক্সেল না করে মিটার ব্যবহার করব)। এটি আমার পক্ষে স্বচ্ছভাবে কাজ করবে এবং আমার পছন্দের সমাধান হবে, তবে অবশ্যই এটি মিডওয়্যারের মধ্যে প্রয়োগ করা উচিত, সুতরাং এটি আসল বিকল্প নয়।
... যাইহোক: যেহেতু এটি একটি খুব সাধারণ সমস্যা, আমি অবাক হই যে যদি এমন কোনও প্রতিষ্ঠিত প্যাটার্ন রয়েছে যা এই সমস্যাটিকে মার্জিতভাবে সমাধান করে যা আমি খুঁজে পেতে ব্যর্থ হয়েছি।
পিএস: এই প্রকল্পের জন্য আমি পাইথনটি ব্যবহার করছি ( পাইগামের সাথে ) তবে - যদিও পাইথন / পাইগাম-নির্দিষ্ট উত্তরটি প্রশংসিত হয়েছে, তবে আমি নিদর্শনটির সাধারণ / উচ্চ-স্তরের বর্ণনায় এর কংক্রিট বাস্তবায়নের চেয়ে বেশি আগ্রহী।
আপনার সময় এবং দক্ষতার জন্য আপনাকে আগাম ধন্যবাদ।