দুটি পয়েন্ট দিয়ে আয়তক্ষেত্র সংজ্ঞায়িত করার পেছনের ধারণা কী? [বন্ধ]


14

এটি যে এটি বোঝায় না তা নয়, তবে এটি সময়ের বিশ্রী 99% কাজ করে।

প্রায়শই 2 ডি গ্রাফিক্সে আয়তক্ষেত্রগুলি সূচনা হয়, সঞ্চিত থাকে এবং পয়েন্টের জোড় হিসাবে হেরফের হয়। কোন বিশেষ ভাষায়,

class Rect:
   p1, p2: point

এটি একটি আয়তক্ষেত্রটিকে দুটি এক্স মান এবং দুটি y মান হিসাবে সংজ্ঞায়িত করতে আরও অর্থবোধ করে:

class Rect
   xleft, xright: int
   ytop, ybottom: int

দুটি পয়েন্ট সহ, যদি সোর্স কোডের কোনও স্থানে আপনি শীর্ষের y মানটি ব্যবহার করতে চান তবে আপনাকে rect.p1.y বলতে হবে (হুঁ, থামুন এবং ভাবুন, এটি কি পি 1 বা পি 2) তবে প্লেইন ডেটা সদস্য হিসাবে চারটি মান সহ, এটি স্পষ্ট এবং প্রত্যক্ষ: rect.ytop (কোনও চিন্তাভাবনার প্রয়োজন নেই!) দুটি পয়েন্ট ব্যবহারের অর্থ দাঁড়াচ্ছে যে উল্লম্ব সাথে কাজ করার ক্ষেত্রে আপনাকে অনুভূমিককে জটলাতে হবে; অব্যক্ত উপাদানগুলির মধ্যে একটি বহিরাগত সম্পর্ক রয়েছে।

এই দ্বি-দফা ধারণাটি কীভাবে এসেছিল এবং কেন এটি অবিরত থাকে? খালি x এবং y স্থানাঙ্কের মাধ্যমে এর কিছু সুবিধা রয়েছে কি?

সংযুক্ত নোট: এই প্রশ্নটি এক্সওয়াই সারিবদ্ধ আয়তক্ষেত্রের প্রসঙ্গে, যেমন উইন্ডোজ ম্যানেজার এবং জিইউআই টুলকিটগুলিতে, অঙ্কন এবং পেইন্টিং অ্যাপ্লিকেশনটিতে স্বেচ্ছাসেবী আকারের প্রসঙ্গে নয়।


8
আপনি কি রেট ব্যবহার করে প্রচুর পরিমাণে কোড লিখেছেন?

6
একটি আয়তক্ষেত্র দুটি পয়েন্ট দ্বারা সংজ্ঞায়িত করা হয়, সুতরাং তাদের দুটি পয়েন্ট হিসাবে উপস্থাপন করা অনেক অর্থবোধ করে।
অ্যাডাম ক্রসল্যান্ড

2
একটি আয়তক্ষেত্রটি আরও প্রাকৃতিকভাবে এক্স মানগুলির ব্যাপ্তি এবং y মানের একটি সীমা হিসাবে সংজ্ঞায়িত হয়।
DarenW

2
দুর্দান্ত প্রশ্ন! আমি নিজেই এ সম্পর্কে কখনই ভাবিনি, তবে আপনি একটি আকর্ষণীয় যুক্তি তৈরি করেন! এফডাব্লুআইডাব্লু, উইন্ডোজের একটি আরইসিটি রয়েছে যেমন আপনিও বর্ণনা করেছেন (উপরে, বাম, নীচে, ডান)
ডিন হার্ডিং

3
আপনি দুটি পয়েন্ট সহ একটি আয়তক্ষেত্রকে কীভাবে সংজ্ঞায়িত করবেন? এটা কি কোন ঘূর্ণন আছে বলে ধরে নেওয়া হয়?
নিক টি 4

উত্তর:


8

আপনি কি ভেবে দেখেছেন যে এটি কম ত্রুটিযুক্ত?

