আমি কীভাবে একটি বৃত্তের পরিধি সম্পর্কে একটি বিন্দু গণনা করব?


223

নিম্নলিখিত ভাষায় বিভিন্ন ভাষায় কীভাবে প্রয়োগ করা যেতে পারে?

(x,y)এর বৃত্তের পরিধি হিসাবে পয়েন্ট গণনা করুন , এর ইনপুট মানগুলি দেওয়া:

  • ব্যাসার্ধ
  • কোণ
  • উৎপত্তি (byচ্ছিক প্যারামিটার, যদি ভাষাটি সমর্থন করে)

উত্তর:


593

একটি বৃত্ত জন্য স্থিতিমাপ সমীকরণ হয়

x = cx + r * cos(a)
y = cy + r * sin(a)

যেখানে r হল ব্যাসার্ধ, সিএক্স, সি আদি এবং একটি কোণ।

এটি বেসিক ট্রিগ ফাংশনগুলির সাথে যে কোনও ভাষায় মানিয়ে নেওয়া বেশ সহজ। মনে রাখবেন যে বেশিরভাগ ভাষা ট্রিগ ফাংশনে কোণার জন্য রেডিয়ান ব্যবহার করবে , সুতরাং 0..360 ডিগ্রি দিয়ে সাইক্লিং না করে আপনি 0..2PI রেডিয়ানের মাধ্যমে সাইকেল চালাচ্ছেন।


107
নোটটি aঅবশ্যই রেডিয়েনগুলিতে থাকতে পারে - এটি আমার কাছে প্রাথমিকভাবে বুঝতে অসুবিধাজনক ছিল।
ioan

13
আমি এখন এক ঘন্টা ধরে এই সমীকরণটি অর্জন করার চেষ্টা করছি। ধন্যবাদ। হাই স্কুলে আপনি শিখেছেন এমন ট্রিগ পরিচয়গুলি কে সহায়ক তা সহায়ক।
ইসিওমা ননডাম

1
@ ডিয়ান অপারেটর অগ্রাধিকারের কারণে অতিরিক্ত বন্ধনীগুলির প্রয়োজন নেই। আপনি যখন দুটি সমীকরণ এবং কোনও বন্ধনী ছাড়াই +এবং *পছন্দ করেন তখন আপনি সর্বদা *প্রথম এবং তারপরে যান +
rbaleksandar

13
@ ইসিওমাএননডাম যে সহায়ক হতে পারত না যদি আমরা সবাই এখানে ফিরে আসি কেবল সমীকরণটি কী তা মনে রাখার জন্য।
b1nary.atr0phy

48

সি # তে আমার বাস্তবায়ন এখানে রয়েছে:

    public static PointF PointOnCircle(float radius, float angleInDegrees, PointF origin)
    {
        // Convert from degrees to radians via multiplication by PI/180        
        float x = (float)(radius * Math.Cos(angleInDegrees * Math.PI / 180F)) + origin.X;
        float y = (float)(radius * Math.Sin(angleInDegrees * Math.PI / 180F)) + origin.Y;

        return new PointF(x, y);
    }

5
রূপান্তর ফ্যাক্টরটির প্রাক-গণনা করুন সুতরাং হার্ড-কোডড নম্বর ব্যবহার করে আপনি ভুল রূপান্তরটি টাইপ করার কম সম্ভাবনা রয়েছে।
স্কটি টি

15

আপনার জটিল সংখ্যা থাকলে কার ট্রিগার দরকার :

#include <complex.h>
#include <math.h>

#define PI      3.14159265358979323846

typedef complex double Point;

Point point_on_circle ( double radius, double angle_in_degrees, Point centre )
{
    return centre + radius * cexp ( PI * I * ( angle_in_degrees  / 180.0 ) );
}

কিভাবে কাজ করে? এটি কীভাবে গতি অনুসারে তুলনা করে? কেন এটি বেশি ব্যবহৃত হয় না?
মার্ক এ রোপার

@ মার্কএ.রোপার জটিল সংখ্যাগুলি কীভাবে কাজ করে? - একটি গণিতের টিউটোরিয়াল সন্ধান করুন বা যদি আপনি ইতিমধ্যে জটিল সংখ্যাটি কী তা জানেন তবে en.wikedia.org/wiki/Euler%27s_distance থেকে যান । লুক আপ টেবিল হিসাবে পাপ বাস্তবায়নের তুলনায় এটি গতির পক্ষে সম্ভবত দক্ষ নয়, তবে কখনও কখনও আপনি অন্যান্য সংখ্যাগুলি শোষণের জন্য পয়েন্টগুলি প্রতিনিধিত্ব করার জন্য জটিল সংখ্যা ব্যবহার করছেন। থ্রিডি রোটেশনের জন্য চতুর্থাংশ ব্যবহারের অনুরূপ, এটি আসলে গতি নয় তবে তারা আপনাকে যে ক্ষমতা দেয়।
পিট কিরখাম

2

জাভাস্ক্রিপ্ট (ES6) এ প্রয়োগ করা :

/**
    * Calculate x and y in circle's circumference
    * @param {Object} input - The input parameters
    * @param {number} input.radius - The circle's radius
    * @param {number} input.angle - The angle in degrees
    * @param {number} input.cx - The circle's origin x
    * @param {number} input.cy - The circle's origin y
    * @returns {Array[number,number]} The calculated x and y
*/
function pointsOnCircle({ radius, angle, cx, cy }){

    angle = angle * ( Math.PI / 180 ); // Convert from Degrees to Radians
    const x = cx + radius * Math.cos(angle);
    const y = cy + radius * Math.sin(angle);
    return [ x, y ];

}

ব্যবহার:

const [ x, y ] = pointsOnCircle({ radius: 100, angle: 180, cx: 150, cy: 150 });
console.log( x, y );

Codepen

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