Bagaimana fungsi berikut dapat diimplementasikan dalam berbagai bahasa?
Hitung (x,y)
titik pada keliling lingkaran, berikan nilai input dari:
- Radius
- Sudut
- Asal (parameter opsional, jika didukung oleh bahasa)
Bagaimana fungsi berikut dapat diimplementasikan dalam berbagai bahasa?
Hitung (x,y)
titik pada keliling lingkaran, berikan nilai input dari:
Jawaban:
The persamaan parametrik untuk lingkaran adalah
x = cx + r * cos(a)
y = cy + r * sin(a)
Di mana r adalah jari-jari, cx, cy asal, dan sebuah sudut.
Itu cukup mudah untuk beradaptasi ke bahasa apa pun dengan fungsi trigonometri dasar. Perhatikan bahwa sebagian besar bahasa akan menggunakan radian untuk sudut dalam fungsi trigonometri, jadi alih-alih bersepeda hingga 0,360 derajat, Anda bersepeda melalui radian 0..2PI.
+
dan *
suka dalam dua persamaan dan tanpa tanda kurung Anda selalu pergi untuk yang *
pertama dan kemudian untuk +
.
Ini implementasi saya di C #:
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);
}
Siapa yang butuh trigonometri ketika Anda memiliki bilangan kompleks :
#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 ) );
}
Diimplementasikan dalam JavaScript (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 ];
}
Pemakaian:
const [ x, y ] = pointsOnCircle({ radius: 100, angle: 180, cx: 150, cy: 150 });
console.log( x, y );
a
harus dalam radian - itu benar-benar sulit bagi saya sebagai pemula untuk mengerti.