4 পয়েন্ট একটি বর্গ গঠন করে কিনা তা কীভাবে পরীক্ষা করবেন?


35

ধরুন আমার ৪ টি পয়েন্ট রয়েছে (সেগুলি দ্বিমাত্রিক), যা একে অপরের থেকে আলাদা এবং আমি জানতে চাই যে তারা একটি বর্গ গঠন করে কিনা। এটা কিভাবে করতে হবে? (প্রক্রিয়াটি যতটা সম্ভব সহজ হতে দিন।)


3
আমি এটি নিলাম আপনার কি ঘোরানো স্কোয়ারগুলির জন্য অ্যাকাউন্ট দরকার?
মার্টিজন পিটারস

আপনার কাছে বিন্দুগুলির ক্রম সম্পর্কে কোনও তথ্য আছে? অর্থাৎ আপনি বলতে পারবেন যে দুটি পয়েন্ট সংলগ্ন কিনা, বা একটি তির্যক গঠন করবে? (এই তথ্যটি প্রক্রিয়াটি সহজ করতে ব্যবহার করা যেতে পারে)
ড্যানিয়েল বি

1
@ ড্যানিয়েলবি অন্যান্য কোন তথ্য এটি ঠিক যেমন আমার কাছে একটি সাদা কাগজ রয়েছে এবং এলোমেলোভাবে এটিতে 4 পয়েন্ট আঁকুন। তারপর আমি জানতে চাই যে তারা একটি বর্গ গঠন করে কিনা।
মার্শালশি

5
বিশেষত যদি পয়েন্টগুলি ভাসমান পয়েন্ট সংখ্যা হিসাবে প্রতিনিধিত্ব করা হয়, তবে নীচের প্রস্তাবিত যে কোনও তুলনাতে "সহনশীলতা" অনুভূতি অন্তর্ভুক্ত করা দরকারী। ভাসমান পয়েন্ট ক্রিয়াকলাপগুলির ফলাফলের জন্য সঠিক সমতা চেকগুলি ব্যর্থ হতে পারে, এমনকি যখন আমরা মানুষগুলি তাদের "যথেষ্ট পরিমাণে" বিবেচনা করি।
স্টিফান এ। টেরে

এটি হোমওয়ার্ক প্রশ্নের মতো গন্ধযুক্ত। এটি যে কিছু ভুল আছে না। : / whathaveyoutried.com
জিম জি।

উত্তর:


65

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