আপনি যদি (পয়েন্ট 1, পয়েন্ট 2) ব্যবহার করেন তবে এটি আপনি কী নির্দিষ্ট করছেন তা খুব পরিষ্কার। আপনি যদি 2 পয়েন্ট সরবরাহ করেন তবে একমাত্র সম্ভাব্য ত্রুটিটি হ'ল পয়েন্টগুলির ক্রম বিবেচনা না করে পয়েন্টগুলি বানানোর সময় ব্যবহারকারী তাদের x এবং y মিশিয়ে দিয়েছে।

আপনি যদি 4 টি পূর্ণসংখ্যার সরবরাহ করেন তবে যদি কেউ মনোযোগ না দেয় তবে তারা (x1, y1, x2, y2) বা তদ্বিপরীতভাবে যখন সরবরাহ করতে পারে (x1, x2, y1, y2) সরবরাহ করতে পারে। এছাড়াও, ডাব্লুসিএফ এর রেক্ট স্ট্রাকচারের মতো কিছু এপিআই একটি আয়তক্ষেত্রকে (x, y, প্রস্থ, উচ্চতা) হিসাবে সংজ্ঞায়িত করে যা এরপরে (1, 2, 3, 4) এর অর্থ কী তা নিয়ে বিভ্রান্তি সৃষ্টি করতে পারে। তা কি (x, y, w, h) বা (x1, y1, x2, y2) বা (x1, x2, y1, y2)?

সব মিলিয়ে (পয়েন্ট 1, পয়েন্ট 2) আমার কাছে কিছুটা নিরাপদ বলে মনে হচ্ছে।


