বৃত্তের একটি বিন্দুতে রেডিয়ানে কোণ পান


14

আমি এমন একটি ডায়াল নিয়ে কাজ করছি যা একটি বৃত্তের চারদিকে ঘোরে।

ক্লিক করার আগে

ক্লিকের মতো একই কোণের সাথে ডায়ালের অবস্থানটি বিন্দুতে ডায়ালের অবস্থানটি সামঞ্জস্য করতে এই ডায়ালটি আপনাকে একটি বৃত্তের যে কোনও জায়গায় মাউস সরানো উচিত। উদাহরণস্বরূপ, উপরের ডায়াল থেকে আপনি নীচে গোলাপী বর্ণিত স্পটটি ক্লিক করেছেন যদি আমি ডায়ালটি সেই বিন্দুটির ওপরে কিন্তু বৃত্তে সরিয়ে নিয়ে যাই।

ক্লিক করার পরে (গোলাপী)

আমি জানি যে কীভাবে একটি ব্যাসার্ধ এবং একটি কোণ দেওয়া হয় এমন একটি বৃত্তের বিন্দুর অবস্থান পেতে (রেডিয়ানে)। এটা এই সূত্র :

x = Cos(angle) * radius + CenterX;
y = Sin(angle) * radius + CenterY;

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

এটি সম্পাদন করতে আমি কি কোনও সহজ সূত্র ব্যবহার করতে পারি?


আপনি কি বিন্দুগুলির মধ্যে একটি কোণ পেতে সূত্রটি সন্ধান করছেন?
উইলিয়াম মারিয়ের 6'12

আপনি দুটি পয়েন্টের মধ্যে একটি কোণ পেতে পারেন? আমি opeাল গণনা করতে পারি তবে আমার ধারণাটি ছিল যে একটি ত্রিভুজ তৈরি করার জন্য আমার তৃতীয় পয়েন্ট দরকার এবং এটি সমাধান করার জন্য একটি বিপরীতমুখী ত্রিকোনমিক ফাংশন ব্যবহার করুন।
সম্পাদক

আমি কীভাবে এটি করব তা দেখিয়ে একটি উত্তর পোস্ট করেছি।
উইলিয়াম মারিয়ের 6'12

3
আপনার এখানে যা আছে তা দুটি ভেক্টরের মধ্যবর্তী কোণ । এগুলি উভয়ই বৃত্তের কেন্দ্র থেকে উত্পন্ন এবং একই পরিমাণের (বৃত্তের ব্যাসার্ধ) থাকে।
মাইকেলহাউস

এর পিছনে গণিত এখানে রয়েছে: বিপরীত ট্রিগ ফাংশনatanএর জন্য সংক্ষিপ্ত arctan, এবং atan2এটি কেবলমাত্র একটি ফাংশন যা পৃথক যুক্তি গ্রহণ করে, এবং আপনার জন্য বিভাগ করে।
voithos

উত্তর:


25

Atan2 ফাংশনটি পরীক্ষা করে দেখুন ।

এটি আপনাকে (0, 0) এবং (x, y) এর মধ্যে xএবং yফাংশন আর্গুমেন্ট হিসাবে কোণ সরবরাহ করে।

সম্পাদনা: যদি বৃত্তের কেন্দ্র (0, 0) নয়, সেটা ব্যাপার, শুধু এই একটি করুন: atan2(y - cy, x - cx)


আমার বৃত্তের কেন্দ্রটি যদি না থাকে তবে এটি কী ব্যাপার (0,0)? আমি অনুমান করছি যে আমি ঠিক atan2নীচে @ লুইস দ্বারা দেখানো হিসাবে যুক্তিগুলি অফসেট করছি ?
সম্পাদক

কেবল বিয়োগ করে অনুবাদ করুন। সম্পাদনা দেখুন।
jcora 16

3
-1: ATAN2 প্রথম প্যারামিটারy
লুইস এস্ত্রাদার

2
ধন্যবাদ @ লুইসএস্ট্রা, আমি কেবল এটি সংশোধন করেছি। (আশা করি আপনি এটি +1 করবেন :) :))
jcora

+ লুইস এস্ট্রাডা এটিকে এনক্রো-বাম্পের জন্য দুঃখিত, তবে আপনাকে ধন্যবাদ জানাতে হয়েছিল। আমি এখন থেকে দেড় দিন ধরে আমার প্রোগ্রামটি ডিবাগ করার চেষ্টা করছি। দেখা যাচ্ছে, যুক্তি atan2পিছনে ছিল!
কারসিজেনিকেট


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