আপনি যা করতে পারেন তা হল চারটি পয়েন্টের প্রতিটিের মধ্যে দূরত্ব গণনা করা। আপনি যদি নিম্নলিখিতটি সত্য বলে মনে করেন তবে আপনার একটি বর্গক্ষেত্র রয়েছে:

  1. দুটি এবং দুটি বিন্দু রয়েছে যা একে অপরের থেকে দূরত্ব x এবং দুটি এবং দুটি বিন্দু, বি এবং ডি বলে যা একে অপরের থেকে দূরত্ব x ও রয়েছে say

  2. প্রতিটি বিন্দু {A, B, C, D x দুটি পয়েন্টের সমান দূরত্ব যা x দূরে নয়। অর্থ্যাৎ যদি ক সি থেকে x দূরে থাকে তবে তা বি এবং ডি উভয়ের থেকে দূরে থাকবে z

ঘটনাক্রমে, দূরত্বের Z টি এসকিউআরটি (( x ^ 2) / 2) হতে হবে, তবে আপনার এটি নিশ্চিত করার দরকার নেই। 1 এবং 2 শর্ত যদি সত্য হয় তবে আপনার একটি বর্গক্ষেত্র রয়েছে। দ্রষ্টব্য: কিছু লোক বর্গমূলের অদক্ষতা সম্পর্কে উদ্বিগ্ন। আমি বলিনি যে আপনার এই গণনা করা উচিত , আমি কেবল বলেছিলাম যে আপনি যদি করেন তবে আপনি অনুমানযোগ্য ফলাফল পাবেন!

স্কোয়ার বিধিগুলির চিত্রণ

আপনার খালি ন্যূনতম যে কাজটি করতে হবে তা হ'ল একটি বিন্দু বাছাই করা, A বলুন এবং অন্য তিনটি পয়েন্টের প্রত্যেকটির দূরত্ব গণনা করা। আপনি যদি জানতে পারেন যে এ এক বিন্দু থেকে x এবং অন্য দুটি পয়েন্ট থেকে z , তবে আপনাকে কেবল সেই দুটি দুটি পয়েন্ট একে অপরের বিপরীতে পরীক্ষা করা দরকার। যদি তারা একে অপরের থেকেও এক্স হয় তবে আপনার একটি বর্গক্ষেত্র রয়েছে। অর্থাৎ,

  • এবি = জেড
  • এসি = এক্স
  • AD = z

এবি = এডি থেকে বিডি পরীক্ষা করুন:

  • বিডি = এক্স

কেবল নিশ্চিত হওয়ার জন্য, আপনাকে অন্য দিকগুলি পরীক্ষা করতে হবে: বিসি এবং সিডি।

  • বিসি = জেড
  • সিডি = জেড

যেহেতু এসি = বিডি এবং এবি = এডি = বিসি = সিডি, সুতরাং এটি বর্গক্ষেত্র।

পথ ধরে, আপনি যদি আরও দুটি স্বতন্ত্র প্রান্ত দূরত্ব খুঁজে পান তবে চিত্রটি বর্গক্ষেত্র হতে পারে না, তাই আপনি সন্ধান বন্ধ করতে পারেন।


কাজের উদাহরণ বাস্তবায়ন

আমি jsfiddle এ একটি কাজের উদাহরণ তৈরি করেছি ( এখানে দেখুন )। আমার অ্যালগরিদমের ব্যাখ্যাতে, আমি স্বেচ্ছাসেবী বিন্দু A, B, C এবং D. ব্যবহার করি Those এই স্বেচ্ছাচারী পয়েন্টগুলি উদাহরণের মধ্য দিয়ে চলার স্বার্থে একটি নির্দিষ্ট ক্রমে ঘটে। অ্যালগরিদম পয়েন্ট, একটি ভিন্ন আদেশ হয় তবে, এমনকি যদি কাজ করে উদাহরণ অগত্যা তাদের পয়েন্ট একটি ভিন্ন আদেশ হয় যদি কাজ করে না।


এই উত্তরটির উন্নতি করতে দরকারী মন্তব্যের জন্য ধন্যবাদ: meshuai, Blrfl, MSalters এবং বার্ট ভ্যান Ingen Schenau।


19
আপনি এই প্রক্রিয়াটি সংক্ষিপ্ত-সার্কিট করতে পারেন এবং কীভাবে পয়েন্টগুলি তাদের মধ্যকার দূরত্ব পরিমাপ করে এবং যে অনন্য দূরত্বের সন্ধান পেয়েছেন তার সংখ্যা ট্র্যাক করে কীভাবে অর্ডার করা হয় তা নিয়ে চিন্তা করতে পারেন না। একবার আপনি দুইটি ছাড়িয়ে গেলে (জোয়েলের এক্স এবং জেড ) চিত্রটি বর্গক্ষেত্র নয়।
ব্লারফ্লু

3
আরেকটি অপ্টিমাইজেশন হ'ল দূরত্বের পরিবর্তে স্কোয়ারযুক্ত দূরত্বের তুলনা করা।
ওয়াঘানড্রয়েড

4
@ ব্লারফ্ল: আপনার পরীক্ষা কার্যকর হয় না। এবিসিডি-কে এবি = বিসি = সিডি = ডিএ = 1, এসি = 1 টি (সংক্ষিপ্ত তির্যক) সহ একটি হীরা হতে দিন, তবে AD ~ 1.7 (দীর্ঘ তির্যক) / আপনার কেবল দুটি দৈর্ঘ্য x এবং z রয়েছে, তবে চিত্রটি বর্গক্ষেত্র নয় ।
এমসাল্টারস

2
@ জোয়েলব্রাউন: ত্রিভুজ AC / BD = x, পাশের AB = BC = AD = z এবং শেষ দিকের সিডি = y! = Z দিয়ে ট্র্যাপিজিয়াম আকৃতি তৈরি করা সম্ভব।
বার্ট ভ্যান ইনজেন শেহেনো

2
যথেষ্ট উপযুক্ত, তবে নোট করুন যে ওপি স্পষ্টভাবে 2 মাত্রা বলেছে sions
জোয়েল ব্রাউন

24

চারটি পয়েন্টের মধ্যে তিনটি চয়ন করুন।

বিন্দুগুলির মধ্যে তিনটি ভেক্টরগুলির মধ্যে একটির 90 ডিগ্রি দ্বারা ঘোরানো অন্য একটির সমান কিনা তা পরীক্ষা করে এটি একটি ডান বিচ্ছিন্ন ত্রিভুজ কিনা তা খুঁজে বের করুন।

যদি তা হয় তবে ভেক্টর সংযোজন দ্বারা চতুর্থ পয়েন্টটি গণনা করুন এবং এটি প্রদত্ত চতুর্থ বিন্দুর সাথে তুলনা করুন।

নোট করুন যে এর জন্য ব্যয়বহুল নয়, ব্যয়বহুল বর্গমূল প্রয়োজন doesn't


দুটি ভাল উত্তরের একটি। sqrtগুরুত্বপূর্ণ না হলে ব্যবহার করবেন না ! আপনাকে এফপিতে পূর্ণসংখ্যার গণনা হ্রাস করতে হবে না ... এফপি গণনার যথাযথতা আরও খারাপ করার কথা উল্লেখ করার দরকার নেই।
কে.স্টেফ

ধন্যবাদ. একটি ভাল।
মার্শালশি

এখন এটি করার সঠিক উপায়। গুণ এখানে আসলে প্রয়োজন হয় না।
আসুন

2 জন ভেক্টর যদি বিন্দুতে জড়িত তাদের বিন্দু পণ্য ব্যতিরেকে একে অপরের সাথে লম্ব হয় তবে আপনি কীভাবে আবিষ্কার করবেন?
পবন মঞ্জুনাথ

1
(x, y) একটি যথাক্রমে কোণে আবর্তিত হয় (-y, x) বা (y, -x), আপনি যথাক্রমে ধনাত্মক বা নেতিবাচক দিকে ঘোরে কিনা তার উপর নির্ভর করে।
তারকাব্লু

17

আমি মনে করি সবচেয়ে সহজ সমাধানটি নিম্নলিখিত:

  • প্রথমে 4 পয়েন্টের কেন্দ্র গণনা করুন: center = (A + B + C + D)/4

  • তারপরে ভেক্টর গণনা করুন A - center। এই হতে দিনv := (x,y)

  • v2ভেক্টরটি v90 ডিগ্রি ঘোরানো যাক :v2 := (-y, x)

  • এখন অন্যান্য পয়েন্টগুলি হওয়া উচিত center - v, center + v2এবং center - v2

এই সমাধানটির সুবিধা হ'ল আপনাকে স্কোয়ার শিকড়গুলি মোটেও ব্যবহার করতে হবে না।


2
হ্যাঁ। এটি সর্বাধিক বোধগম্য এবং সম্ভবত এটি প্রয়োগ করাও সবচেয়ে সহজ।
এরিক জি

দেখে মনে হচ্ছে বিভাগগুলির ভেক্টর সমতা। কেউ দয়া করে বিস্তারিত বা প্রমাণ করতে পারেন যে এটি কেন কাজ করে?
ভিসিলিউশন

এটি কেস (0,0), (2,1), (3, -1), (1, -2) - এর জন্য বিশেষভাবে ব্যর্থ হয় - বর্গক্ষেত্র অক্ষের সাথে সংযুক্ত নয়
ভিসিলিউশন

1
এটি এই ক্ষেত্রে কাজ করে। কেন্দ্র পয়েন্ট হ'ল (1.5, -0.5), প্রথম পয়েন্ট হ'ল (0, 0) এবং আরও তিনটি পয়েন্ট হ'ল (1.5, -0.5) + (1.5, -0.5) = (3, -1); (১. 1.5, -০.০) + (০.০, ০.০) = (২, ১) এবং (০.০, -০.০) - (০.০, ০.৫) = (১, -২) যার অর্থ এটি একটি বর্গ। প্রমাণটি হল .. প্রতিসম?
আরগায়ার

1
"দূরত্ব সমাধান" এর বর্গমূলের প্রয়োজন, তবে "স্কোয়ার্ড ডিস্টেন্স সলিউশন" রয়েছে, যার কোনওটিরই প্রয়োজন নেই। আপনার এখনও আরও দক্ষ হতে পারে ...
maaartinus

5

আমি দুঃখিত তবে কিছু উত্তর প্রযোজ্য নয়।

কেসটির জন্য আপনি তিনটি প্রান্তটি পরিমাপ করুন (আসুন এবি, এসি এবং এডি বলুন) এটির জন্য যে দুটিটির আকার একই থাকে (আসুন এসি এবং এডি বলি) এবং একটি বড় (আসুন এবি বলি)। তারপরে আপনি এটির আকার একই আকারের কিনা তা দেখতে আপনি সিডি পরিমাপ করবেন এবং আপনি দেখতে পাচ্ছেন যে এটি। বর্গক্ষেত্রের পরিবর্তে আপনার নীচের ছবিটি থাকতে পারে এবং এটি এটিকে একটি ভুল সমাধান করে তোলে।

বর্গক্ষেত্র নয় ...

তারপরে আপনি অন্য কোনও সমাধান চেষ্টা করে দেখুন: কমপক্ষে একবারে সমস্ত দূরত্ব পরিমাপ করুন: এবি, এসি, এডি, বিসি, বিডি, সিডি। তারপরে আপনি দেখতে পাবেন যে এর মধ্যে 4 টি সমান এবং অন্য 2 টিও নিজেদের মধ্যে সমান। তবে আপনার নীচের মতো একটি ছবি থাকতে পারে:

এবং এটি একটি বর্গও নয়, ...

সুতরাং, উক্ত উত্তরগুলি সঠিক নয়, যদিও তারা উচ্চতর উত্সাহ পেয়েছে।

একটি সম্ভাব্য সমাধান: যদি দুটি সমান পদক্ষেপ একই পয়েন্টটি সংযুক্ত না করে। সুতরাং: যদি এবি এবং সিডি একই দৈর্ঘ্য হয় তবে অন্যান্য সমস্ত সংমিশ্রণ (এসি, এডি, বিসি, বিডি) সমান হয়, আপনার একটি বর্গক্ষেত্র রয়েছে। আপনার যদি একই দৈর্ঘ্য সবচেয়ে বড় দৈর্ঘ্য তৈরি হয় (এবি এবং এসি সবচেয়ে বড় এবং অন্য সমস্তগুলি সমান) তবে উপরের ছবিগুলির মধ্যে একটি আপনার কাছে রয়েছে।


না, তার অ্যালগরিদম বলেছিল দূরত্বের 2 টি প্রান্ত কোনও বিন্দু ভাগ করে না। তবে আপনি কেবল সি ভাগ করে নিন, সুতরাং ধরুন এসি এক্স, তবে বিসি আপনার বিসি এর পরিবর্তে অন্য এক্স হওয়া উচিত।
মার্শালশি

3

চারটি পয়েন্টের একটি, বি, সি, ডি সমন্বয়যুক্ত ভেক্টর থাকুক।

তারপরে তাদের পার্থক্যগুলিকে ডব্লু = (বিজ্ঞাপন), এক্স = (বা), y = (সিবি), জেড = (ডিসি) কল করতে দিন।

তারপরে ডাব্লুটি একটি এর অর্থেগোনাল হয় যদি আপনি 90 ডিগ্রি-ঘূর্ণন দ্বারা w থেকে তৈরি করতে পারেন। গাণিতিকভাবে 2-স্পেসে 90-ডিগ্রি-ঘূর্ণন-ম্যাট্রিক্স হ'ল ((0, -1), (1, 0))। সুতরাং, ডাব্লুটি 90-ডিগ্রি-ঘোরানো কোনও ফলাফলের শর্ত কিনা

(w_1 == -x_2 এবং w_2 == x_1)

যদি এটি ধরে রাখে, তবে আপনাকে সেই ডাব্লু == -y এবং x == -z, বা

((w_1 == -y_1 এবং w_2 == -y_2) এবং (x_1 == -z_1 এবং x_2 == -z_2))

যদি এই তিনটি সম্পর্ক ধরে থাকে তবে ক, বি, সি, ডি একটি ওরিয়েন্টেড স্কোয়ার তৈরি করে।


1
আমার মনে হয় আয়তক্ষেত্রটি আপনার শর্তগুলিও পূরণ করতে পারে।
মার্শালশি

না, প্রথম শর্তটি অরথোগোনাল দ্বারা দেখা হয় নি, তবে সমানভাবে দৈর্ঘ্য ভেক্টর নয়।
মার্ক সালজার

1
হ্যাঁ, আমি কেবল প্রথমটি মিস করছি। কিন্তু 4 পয়েন্ট অর্ডার করা হয় না। সুতরাং, নিশ্চিত করার জন্য আমাদের আরও পদক্ষেপের প্রয়োজন।
মার্শালশি

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

2

স্টার ব্লু দ্বারা উত্তর অনুরূপ

চারটি পয়েন্টের মধ্যে তিনটি বেছে নিন।

তাদের মধ্যে একটি সমকোণী প্রান্তের সন্ধান করুন : তিনটি ভেক্টরের যে কোনও একটির ডট পণ্য শূন্য কিনা তা পরীক্ষা করে। যদি পাওয়া না যায় তবে একটি বর্গক্ষেত্র নয়।

এই কোণটির সাথে সংলগ্ন কোণগুলি ঠিক কোণে রয়েছে কিনা তা পরীক্ষা করুন। যদি না হয় তবে একটি বর্গক্ষেত্র নয়।

তির্যকগুলি লম্ব হয় কিনা তা পরীক্ষা করে দেখুন : প্রথম এবং চতুর্থ প্রান্ত এবং অন্য দুটি অনুভূমিক (ত্রিভুজ) এর মধ্যে যদি ভেক্টরগুলির বিন্দু পণ্যটি শূন্য হয়, তবে এটি একটি বর্গক্ষেত্র।


ভাল ধারণা, তবে আপনাকে এখনও চেক করা দরকার যে চতুর্থ প্রান্তটি অন্যান্য পয়েন্টগুলি থেকে সঠিক দূরত্বে রয়েছে। আপনি কেবল এটি পরীক্ষা করে দেখুন যে এটি তির্যক হয়।
তারকাব্লু

টুইটারে অন্যথায় এটি একটি ঘুড়ি গঠন করতে পারে। আপডেট করা হয়েছে।
সর্বোচ্চ

2

আমি মনে করি আপনি এটি সহজ সংযোজন এবং বিয়োগফল এবং মিনিম / সর্বাধিক সন্ধানের মাধ্যমে এটি করতে পারেন। শর্তাদি (অন্যান্য ব্যক্তির চিত্রের সাথে মেলে):

  • সর্বোচ্চ y মান সহ বিন্দু => এ
  • সর্বোচ্চ x => বি
  • সর্বনিম্ন y => সি
  • সর্বনিম্ন x => ডি

যদি 4 পয়েন্টগুলি কেবল 2 x টি মান এবং 2 টি মানের সাথে ভাগ করে থাকে তবে আপনার স্তরের একটি বর্গক্ষেত্র রয়েছে।

অন্যথায়, আপনার পয়েন্টগুলি নিম্নলিখিতগুলি সন্তুষ্ট করে যদি আপনার একটি বর্গক্ষেত্র থাকে:

  • Ax + Cx = Bx + Dx
  • এআই + সাই = দ্বারা + ডাই
  • আয় - সাই = বিএক্স - ডিএক্স

ব্যাখ্যা: লাইন বিভাগগুলির এসি এবং বিডি তাদের মিডপয়েন্টে দেখা উচিত। সুতরাং (Ax + Cx) / 2 হ'ল AC এর মিডপয়েন্ট এবং (Bx + Dx) / 2 হ'ল বিডির মিডপয়েন্ট। আমার প্রথম সমীকরণ পেতে এই সমীকরণের প্রতিটি পাশকে 2 দিয়ে গুণ করুন। দ্বিতীয় সমীকরণটি ওয়াই-মানগুলির জন্য একই জিনিস। ডায়মন্ড-শেপ (rhomboids) এই বৈশিষ্ট্যগুলি সন্তুষ্ট করবে, সুতরাং আপনার সমান দিক রয়েছে তা যাচাই করতে হবে - প্রস্থটি উচ্চতার সমান। এটি তৃতীয় সমীকরণ।


2

এখানে চিত্র বর্ণনা লিখুন

এখানে কিছু ভাল উত্তর রয়েছে, তবে প্রশ্নটি সহজ পদ্ধতির জন্য জিজ্ঞাসা করেছিল। আমি এটিকে কিছু তাড়াতাড়ি চিন্তাভাবনা দিয়েছিলাম এবং আমি এটি এটি করব।

আপনি বলতে পারেন যে চারটি পয়েন্ট কোনও বর্গের প্রতিনিধিত্ব করে (ঘোরানো হলেও), তবে চারটি পয়েন্টের গড় সন্ধান করে।

R = (A+B+C+D)/4

আপনার গড় একবার হয়ে গেলে, প্রতিটি পয়েন্ট এবং গড়ের মধ্যকার দূরত্ব চারটি পয়েন্টের জন্য একই হতে হবে the

if(dist(R,A) == dist(R,B) == dist(R,C) == dist(R,D) then
   print "Is Square"
else
   print "Is Not Square"

সম্পাদনা করুন:

আমার ভুল. ফর্ম পয়েন্টগুলি যদি একটি বৃত্তে থাকে তবে এটি কেবল আপনাকে জানায়। আপনি যদি পয়েন্টগুলির মধ্যে দূরত্বও পরীক্ষা করেন তবে এটি অবশ্যই একটি বর্গক্ষেত্র হতে হবে।

if(dist(R,A) == dist(R,B) == dist(R,C) == dist(R,D) AND
  (dist(A,B) == dist(B,C) == dist(C,D) == dist(A,D) then
   print "Is Square"
else
   print "Is Not Square"

এটি ধরে নিয়েছে যে A, B, C, D পয়েন্টগুলি অতিক্রম করবে না (যেমন একটি বৈকল্পিক বাতাসের ক্রম রয়েছে)।


1

এটি নির্ধারিত মান অনুযায়ী কোনও উত্তর নয়, তবে আমি আশা করি এটি সহায়তা করে:

[নীচের লিঙ্ক থেকে অনুলিপি করা হয়েছে যাতে আপনার লিঙ্কটি খুলতে হবে না] পাইথন 76 76 টি অক্ষর

def S(A):c=sum(A)/4.0;return set(A)==set((A[0]-c)*1j**i+c for i in range(4))

ফাংশন এস জটিল সংখ্যার একটি তালিকা তার ইনপুট (এ) হিসাবে গ্রহণ করে। যদি আমরা কেন্দ্র এবং একটি বর্গক্ষেত্রের এক কোণ উভয়ই জানি তবে আমরা কোণটি কেন্দ্র বিন্দু (গ) এর চারপাশে 90,180 এবং 270 ডিগ্রি ঘুরিয়ে বর্গাকারটি পুনর্গঠন করতে পারি। জটিল প্লেনের আবর্তনের প্রায় 90 ডিগ্রি ঘোরার মাধ্যমে i দ্বারা পয়েন্টটি গুণ করে সম্পন্ন করা হয়। যদি আমাদের আসল আকৃতি এবং পুনর্গঠিত বর্গক্ষেত্রের একই পয়েন্ট থাকে তবে অবশ্যই এটি একটি বর্গক্ষেত্র হতে হবে।

এটি থেকে নেওয়া হয়েছিল: 4 পয়েন্ট একটি বর্গ গঠন করে কিনা তা নির্ধারণ করুন

আপনি যদি উত্তরটি পছন্দ করেন তবে আমি বলছি, ব্যক্তিকে ধন্যবাদ জানাতে কিছু মুহুর্ত বের করুন, বা তার উত্তরটি এই পৃষ্ঠায় আপ করুন।


1
আপনি এখানে অ্যালগরিদম সংক্ষিপ্ত করতে পারেন। আপনি অন্য এসই সাইটের সাথে লিঙ্ক করছেন, যা অন্য কোনও সাইটের দিকে নির্দেশ করার চেয়ে কিছুটা ভাল, তবে আমরা উত্তর চাই এই পৃষ্ঠায়, যেখানে প্রশ্ন জিজ্ঞাসা করা হচ্ছে। উত্তরগুলি কী হতে পারে তা শিখতে এখন লোকদের আবার ক্লিক করতে হবে।
মার্টিজন পিটারস

0

বুনিয়াদি ধারণা (এটি আমি নতুন কিছু অবদান রাখছি কিনা এই প্রশ্নের উত্তর দেয়, যা আমি উত্তর দেওয়ার জন্য ক্লিক করলে বট জিজ্ঞাসা করেছিল):

  • সমান ত্রিভুজযুক্ত একটি রম্বস একটি বর্গক্ষেত্র।
  • "যতটা সম্ভব সহজ" এর মধ্যে রয়েছে:
    • বিভাজন নেই,
    • বর্গাকার শিকড় নেই,
    • শাখা নেই,
    • কোন অনুসন্ধান,
    • কোন অ্যাঙ্গেল-চেকিং বা -চেসিং নয়
    • কোন ভেক্টর নেই,
    • কোনও রূপান্তর নেই,
    • জটিল সংখ্যা নেই,
    • কোন মাল্টলাইন ফাংশন, এবং
    • বিশেষ প্যাকেজগুলির আমদানি করার প্রয়োজন নেই (কেবল অন্তর্নির্মিত স্টাফ ব্যবহার করুন)।
    • (এবং কোনও ইম্পেরিয়াল জাল নেই!)

আর-তে আমার সমাধানটি নীচে উপস্থাপন করা হয়েছে। আমি ধরে নিচ্ছি যে ঠিক চারটি পয়েন্ট রয়েছে এবং এটি যে সমস্যার বিবৃতি অনুসারে ইতিমধ্যে নির্ধারণ করা হয়েছে যে পয়েন্টগুলি অনন্য।

sumsq <- function(x) sum(x^2)

quadrances.xy <- function(xy) vapply(
    as.data.frame(t(diff(xy)), optional=T), sumsq, 1)

"চতুষ্কোণ" এর আলোচনার জন্য নরম্যান ওয়াইল্ডবার্গারের কাজগুলি দেখুন, বিশেষত তার ইউটিউব ভিডিওগুলি ( রিয়েল ফিশ, রিয়েল নাম্বার, রিয়েল জবস এবং সিক।) এবং তাঁর বই Divশিক অনুপাত See

xyম্যাট্রিক্স এক ধরনের আর এর দ্বারা গৃহীত বোঝায় plot, pointsএবং linesফাংশন।

অ্যাপ্লিকেশন as.data.frameহ'ল কলাম অনুসারে জিনিসগুলি আর করার জন্য একটি কৌশল।

optional=Tদফা নাম, যা যাহাই হউক না কেন ব্যবহার করা হয় না, অবলুপ্তি ঘটিয়েছে।

quadrances.xy..i2. <- function(xy, i2) vapply(
    as.data.frame(i2, optional=T),
    function(k) quadrances.xy(m[k,]),
    1)

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

quadrance.every.xy <- function(xy, .which=combn(nrow(xy), 2))
        quadrances.xy..i2.(xy, .which)

কেবল .whichএটির কাছে প্রকাশ করার জন্য formalsএবং যা চলছে তা যোগাযোগ করার চেষ্টা করার জন্য একটি যুক্তি হিসাবে উপস্থাপন করা হয়েছে।

is.square.xy <- function(xy) {
    qq <- sort(quadrance.every.xy(xy))
    all(qq[2:4] == qq[1]) && # ALL SIDES (SHORT QUADRANCES) EQUAL
    qq[5] == qq[6] # ALL DIAGONALS (LONG QUADRANCES) EQUAL
}

আমি বলেছিলাম "সরল" কোনও মাল্টলাইন ফাংশন অন্তর্ভুক্ত নেই। আপনাকে এই দুই-লাইনের ফাংশনটি ক্ষমা করতে হবে।

xy <- t(matrix(c(3,0,  7,3,  4,7,  0,4), ncol=4))
xy
#      [,1] [,2]
# [1,]    3    0
# [2,]    7    3
# [3,]    4    7
# [4,]    0    4
is.square.xy(xy)
# [1] TRUE

নোট করুন যে চারটি বিষয় সম্পর্কে প্রশ্ন বাদে প্রথম চারটি ফাংশন তাদের নিজস্বভাবে কার্যকর।


0

চারটি পয়েন্ট ধরুন A = ​​(কুড়াল, আই), বি = (বিএক্স, বাই), সি = (সিক্স, সাইক), ডি = (ডিএক্স, ডাই) এবং তারা এন্টি-ক্লকওয়াইজ ক্রম হিসাবে একটি বর্গাকার বিন্দু গঠন করে। আমরা পয়েন্টগুলি স্থানান্তরিত করি যাতে Ax (0, 0) বিক্স, সিএক্স এবং ডিএক্স থেকে কুঠারকে বিয়োগ করে এবং অ্যায় দ্বারা বাই, সাই, এবং ডাই থেকে বিয়োগ করে অক্ষ = অ্যায় = 0 নির্ধারণ করে।

অ্যান্টি-ক্লকওয়াইজ ক্রমক্রমে বিন্দু যদি কোনও বর্গক্ষেত্রের কোণে হয় তবে A এবং B দেওয়া হলে আমরা সি এবং ডি কোথায় রয়েছে তা গণনা করতে পারি: আমাদের (সিএক্স, সাই) = (বিএক্স - বাই, বিএক্স + বাই) এবং (dx, dy) = (-বি, বিএক্স)। সুতরাং আমরা সি এবং ডি যেখানে থেকে বর্গক্ষেত্রের দূরত্ব গণনা করি সেগুলি কোথায় হওয়া উচিত: errC = (cx - bx + বাই) ^ 2 + (সাই - বিএক্স - বাই) ^ 2, এবং এররডি = (ডিএক্স + বাই) ^ 2 + (ডাই - বিএক্স) ^ 2। আমরা এগুলি যুক্ত করি এবং এর দ্বারা বিসিটি (বিএক্স ^ 2 + বাই ^ 2) বিভক্ত করে এরর = (এররসি + এআরআরডি) / (বিএক্স ^ 2 + বাই ^ 2) প্রদান করে।

নিখুঁত বর্গক্ষেত্রের ফলাফলের ফলাফল 0 হবে, বা প্রায় একটি বর্গক্ষেত্রের জন্য যদি একটি ছোট সংখ্যা, এবং আমরা স্কোয়ারের পয়েন্টগুলি অনুবাদ, স্কেল বা ঘোরান তবে গোল গোল ত্রুটি বাদে সংখ্যাটি অপরিবর্তিত থাকবে। সুতরাং আমরা কতটা বর্গক্ষেত্রের আছে তা স্থির করতে ভুল ব্যবহার করতে পারি।

তবে আমরা পয়েন্টগুলির ক্রম জানি না। খ ও ডি এ থেকে একই দূরত্বে হওয়া উচিত; যদি আমরা এটি 2 এর বর্গমূল দিয়ে গুণ করি তবে এটি A থেকে C এর দূরত্ব হওয়া উচিত আমরা কোন বিন্দু সি তা নির্ধারণ করতে এটি ব্যবহার করি: distB = bx ^ 2 + কে ^ 2 দ্বারা গণ্য করুন, distD = dx ^ 2 + dy ^ 2। যদি ডিএসডি dist 1.5 ডিস্টবিবি হয়, তবে আমরা সি এবং ডি অদলবদল করব; যদি ডিএসবি ≥ 1.5 ডিলডিড থাকে তবে আমরা সি এবং বি স্যুইপ করব এখন সি ঠিক আছে।

কোনটি পয়েন্টগুলি বি এবং ডি, তাও আমরা নির্ধারণ করতে পারি: আমরা যদি অনুমান করি যে কোনটি বি এবং কোনটি ডি, তবে আমাদের গণনা ডিটিকে যেখানে সঠিক স্থান থেকে একেবারে বিপরীত স্থানে রাখে। সুতরাং যদি errD ≥ (bx ^ 2 + by ^ 2) হয়, তবে আমরা বি এবং ডি অদলবদল করি

এটি বি, সি এবং ডি সঠিকভাবে ব্যবস্থা করবে যদি আমাদের কাছে বর্গক্ষেত্র থাকে বা কমপক্ষে মোটামুটি একটি বর্গ থাকে। তবে যদি আমাদের মোটামুটি কোনও বর্গক্ষেত্র না থাকে তবে আমরা জানি ত্রুটির গণনা শেষে এটি প্রদর্শিত হবে।

সারাংশ:

  1. বিএক্স, সিএক্স, ডিএক্স থেকে কুড়াল বিয়োগ করুন। বাই, সাই, ডিজ থেকে বিয়োগ করুন।
  2. ডিস্টবি = বিএক্স ^ 2 + কে ^ 2, ডিএসডি = ডিএক্স ^ 2 + ডাই ^ 2 দিয়ে দিন।
  3. ডিস্টডিড যদি ≥ 1.5 * ডিস্টবিবি হয়, সি এবং ডি স্যুইপ করুন এবং আবার ডিডিডি গণনা করুন।
  4. অন্যথায়, ডিস্টবি ≥ 1.5 * ডিএসডি হলে বি এবং সি অদলবদল করে আবার ডিস্টবি গণনা করুন।
  5. এররড = (ডিএক্স + বাই) ^ 2 + (ডাই - বিএক্স) ^ 2 আসুন।
  6. যদি errD ≥ distB হয় তবে বি এবং ডি অদলবদল করুন, ডিস্টবি এবং ডিস্টডি স্যুপ করুন, আবার এররডি গণনা করুন।
  7. এররসি = (সিএক্স - বিএক্স + বাই) ^ 2 + (সাই - বিএক্স - বাই) ^ 2 আসুন।
  8. এরর = (errC + errD) / ডিএসবি যাক।
  9. ভুলের মানের উপর নির্ভর করে আমাদের বর্গক্ষেত্র বা প্রায় কোনও বর্গক্ষেত্র রয়েছে কিনা তা স্থির করুন।

যদি আমরা পয়েন্টগুলির ক্রম জানি তবে এটি স্পষ্টতই সরল করা যেতে পারে।


-3

সমাধান ভাবনা মিডিয়ার অনুরূপ।

প্রথম ধাপ:

x = (A+B+C+D)/4
f=0
if(dist(x,A) == dist(x,B) == dist(x,C) == dist(x,D) 
   f=1
else
   f=0

এই সম্পত্তিটি বর্গাকার অনুসরণ করে কারণ এটি চক্রযুক্ত। এই সম্পত্তি অনুসরণ করার জন্য এখন একটি চেনাশোনা। সুতরাং, এখন শুধু চেক

if(A.B==B.C==C.D==D.A==0)
  f=1
else 
  f=0

if (f==1)
  square
else 
  not square

এখানে এবি অর্থ এ এবং বি এর ডট পণ্য

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