3
র‌্যাক্ট (এক্সরেঞ্জ (এক্স 1, এক্স 2), ইরেঞ্জ (y1, y2) এর মতো কী সম্পর্কে? এটি API ব্যবহারের সুরক্ষা এবং কমনীয়তায় চূড়ান্ত বলে মনে হচ্ছে।
DarenW

9

আমি সর্বদা পয়েন্ট + প্রস্থ এবং উচ্চতা হিসাবে একটি আয়তক্ষেত্রটি সংজ্ঞায়িত করতে পছন্দ করি, যেখানে পয়েন্টটি আয়তক্ষেত্রের উপরের-বাম কোণ।

class Rect {
  float x, y;
  float width, height;
}

এবং তারপরে অন্যান্য ম্যাট্রিকগুলি আনার জন্য আপনার যা প্রয়োজন পদ্ধতি যুক্ত করুন। জাভা সংস্করণ পছন্দ করুন


4
শীর্ষ y + উচ্চতা, y- উচ্চতা বা ঠিক y?
ক্যামেরন ম্যাকফারল্যান্ড

2
@ ক্যামেরন ম্যাকফারল্যান্ড: এটি অ্যাপ্লিকেশনটির সমন্বিত সিস্টেমের উপর নির্ভর করে, যা নিম্ন আয়তক্ষেত্রের উদ্বেগ নয়।
জন পুর্ডি

2
@ মার্টিন উইকম্যান: ২ পয়েন্ট ব্যবহারের সুবিধা কী?
ক্রামি

@ ক্রমি: একটি সুবিধা হ'ল আপনি যদি পুরো রেক্টটি সরিয়ে নিচ্ছেন তবে কেবলমাত্র একটি পয়েন্ট অনুবাদ করতে হবে। বিটিডব্লিউ, আপনার প্রয়োজন হলে আপনি সর্বদা "মিসিং পয়েন্ট" গণনা করতে পারেন (সিপিইউ / মেমরি ট্রেড অফ)।
মার্টিন উইকম্যান

এটিও বাস্তব জীবনে উপস্থিত হয়। আমি এটি জটিল বলে মনে করি যে আমি আয়তক্ষেত্রগুলি দিয়ে সবচেয়ে সাধারণ জিনিসগুলির মধ্যে একটি পরীক্ষা করি যদি কোনও বিন্দুর মধ্যে থাকে। অঙ্কনও সাধারণ। উভয় ক্ষেত্রে সংযোজন করা দরকার, যা আমার মতো উচ্চতর পারফরম্যান্স ক্লক সাইকেল কাউন্টারকে বিরক্ত করে।
DarenW

7

আসলে, একটি আয়তক্ষেত্র 2 পয়েন্ট দ্বারা সংজ্ঞায়িত করা হয় না। অক্ষের সমান্তরাল হলে একটি আয়তক্ষেত্রটি কেবল দুটি পয়েন্ট দ্বারা সংজ্ঞায়িত করা যায়।

অক্ষগুলির সমান্তরাল আয়তক্ষেত্রগুলি উপস্থাপনের বিভিন্ন উপায় রয়েছে:

  1. দুটি তির্যক বিপরীত পয়েন্ট
  2. এক কোণার পয়েন্ট, উচ্চতা এবং প্রস্থ
  3. কেন্দ্র বিন্দু, অর্ধেক উচ্চতা এবং প্রস্থ (অস্বাভাবিক, তবে কখনও কখনও দরকারী)।
  4. দুটি এক্স সমন্বয়কারী এবং দুটি ওয়াই স্থানাঙ্ক হিসাবে

(1) এর জন্য, অনেক লাইব্রেরি কোন দুটি পয়েন্ট ব্যবহৃত হয় তা নির্ধারণের জন্য একটি কনভেনশন ব্যবহার করে - উদাহরণস্বরূপ টপ লেফট এবং ডাউনরাইট।

উপস্থাপনের পছন্দটি আয়তক্ষেত্র সংজ্ঞাটির মূল উদ্দেশ্য দ্বারা চালিত হতে পারে তবে আমি কল্পনা করি যে এটি প্রায়শই স্বেচ্ছাসেবী হয় । উপস্থাপনাগুলি তারা বহন করে এমন তথ্যের সমতুল্য। তবে এগুলি যে আয়তক্ষেত্রের বৈশিষ্ট্য গণনা করা যেতে পারে এবং যে সুবিধা দিয়ে আয়তক্ষেত্রের উপর অপারেশন সম্পাদন করা যেতে পারে সেই সুবিধার সাথে আলাদা হয়।

অন্যের তুলনায় সংজ্ঞা (1) এর সুবিধার মধ্যে রয়েছে:

  • অন্যান্য বহুভুজ, লাইন ইত্যাদির সাথে এপিআইয়ের ধারাবাহিকতা
  • শীর্ষ বাম, নীচের অংশে পয়েন্ট গ্রহণ করে যে কোনও পদ্ধতিতে পাস করা যেতে পারে
  • টপলাইফ্ট, ডাউনরাইটে পয়েন্ট শ্রেণির পদ্ধতিগুলি কল করা যেতে পারে
  • বেশিরভাগ বৈশিষ্ট্য সহজেই উত্পন্ন করা যায়, যেমন। বামফুট, শীর্ষস্থান, প্রস্থ, উচ্চতা, কেন্দ্র, তির্যক দৈর্ঘ্য ইত্যাদি etc.

6

ভাল p1: Pointএবং p2: Pointপ্রতিটি কি তাদের যে কোনও উপায়ে দুটি intসমন্বয় করতে চলেছে তাই আপনার ক্লাসের পরিমাণ একই জিনিস হয় না?

এবং যদি আপনি এই দুটি পয়েন্টটি প্রথম শ্রেণীর Pointঅবজেক্ট হিসাবে সঞ্চয় করেন তবে সেগুলি থেকে আপনি কি আরও কিছু উপযোগিতা পান না? আমি জানি যে বেশিরভাগ গ্রাফিকাল সমন্বয় সিস্টেমগুলিতে, পয়েন্টগুলি অবজেক্টের শ্রেণিবিন্যাস তৈরি করার জন্য এইভাবে সাবক্লাস করা হয়: point -> circle -> ellipseইত্যাদি।

সুতরাং আপনি যদি এমন কোনও বস্তু তৈরি করেন যা Pointক্লাসটি ব্যবহার করে না , আপনি সেই বিষয়টিকে বাকী শ্রেণি শ্রেণিবিন্যাস থেকে বিবাহবিচ্ছেদ করেছেন।


1
ওপির প্রতিনিধিত্বের যে সুবিধাটি আমি দেখছি তা হ'ল আপনি যদি কোনও আয়তক্ষেত্রের নিম্ন y মান জানতে চান তবে আপনি এটি "ybottom" জানেন, যেখানে p1 / p2 এর মতো আপনার কোনটি কম তা নির্ধারণ করতে হবে। এটি হ'ল যদি আপনি গ্যারান্টি না দেন তবে যে কোনওভাবে পি 1 নিম্ন মানের হবে।
জেসন ভাইয়ার্স

1
যদিও এটি সত্য যে দুটি পৃথক স্ট্রোক উভয়ই চারটি স্থানাঙ্কের মধ্যে সিদ্ধ হয়, দ্বি-পয়েন্ট সংস্করণে একটি এক্সেরেনিয়াস স্তরকে পরিচয় করিয়ে দেয় যা এক x এবং এক y জোগাড় করে, কোনও নির্দিষ্ট যুক্তি নেই যার সাথে এক্স কোন y এর সাথে যায় goes বহু বছর ধরে গ্রাফিক্স প্রোগ্রামিংয়ের পরে যে কোনও ইউটিলিটি সরবরাহ করার জন্য আমি এই অতিরিক্ত স্তরটি দেখছি না।
ড্যারেনডাব্লু

1
@ জেসন: ভালো কথা। সঙ্গে ytop/ ybottomপদ্ধতির, যদিও, এছাড়াও আছে একটি গ্যারান্টি কোথাও যে হতে করতে হবে ybottomআসলে নিচে ytop
ডঃ উইলির অ্যাপ্রেন্টিস

অথবা 'এম y1 এবং y2' কল করুন এবং কমপক্ষে (y1, y2) এবং সর্বাধিক (y1, y2) ব্যবহার করুন - অবশ্যই এটি দুটি পয়েন্ট পি 1, পি 2 এর মাধ্যমে অ্যাক্সেসের চেয়েও ক্ল্যামিয়ার হবে।
DarenW

শীর্ষ / নীচের নামকরণ আপনাকে কিছুই কিনে না কারণ কিছুটা বটেক্সকে <টপেক্স প্রতিরোধ করে না, যদি না আপনি নির্দিষ্টভাবে এর জন্য কোড করেন। আমি মনে করি এটি কেবল বিভ্রান্তি যুক্ত করবে।
lkg

5

এই কারণেই আমি ডেলফির পছন্দ করি TRect। এটি একটি বৈকল্পিক রেকর্ড হিসাবে সংজ্ঞায়িত হয়েছে (সি-স্পোকের ইউনিয়ন কাঠামো) যা টপলাইট এবং একটি বটমরাইট পয়েন্ট হিসাবে বা টপ, বাম, নীচে এবং ডান সংখ্যক, যা এই মুহূর্তে আরও সুবিধাজনক হিসাবে ব্যাখ্যা করা যেতে পারে।


1
হ্যাঁ, খুব দরকারী বৈশিষ্ট্য যে।
Orbling

4

অবশ্যই আপনি যদি আপনার আয়তক্ষেত্রটিকে এই হিসাবে সংজ্ঞায়িত করেন:

class Rect
{
    Point bottomLeft;
    Point topRight;
}

তাহলে আপনি সরাসরি তা জানতে পারবেন কোনটি কোনটি।

এর চেয়ে আরও ভাল হবে অতিরিক্ত বৈশিষ্ট্য যুক্ত করা যা আপনাকে আপনার আবেদনের জন্য যে উপায়ে আপনার প্রয়োজন হবে সেই আয়তক্ষেত্রটি ম্যানিপুলেট করার অনুমতি দেয়। এগুলি কেবল অন্তর্নিহিত ডেটা কাঠামো আপডেট করবে।

আকৃতিতে একটি রূপান্তর যুক্ত করে আপনি আপনার আয়তক্ষেত্রটি যে কোনও উপায়ে পছন্দ করতে পারেন। চেকগুলি দ্রুত গ্রহণ / প্রত্যাখ্যান করার জন্য আপনার এখনও একটি অক্ষ সারিবদ্ধ বাউন্ডিং বাক্সের প্রয়োজন হবে :)

