একটি নিয়ামক পদ্ধতিতে ভাসমান পয়েন্ট সংখ্যা পরিচালনা করার জন্য
ভাসমান বিন্দু নির্বিচারক is ঠিক আছে, এটা হওয়া উচিত। এটা জটিল.
ভাসমান পয়েন্ট সংখ্যাগুলিতে প্রচুর সাহিত্য রয়েছে:
এবং কীভাবে তারা সমস্যাযুক্ত:
বিমূর্ত জন্য। কমপক্ষে, একক থ্রেডে, একই ক্রিয়াকলাপে একই ডেটা সহ একই ক্রিয়াকলাপগুলি হ্রাসকারী হওয়া উচিত। সুতরাং, আমরা ইনপুটগুলি নিয়ে চিন্তিত হয়ে এবং পুনরায় অর্ডার দিয়ে শুরু করতে পারি।
এমন একটি ইনপুট যা সমস্যার সৃষ্টি করে তা হ'ল সময়।
প্রথমত, আপনার সর্বদা একই টাইমস্টেপ গণনা করা উচিত। আমি সময় পরিমাপ না করার জন্য বলছি না, আমি বলছি যে আপনি পদার্থবিজ্ঞানের সিমুলেশনে সময় দেবেন না, কারণ সময়ের বিভিন্নতা সিমুলেশনটিতে শব্দের উত্স।
আপনি যদি পদার্থবিজ্ঞানের সিমুলেশনটিতে তা না পাঠাচ্ছেন তবে আপনি কেন সময় মাপবেন? সিমুলেশন পদক্ষেপটি কখন ডাকা উচিত এবং আপনি ধরে নিচ্ছেন যে আপনি ঘুম ব্যবহার করছেন - ঘুমানোর কত সময় আছে তা জানতে আপনি অতিবাহিত সময়টি মাপতে চান।
এভাবে:
- সময় পরিমাপ: হ্যাঁ
- সিমুলেশন সময় ব্যবহার করুন: না
এখন, নির্দেশ পুনর্নির্মাণ।
সংকলক সিদ্ধান্ত নিতে পারে যে f * a + b
এটি একই b + f * a
, তবে এর ভিন্ন ফলাফল হতে পারে। এটি fmadd তেও সংকলন করতে পারে , বা এটি একসাথে ঘটে যাওয়ার মতো একাধিক লাইন নিয়ে সিদ্ধান্ত নিতে পারে এবং সিমড দিয়ে এগুলি লিখতে পারে , বা অন্য কোনও অপ্টিমাইজেশন আমি এই মুহূর্তে ভাবতে পারি না। এবং মনে রাখবেন আমরা একই ক্রমানুসারে একই ক্রিয়াকলাপ ঘটতে চাই, এটি কারণ হিসাবে আসে যে আমরা কী অপারেশনগুলি ঘটে তা নিয়ন্ত্রণ করতে চাই।
এবং না, ডাবল ব্যবহার করা আপনাকে বাঁচায় না।
নেটওয়ার্ক জুড়ে বিশেষত ভাসমান পয়েন্ট সংখ্যাগুলি সিঙ্ক্রোনাইজ করার জন্য আপনাকে সংকলক এবং এর কনফিগারেশন সম্পর্কে চিন্তা করতে হবে। একই জিনিসটি করতে সম্মত হওয়ার জন্য আপনার বিল্ডগুলি নেওয়া দরকার।
যুক্তিযুক্তভাবে, রচনা সমাবেশ আদর্শ হবে। এই পদ্ধতিতে আপনি সিদ্ধান্ত নিন কী অপারেশন করবেন। তবে একাধিক প্ল্যাটফর্ম সমর্থন করার ক্ষেত্রে এটি সমস্যা হতে পারে।
এভাবে:
নির্দিষ্ট পয়েন্ট সংখ্যাগুলির ক্ষেত্রে case
স্মৃতিতে ভাসমান উপস্থাপিত হওয়ার কারণে, বড় মানগুলি যথাযথতা হারাতে চলেছে। এটি আসতে পারে যে আপনার মানগুলি ছোট (বাতা) রাখা সমস্যাটি প্রশমিত করে। সুতরাং, বিশাল গতি নেই এবং বড় কক্ষ নেই। যার অর্থ হ'ল আপনি আলাদা পদার্থবিজ্ঞান ব্যবহার করতে পারেন কারণ আপনার টানেলিংয়ের ঝুঁকি কম।
অন্যদিকে, ছোট ত্রুটিগুলি জমা হবে। সুতরাং, কাটা। মানে, একটি পূর্ণসংখ্যার প্রকারে স্কেল এবং কাস্ট করা। আপনি জানেন যে কিছুই নির্মাণ করা হয় না। অপারেশন থাকবে যা আপনি পূর্ণসংখ্যার ধরণের সাথে থাকতে পারেন। যখন আপনাকে ফ্লোটিং পয়েন্টে ফিরে যেতে হবে তখন আপনি স্কেলিংটি কাস্ট এবং পূর্বাবস্থায় ফিরিয়ে আনবেন।
নোট আমি স্কেল বলে। ধারণাটি হল যে 1 ইউনিটটি আসলে দুটি হিসাবে শক্তি হিসাবে উপস্থাপিত হবে (উদাহরণস্বরূপ 16384)। যাই হোক না কেন, এটি একটি ধ্রুবক তৈরি করুন এবং এটি ব্যবহার করুন। আপনি মূলত এটি নির্দিষ্ট পয়েন্ট নম্বর হিসাবে ব্যবহার করছেন। আসলে, আপনি যদি কিছু নির্ভরযোগ্য লাইব্রেরি থেকে যথাযথ নির্দিষ্ট পয়েন্ট নম্বর ব্যবহার করতে পারেন use
আমি ছাঁটাই করছি। রাউন্ডিং সমস্যা সম্পর্কে, এর অর্থ আপনি অভিনয়ের পরে যা কিছু মান পেয়েছেন তার শেষ বিটকে বিশ্বাস করতে পারবেন না। সুতরাং, আপনার প্রয়োজনের তুলনায় কাস্ট স্কেলটি আরও কিছুটা পাওয়ার আগে এবং এটি পরে ছাঁটাই করুন।
এভাবে:
- মানগুলি ছোট রাখুন: হ্যাঁ
- যত্নবান গোলাকার: হ্যাঁ
- যখন সম্ভব স্থির পয়েন্ট নম্বর: হ্যাঁ
অপেক্ষা করুন, আপনার কেন ভাসমান পয়েন্ট দরকার? আপনি কি শুধুমাত্র একটি পূর্ণসংখ্যার টাইপ দিয়ে কাজ করতে পারবেন না? হ্যাঁ সঠিক. ত্রিকোণমিতি এবং রেডিকেশন। আপনি ত্রিকোণমিতি এবং রেডিকেশনের জন্য সারণীগুলি গণনা করতে পারেন এবং সেগুলি আপনার উত্সে বেক করতে পারেন। অথবা পরিবর্তে নির্দিষ্ট পয়েন্ট সংখ্যা ব্যবহার না করে আপনি ভাসমান পয়েন্ট সংখ্যাটি গণনা করতে ব্যবহৃত অ্যালগরিদমগুলি প্রয়োগ করতে পারেন। হ্যাঁ, আপনার স্মৃতি, কর্মক্ষমতা এবং যথার্থতার ভারসাম্য বজায় রাখতে হবে। তবুও, আপনি ভাসমান পয়েন্ট সংখ্যাগুলি থেকে দূরে থাকতে পারেন, এবং নির্বিচারবাদী থাকতে পারেন।
আপনি কি জানতেন যে তারা মূল প্লেস্টেশনের জন্য এ জাতীয় জিনিসগুলি করেছে? দয়া করে আমার কুকুর, প্যাচগুলি পূরণ করুন ।
যাইহোক, আমি গ্রাফিক্সের জন্য ভাসমান পয়েন্টটি ব্যবহার না করার জন্য বলছি না। শুধু পদার্থবিজ্ঞানের জন্য। আমি বলতে চাই, অবশ্যই পদগুলি পদার্থবিদ্যার উপর নির্ভর করবে। তবে, আপনি যেমন জানেন যে কোনও সংঘর্ষকারী কোনও মডেলের সাথে মেলে না। আমরা মডেলগুলি কাটা ফলাফল দেখতে চাই না।
সুতরাং: সংশোধিত পয়েন্ট নম্বর ব্যবহার করুন।
পরিষ্কার হয়ে উঠতে, আপনি যদি এমন একটি সংকলক ব্যবহার করতে পারেন যা আপনাকে ভাসমান পয়েন্টগুলি কীভাবে কাজ করে তা নির্দিষ্ট করতে দেয় এবং এটি আপনার পক্ষে যথেষ্ট, তবে আপনি এটি করতে পারেন। এটি সর্বদা একটি বিকল্প নয়। তদ্ব্যতীত, আমরা নির্ধারণের জন্য এটি করছি। স্থির পয়েন্ট সংখ্যাগুলির অর্থ এই নয় যে কোনও ত্রুটি নেই, সর্বোপরি তাদের সীমিত নির্ভুলতা রয়েছে।
আমি মনে করি না যে "ফিক্সড পয়েন্ট নম্বর হার্ড" তাদের ব্যবহার না করার একটি ভাল কারণ। এবং যদি আপনি এগুলি ব্যবহারের কোনও ভাল কারণ চান, তবে এটি হ'ল স্থায়িত্ববাদ, বিশেষত প্ল্যাটফর্মগুলির জুড়ে নির্ধারণবাদ।
আরো দেখুন:
সংযোজন : আমি বিশ্বের আকার ছোট রাখার পরামর্শ দিচ্ছি। এই কথাটি বলেই, উভয় ওপিস উত্তর জিব্ব স্মার্ট এই বিষয়টি তুলে ধরেছে যে মূল ভাসমানগুলি থেকে দূরে সরে যাওয়ার ক্ষেত্রে কম নির্ভুলতা রয়েছে। এটি পদার্থবিজ্ঞানের উপর প্রভাব ফেলবে, এটি পৃথিবীর প্রান্তের চেয়ে অনেক আগে দেখা যাবে। স্থির পয়েন্ট সংখ্যা, ভাল, স্থির যথাযথতা আছে, সেগুলি সর্বত্র সমানভাবে ভাল (বা খারাপ, যদি আপনি পছন্দ করেন) হবে। আমরা যদি সিদ্ধান্ত নিতে চাই তবে ভাল। আমি আরও উল্লেখ করতে চাই যে আমরা সাধারণত পদার্থবিজ্ঞানের যেভাবে করি তা ক্ষুদ্র প্রকরণকে প্রশস্ত করার বৈশিষ্ট্যযুক্ত। দেখুন দ্য অবিশ্বাস্য মেশিন এবং contraption Maker এ নির্ণায়ক পদার্থবিদ্যা - প্রজাপতি প্রভাব ।
পদার্থবিজ্ঞান করার আরেকটি উপায়
আমি ভাবছিলাম, ভাসমান পয়েন্ট সংখ্যাগুলিকে প্রশস্ত করতে সংক্ষিপ্ত আকারে ছোট ত্রুটি কারণ আমরা সেই সংখ্যায় পুনরাবৃত্তি করছি। প্রতিটি সিমুলেশন পদক্ষেপ আমরা শেষ সিমুলেশন পদক্ষেপের ফলাফল গ্রহণ করি এবং সেগুলিতে স্টাফ করি। ত্রুটিগুলির শীর্ষে ত্রুটিগুলি জমা করা। এটি আপনার প্রজাপতি প্রভাব।
আমি মনে করি না যে আমরা একই মেশিনে একটি থ্রেড ব্যবহার করে একটি একক বিল্ড দেখতে পাব একই ইনপুট দ্বারা বিভিন্ন আউটপুট দেয়। তবুও, অন্য মেশিনে এটি পারে, বা অন্য একটি বিল্ড পারে could
সেখানে পরীক্ষা করার পক্ষে যুক্তি রয়েছে। কীভাবে জিনিসগুলি ঠিক কীভাবে কাজ করা উচিত তা যদি আমরা স্থির করি এবং আমরা লক্ষ্যবস্তু হার্ডওয়্যারটি পরীক্ষা করতে পারি, তবে আমাদের অন্যরকম আচরণ করা উচিত নয় different
তবে দূরে কাজ না করার পক্ষে যুক্তিও রয়েছে যা এত ত্রুটি জমে। সম্ভবত এটি একটি ভিন্ন উপায়ে পদার্থবিজ্ঞান করার সুযোগ।
আপনি জানেন যে, অবিচ্ছিন্ন এবং পৃথক পদার্থবিজ্ঞান রয়েছে, উভয়ই প্রতিটি বস্তুর টাইমস্টেপে কত অগ্রসর হবে তা নিয়ে কাজ করে। যাইহোক, অবিচ্ছিন্ন পদার্থবিজ্ঞানের সংঘর্ষ হয়েছে কিনা তা দেখার জন্য বিভিন্ন সম্ভাব্য তাত্ক্ষণিক তদন্তের পরিবর্তে সংঘর্ষের তাত্ক্ষণিক চিত্র বের করার উপায় রয়েছে has
সুতরাং, আমি নিম্নলিখিতগুলি প্রস্তাব করছি: প্রতিটি বস্তুর পরবর্তী সংঘর্ষ কখন ঘটবে, তা বোঝার জন্য অবিচ্ছিন্ন পদার্থবিজ্ঞানের কৌশলগুলি ব্যবহার করুন, একটি বড় টাইমস্টেপ সহ, একক সিমুলেশন পদক্ষেপের এটির চেয়ে অনেক বড়। তারপরে আপনি নিকটতম সংঘর্ষের তাত্ক্ষণিকভাবে নেবেন এবং খুঁজে বের করুন যে তাত্ক্ষণিক সময়ে সবকিছু কী হবে।
হ্যাঁ, এটি একটি একক সিমুলেশন পদক্ষেপের অনেক কাজ। তার মানে যে সিমুলেশন তাত্ক্ষণিকভাবে শুরু হবে না ...
... তবে আপনি প্রতিবার সংঘর্ষ পরীক্ষা না করেই পরবর্তী কয়েকটি সিমুলেশন পদক্ষেপগুলি অনুকরণ করতে পারেন, কারণ আপনি ইতিমধ্যে জানেন যে পরবর্তী সংঘর্ষ কখন ঘটবে (বা বড় টাইমস্টেপে কোনও সংঘর্ষ ঘটবে না)। তদ্ব্যতীত, সিমুলেশনে জমা হওয়া ত্রুটিগুলি অপ্রাসঙ্গিক কারণ একবার সিমুলেশন বড় টাইমস্টেপে পৌঁছে গেলে আমরা কেবল আগেই গণনা করা অবস্থানগুলি রাখি।
এখন, আমরা যে সময় বাজেটটি ব্যবহার করেছি আমরা প্রতিটি সিমুলেশন ধাপে সংঘর্ষের জন্য যাচাই করতাম যা আমরা খুঁজে পেয়েছিলাম তার পরের সংঘর্ষের গণনা করতে। এটিই আমরা বড় টাইমস্টেপ ব্যবহার করে সামনে অনুকরণ করতে পারি। সুযোগসীমাবদ্ধ একটি বিশ্বকে ধরে নিলে (এটি বিশাল গেমগুলির জন্য কার্যকর হবে না), সিমুলেশনের জন্য ভবিষ্যতের রাজ্যের একটি সারি থাকতে হবে এবং তারপরে প্রতিটি ফ্রেম আপনাকে কেবল সর্বশেষ অবস্থা থেকে পরের দিকে বিভক্ত করবে।
আমি বিরক্তি জন্য তর্ক করব। যাইহোক, ত্বরণ আছে যেহেতু, আমরা সহজভাবে সমস্তভাবে একইভাবে বিভক্ত করতে পারি না। পরিবর্তে আমাদের প্রতিটি বস্তুর ত্বরণকে বিবেচনায় নিয়ে বিভাজন করতে হবে। সেই ক্ষেত্রে আমরা বৃহত টাইমস্টেপের জন্য আমরা ঠিক একইভাবে অবস্থান আপডেট করতে পারি (যার অর্থ এটিও কম ত্রুটিযুক্ত কারণ আমরা একই আন্দোলনের জন্য দুটি পৃথক বাস্তবায়ন ব্যবহার করব না)।
দ্রষ্টব্য : আমরা যদি এই ফ্লোটিং পয়েন্ট সংখ্যাগুলি করে থাকি তবে এই পদ্ধতির ফলে তারা যে উত্সটি রয়েছে তার থেকে দূরে দূরে আচরণ করে এমন বস্তুর সমস্যা সমাধান করে না। যাইহোক, এটি সত্য যে আপনি সূত্র থেকে আরও দূরে যেতে গিয়ে যথার্থতা হারাতে বসেছে, এটি এখনও নির্বিচারবাদী। আসলে, যে কারণে এমনকি এটি মূলত উত্থাপিত হয়নি।
অভিযোজ্য বস্তু
মন্তব্যে ওপি থেকে :
ধারণাটি হল প্লেয়াররা তাদের মেশিনগুলিকে কিছু ফর্ম্যাটে (যেমন এক্সএমএল বা জসন) সংরক্ষণ করতে সক্ষম হবে, যাতে প্রতিটি টুকরো অবস্থান এবং ঘূর্ণন রেকর্ড করা যায়। সেই এক্সএমএল বা জেসন ফাইলটি অন্য প্লেয়ারের কম্পিউটারে মেশিনটি পুনরুত্পাদন করতে ব্যবহৃত হবে।
সুতরাং, কোন বাইনারি বিন্যাস, তাই না? এর অর্থ আমাদের যে ভাসমান পয়েন্ট নম্বরগুলি উদ্ধৃত হয়েছে তা মূলটির সাথে মিলছে কিনা তাও আমাদের চিন্তা করতে হবে। দেখুন: ফ্লোট যথার্থ পুনর্বিবেচনা: নয় ডিজিটের ফ্লোট বহনযোগ্যতা