যাইহোক, যদি আপনার মডেল কোনও রূপান্তর প্রয়োগ না করে কোনও দিকনির্দেশে আয়তক্ষেত্রের অনুমতি দেয় তবে "নীচে বাম" এবং "শীর্ষে ডান" এর কোনও অর্থ নেই, যা "পি 1" এবং "পি 2" (বা সমতুল্য কিছু) এ ফিরে যায়।


সুতরাং আপনি যখন 90 ডিগ্রি দ্বারা আয়তক্ষেত্রটি ঘোরেন তখন কী হবে? আপনি এখন প্রথম দিকের চেয়ে দুটি পৃথক পয়েন্ট অনুসরণ করছেন, বা আপনার "টপ রাইট" এখন "নীচে বাম" এর বাম দিকে?
ইনাইমথি

@ আইনাথী - আপনি যদি রূপান্তর ম্যাট্রিক্স যুক্ত করেন তবে আপনি আয়তক্ষেত্রটি অক্ষের সাথে স্থিত রাখতে পারেন। তবে এটি আপনার আবেদনের উপর নির্ভর করে।
ক্রিসএফ

2

আমি মনে করি যে এটি একটি আয়তক্ষেত্রকে x এবং y পরিমাণ এবং একটি বিন্দু দ্বারা উপস্থাপিত করার জন্য আরও অর্থবোধ করে; এমনকি আপনি অবস্থান পয়েন্টটিকে আয়তক্ষেত্রের কেন্দ্রবিন্দু করতে পারেন যাতে এটি ঘোরার থেকে পৃথক হয়

তবে এটি দুটি পয়েন্ট হিসাবে কোড করা সম্ভবত সবচেয়ে সহজ ছিল!


কীভাবে দুটি পয়েন্ট হিসাবে কোড করা সহজ হবে?
ড্যারেনডাব্লু

@ ডেরেমডাব্লু: সাধারণ অঙ্কন-আয়তক্ষেত্রের গ্রন্থাগার ফাংশনগুলি আর্গুমেন্ট হিসাবে উপরের-বাম এবং নীচের-ডান পয়েন্টগুলিকে নিয়ে যায়
স্টিভেন এ। লো

তবে কেন সেই API গুলি এমনভাবে ডিজাইন করা হয়েছে? নির্বোধভাবে পূর্ববর্তী লাইব্রেরিগুলি অনুকরণ করার পাশাপাশি, এটি।
DarenW

@ ড্যারেনডাব্লু: আমার ধারণা হবে যে গ্রন্থাগারগুলি একটি ব্রেসেনহ্যাম লাইন অঙ্কন রুটিন ব্যবহার করে, যা ইনপুট হিসাবে দুটি পয়েন্ট নেয় এবং খুব দক্ষ
স্টিভেন এ। লোয়ে

2

আমি এটি পছন্দ করি না কারণ আমরা একটি সম্ভাব্য স্বাধীনতার ডিগ্রি ছুঁড়ে দিয়েছি, যা মূলত একটি স্বেচ্ছাচারী ঘূর্ণনের অনুমতি দেয়। একটি সাধারণ 2 ডি আয়তক্ষেত্রের পাঁচটি অজানা (স্বাধীনতার ডিগ্রি) থাকে। আমরা এগুলিকে একটি বিন্দুর স্থানাঙ্ক হিসাবে নির্দিষ্ট করতে পারি, উভয় পক্ষের দৈর্ঘ্য যা এই বিন্দু দিয়ে একটি শীর্ষবিন্দু গঠন করে এবং প্রথম লাইনের অনুভূমিক থেকে কোণটি (অন্যটি 90 ডিগ্রি এর চেয়ে বেশি কোণে অনুমান করা হয়)। অন্যান্য সম্ভাবনার একটি অসীম সংখ্যাও ব্যবহার করা যেতে পারে, তবে পাঁচটি স্বতন্ত্র পরিমাণ রয়েছে যা নির্দিষ্ট করতে হবে। কিছু পছন্দ অন্যদের তুলনায় সহজ বীজগণিতের দিকে নিয়ে যায়, তাদের সাথে কী করা হয় তার উপর নির্ভর করে।


5
এটি উপলব্ধি করা গুরুত্বপূর্ণ যে একটি "স্ট্যান্ডার্ড" আয়তক্ষেত্র কাঠামোটি কঠোরভাবে সংজ্ঞায়িত গাণিতিক আয়তক্ষেত্র নয়, তবে একটি সরল সংস্করণ যা সর্বদা এক্স এবং ওয়াইয়ের অক্ষের সমান্তরাল, কারণ এটি একটি খুব নির্দিষ্ট জিনিসের জন্য ব্যবহার করার জন্য তৈরি করা হয়েছিল: আয়তক্ষেত্রাকার অঞ্চল নির্ধারণ করা একটি উইন্ডো ম্যানেজারের জন্য, যা সর্বদা এক্স এবং ওয়াই অক্ষের সমান্তরাল হয়।
ম্যাসন হুইলার 0

+1, বাম / ডান / উপরে / নীচের কাঠামোটি প্রাইসড রয়েছে, এবং তাই কম তথ্য রয়েছে
জাভিয়ের

শুভ পয়েন্ট, Xy প্রান্তিককৃত আয়তক্ষেত্র সম্পর্কে। আমার মনে ছিল, এবং 3 ডি মডেলিং এবং অন্যান্য কিছু জিনিস হিসাবে ব্যবহৃত হিসাবে extents, কিন্তু সমস্ত xy (সম্ভবত এছাড়াও -z) সারিবদ্ধ হয়েছে।
DarenW

1

2 পয়েন্ট হিসাবে ঠিক একই জিনিস না? এটি কীভাবে বিশ্রী ... বেশিরভাগ অঙ্কনের রুটিনগুলিতে পয়েন্ট প্রয়োজন, পৃথক এক্স / ওয়াই উপাদান নয়।


1

পয়েন্ট জোড়া হিসাবে আয়তক্ষেত্রগুলি সংজ্ঞায়িত করা আপনাকে বিন্দুটিকে অন্য আকারের একটি শীর্ষবিন্দু হিসাবে পুনরায় ব্যবহার করতে দেয়। শুধু একটি ভাবনা...


তবে মনে হয় এটি অর্ধেক ডেকের সাথে খেলছে, চার কোণার আকৃতিটি সংজ্ঞায়িত করতে কেবল দুটি পয়েন্ট রাখতে হবে। আপনার যদি শীর্ষ-বাম, শীতল প্রয়োজন হয় তবে আপনার যদি ডানদিকের ডানদিকের প্রয়োজন হয়, তুলনামূলকভাবে বলতে গেলে আপনাকে কিছু অভিনব ডেটা গ্র্যাব করতে হবে।
DarenW

যদি এমন কোনও অ্যাক্সেসর থাকে যা পয়েন্ট এএক্স পয়েন্ট বিওয়াই এবং পয়েন্ট বিএক্স পয়েন্ট এওয়াই হিসাবে সংজ্ঞায়িত করা হয় তবে এটি স্মৃতিতে হালকা করে তোলে / ডিস্কে আমি মনে করি অনেকগুলি ভার্চেসে অর্ধেক সংরক্ষণ করতে পারি এবং কেবল সেগুলিতে নির্দেশ করব (সর্বোচ্চ গ্রিডের আকারের উপর নির্ভর করে)। আমি যেখানে আপনি নিজের পরিসীমা চিন্তার সাথে চলেছেন সেখানে পৌঁছেছেন, তবে আপনি অর্ধেক ডেকের সাথে খেলছেন না, আপনি কেবল নকল তথ্য সংরক্ষণ করছেন না .... এবং অন্যান্য পয়েন্টগুলি কী স্মরণীয় বাধা আছে? সমস্ত আন্তঃসংযুক্ত কোডে পুনর্নির্মাণের পুনরায় প্রয়োগের প্রভাবগুলি কীভাবে পুনরায় প্রয়োগ করতে হবে।
রোবটহুমানস

এবং যেহেতু আপনাকে প্রথম দুটি ভার্টেক্সগুলি স্মৃতি থেকে বের করতে কোনও "কাজ" করতে হবে না, এটি সম্ভবত দ্রুত
রোবটহুমানস

1

আমি বিশ্বাস করি এটি মূলত সমস্ত আকারের আদিমদের মধ্যে অভিন্নতা প্রতিষ্ঠা করা।

নিশ্চিতভাবেই আপনি আয়তক্ষেত্রটি অনেকগুলি বিভিন্ন উপায়ে সংজ্ঞায়িত করতে পারেন তবে আপনি কীভাবে ত্রিভুজ বা একটি তারা বা একটি বৃত্তটিকে এমনভাবে সংজ্ঞায়িত করতে পারেন যা অনুরূপ ডাটা স্ট্রাকচার ব্যবহার করতে পারে?

সমস্ত বহুভুজগুলি তাদের পয়েন্টগুলি দ্বারা সংজ্ঞায়িত করা যেতে পারে, পয়েন্টগুলির সাথে কী করবেন তা নির্ধারণ করার জন্য অল্প পরিমাণ যুক্তি দিয়ে।

গ্রাফিক্স লাইব্রেরিগুলি মূলত এই বহুভুজগুলিতে শীর্ষে এবং প্রান্তগুলির ক্ষেত্রে পরিচালিত হয়, সুতরাং পয়েন্টগুলি এবং তাদের মধ্যে লাইনগুলি, সমস্ত গণনা এই দুটি বৈশিষ্ট্যগুলিতে কাজ করে, ভাল এবং দিকগুলি, তবে এটি নিজেই কেবল প্রান্তগুলির একটি ফাংশন।


1

দুটি মাত্রায়, একটি নির্দিষ্ট কোণ এবং প্রস্থ এবং উচ্চতা নির্ধারণের চেয়ে দুটি পয়েন্ট হিসাবে একটি আয়তক্ষেত্র সংরক্ষণ করা পরিষ্কার - নেতিবাচক প্রস্থ বা উচ্চতা বিবেচনা করুন বা প্রতিটি বিকল্প অপর থেকে নির্ধারণ করার জন্য প্রয়োজনীয় গণনা বিবেচনা করুন।

পয়েন্ট দ্বারা সংজ্ঞায়িত একটি আয়তক্ষেত্রের আবর্তন সম্পাদন করাও বিন্দু প্লাস প্রস্থ এবং উচ্চতার সাথে সংজ্ঞায়িত করা তুলনায় অনেক সহজ।

আমি ক্লাসের ব্যবহারকারী হিসাবে এই পার্থক্যটিকে গুরুত্বহীন করার জন্য এনক্যাপসুলেশনটি আশা করব।

একটি আয়তক্ষেত্রটি 3 মাত্রায় ভালভাবে সংজ্ঞায়িত করতে তিনটি পয়েন্ট হিসাবে সংজ্ঞায়িত করা উচিত। 4 বা তার বেশি মাত্রায় একটি আয়তক্ষেত্র সংজ্ঞায়িত করার প্রয়োজনীয়তার বিষয়ে আমি সম্পূর্ণরূপে নিশ্চিত নই।


1

এটি সম্পূর্ণ নির্বিচারে। একটি আয়তক্ষেত্র আঁকতে আপনার চার টুকরো তথ্যের প্রয়োজন। লাইব্রেরি ডিজাইনার (গুলি) দুটি পয়েন্ট (প্রতিটি এক্সআই স্থানাংক সহ) এর সাথে প্রতিনিধিত্ব করার সিদ্ধান্ত নিয়েছে, তবে সহজেই এটি এক্স / ওয়াই / ডাব্লু / ঘন্টা বা উপরে / নীচে / বাম / ডান দিয়ে এটি করতে পারত।

আমি মনে করি ওপির আসল প্রশ্নটি হল: কেন এই বিশেষ পছন্দটি করা হয়েছিল?


1

পরামিতিগুলির পছন্দটি কেবল নিম্ন-স্তরের ডিজাইনার / কোডারদের জন্য গুরুত্বপূর্ণ।

উচ্চ-স্তরের ব্যবহারকারীদের কেবল এটি সম্পর্কে চিন্তা করা প্রয়োজন:

  • IsPointInRect
  • ফোন
  • ছেদ (বা ক্লিপিং)
  • হসওভারল্যাপ (ছেদকেন্দ্রের সমান .আরিয়া> 0)
  • ইউনিয়ন (আয়তক্ষেত্রের তালিকায় পরিণত হয়)
  • বিয়োগ (আয়তক্ষেত্রগুলির একটি তালিকা যা একই পয়েন্ট সেটটি উপস্থাপন করে যা আয়ত A তে থাকে তবে আয়ত B তে নয়)
  • রুপান্তর
    • এক্স এবং ওয়াইয়ের শিফট
    • আবর্তন (0, 90, 180, 270)
    • এক্স এবং ওয়াইয়ের স্কেলিং (দ্রষ্টব্য দেখুন)
  • এক্সমিন, এক্সম্যাক্স, ইয়ামিন, ইয়াম্যাক্স, প্রস্থ, উচ্চতা বৈশিষ্ট্যগুলির জন্য সাধারণ বাক্য গঠন যাতে ব্যবহারকারীকে পরামিতিগুলির সঠিক পছন্দটি জানতে না হয়।

দ্রষ্টব্য: স্কেলিং ট্রান্সফর্মের সময় নির্ভুলতার ক্ষয়ক্ষতি হ্রাস করতে, কখনও কখনও দ্বিতীয় রেক্ট শ্রেণি প্রয়োগ করা উপযুক্ত যা ভাসমান-বিন্দু স্থানাঙ্ক ব্যবহার করে, যাতে মধ্যবর্তী ফলাফলগুলি রূপান্তরগুলির ক্রমে যথাযথভাবে সংরক্ষণ করা যায় এবং কেবলমাত্র পূর্ণসংখ্যার সাথে গোল করা যায় শেষ পদক্ষেপ।


0

@ স্টিভেন যেমন বলেছে, আমি মনে করি এটি এক (এক্স, ওয়াই) পয়েন্ট এবং একটি (ডাব্লু, এইচ) আকারের ভেক্টরের ক্ষেত্রে হওয়া উচিত। কারণ এটি একটি অস্পষ্টতার মধ্যে পড়ে সহজ। ধরুন আপনার নীচের ভরাট-আয়তক্ষেত্রটি বিন্দু (0,0) থেকে শুরু হয়েছে।

  012
0 XXX
1 XXX
2 XXX

স্পষ্টতই এর প্রস্থ, উচ্চতা (৩,৩) তবে এটি দ্বিতীয় পয়েন্টটি কী? এটি (2,2) বা (3,3)?

এই অস্পষ্টতা সব ধরণের সমস্যা সৃষ্টি করতে পারে।

আমি হার্ড উপায় বছর পূর্বে শিখেছি যে এটা লাইন হিসাবে গ্রাফিক স্থানাঙ্ক মনে ভালো মধ্যে পিক্সেল, না লাইন হিসাবে পিক্সেল উপর । এইভাবে কোনও অস্পষ্টতা নেই।


2
ম্যাকের মূল কুইকড্র রুটিনগুলি (১৯৮০ এর দশকগুলি) গাণিতিক মডেলটি ব্যবহার করেছিল যা পয়েন্টগুলি সীমিতভাবে ছোট ছিল। পর্দার পয়েন্টগুলি পিক্সেলের মধ্যে থাকে। সুতরাং (3,5) থেকে (10,5) টানা একটি রেখার দৈর্ঘ্য 7 ছিল এবং 7 পিক্সেল দখল করেছে। আজকের স্থানাঙ্কগুলিতে, সেই লাইনের দৈর্ঘ্য 8 হবে
ব্যারি ব্রাউন

@ ব্যারি: এটি উপলব্ধি করা হয়েছে, যেহেতু এটি এক্সওআর প্রচুর ব্যবহার করেছে এবং আপনি যদি একসাথে লাইনগুলি স্ট্রিং করছেন, আপনি চান যে তারা যেখানে মিলবে সেখানে অনুপস্থিত পিক্সেল ছাড়াই সংযোগ স্থাপন করুন। আমি উভয় সমন্বয় ব্যবস্থা বিবেচনা করে বহুভুজগুলি পূরণ করার জন্য একটি সিগগ্রাফ পেপার প্রকাশ করেছি।
মাইক ডুনলাভে

0
Pa(x,y)*-----------------------------------*Pb(x,y)
       |                                   |
       |                                   |
       |                                   |
       |                                   |
       |                                   |
       |                                   |
Pc(x,y)*-----------------------------------*Pd(x,y)

আমরা পিবি এবং পিসি উভয়ই এভাবে সংজ্ঞায়িত করতে পারি:

PB (PD (x) প্র (Y))

এবং

পিসি (প্র (x) এর পি ডি (Y))

তাই প্রতিসমতার কারণে চারটি পয়েন্টই সংজ্ঞায়িত করার দরকার নেই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.