Languages
[Edit]
PL

JavaScript - Math.atan2() - przyk┼éad metody z dokumentacj─ů

3 points
Created by:
Root-ssh
6825

Funkcja Math.atan2() zwraca k─ůt wyra┼╝ony┬áradianach w zakresie -Math.PI / 2 do +Math.PI / 2 mi─Ödzy dodatni─ů osi─ů x i promieniem od┬ápunktu┬á(0, 0) do (x, y).

// ONLINE-RUNNER:browser;

//                       y   x         k─ůt w radianach
console.log( Math.atan2( 2,  4) ); //  0.4636476090008061 <-   ~26.6 stopni
console.log( Math.atan2( 4, -2) ); //  2.0344439357957027 <-  ~116.6 stopni
console.log( Math.atan2(-2, -4) ); // -2.6779450445889870 <- ~-153.4 stopni
console.log( Math.atan2(-4,  2) ); // -1.1071487177940904 <-  ~-63.4 stopni

Metoda atan2() została zwizualizowana na poniższym obrazku:

wizualizacja funkcji atan2(y, x) - JavaScript Math Object.
wizualizacja funkcji atan2(y, x) - JavaScript Math Object.

1. Dokumentacja

SkładniaMath.atan2(y, x)
Parametryy, x┬á-┬áliczby ca┼ékowite lub zmiennoprzecinkowe, kt├│re s─ů wsp├│┼érz─Ödnymi punktu.
Wynik

Warto┼Ť─ç liczbowa k─ůta mi─Ödzy dwiema liniami OP i OX wyra┼╝ona radianach w zakresie -Math.PI / 2 do +Math.PI / 2.

Gdzie:

  • O=(0, 0)┬á- punkt przeci─Öcia osi uk┼éadu wsp├│┼érz─Ödnych,
  • P=(x, y)┬á- punkt na wykresie,
  • OX - dodatnia cz─Ö┼Ť─ç osi x.

Je┼╝eli punkt P znajduje si─Ö w pierwszej┬á(I) lub drugiej┬á(II) ─çwiardce, k─ůt┬ájest mierzony w kierunku przeciwnym z ruchem wskaz├│wek zegara.

Je┼╝eli punkt P znajduje si─Ö w trzeciej┬á(III) lub czwartej┬á(IV) ─çwiardce, k─ůt┬ájest mierzony w kierunku zgodnym z ruchem wskaz├│wek zegara.

Uwaga: strza┼éki k─ůt├│w pokazuj─ů w jakim kierynku i od kt├│rego miejsca mierzy─ç k─ůty w r├│┼╝nych ─çwiartkach.

Opis

atan2 to metoda statyczna, kt├│ra przyjmuje dwa parametry i zwraca przybli┼╝enie funkcji arcus tangens (y / x), bior─ůc pod uwag─Ö ─çwiatk─Ö po┼éo┼╝enia punktu (P = (x, y)).


2. Praca ze stopniami

// ONLINE-RUNNER:browser;

function calculateAngle(y, x) {
	var angle = Math.atan2(y, x);

    return (180 / Math.PI) * angle; // konwersja radian├│w na stopnie
}

// Przykładowe użycie:

console.log( calculateAngle( 2,  4) ); //   26.56505117707799 stopni
console.log( calculateAngle( 4, -2) ); //  116.56505117707799 stopni
console.log( calculateAngle(-2, -4) ); // -153.43494882292200 stopni
console.log( calculateAngle(-4,  2) ); //  -63.43494882292201 stopni

3.┬á┬áPrzeliczanie na k─ůty w stopniach zgodne z ruchem wskaz├│wek zegara

W tej sekcji pokazano, jak przekonwertowa─ç dowolne k─ůty na k─ůty zgodne z ruchem wskaz├│wek zegara (od 0 do 360 stopni).

// ONLINE-RUNNER:browser;

function calculateAngle(y, x) {
	var angle = Math.atan2(y, x);
  
  	if (angle < 0.0) {
    	angle += 2.0 * Math.PI;
    }

    return (180 / Math.PI) * angle; // konwersja radian├│w na stopnie
}

// Przykładowe użycie:

console.log( calculateAngle( 2,  4) ); //  26.56505117707799 stopni
console.log( calculateAngle( 4, -2) ); // 116.56505117707799 stopni
console.log( calculateAngle(-2, -4) ); // 206.56505117707800 stopni
console.log( calculateAngle(-4,  2) ); // 296.56505117707800 stopni

4.┬á┬áPrzeliczanie na k─ůty w stopniach przeciwnie do ruchu wskaz├│wek zegara

W tej sekcji pokazano, jak przekonwertowa─ç k─ůty na k─ůty przeciwne do ruchu wskaz├│wek zegara (od -360 do 0 stopni).

// ONLINE-RUNNER:browser;

function calculateAngle(y, x) {
	var angle = Math.atan2(y, x);
  
  	if (angle > 0.0) {
    	angle -= 2.0 * Math.PI;
    }

    return (180 / Math.PI) * angle; // konwersja radian├│w na stopnie
}

// Przykładowe użycie:

console.log( calculateAngle( 2,  4) ); // -333.434948822922 stopni
console.log( calculateAngle( 4, -2) ); // -243.434948822922 stopni
console.log( calculateAngle(-2, -4) ); // -153.434948822922 stopni
console.log( calculateAngle(-4,  2) ); // -63.4349488229220 stopni

Referencje

  1. atan2 - Wikipedia
  2. Funkcje cyklometryczne - Wikipedia

JavaScript - obiekt Math (PL)

Hey ­čĹő
Would you like to know what we do?
  • Dirask is a friendly IT community for learners, professionals and hobbyists to share their knowledge and help each other in extraordinary easy way.
  • We welcome everyone,
    no matter what the experience,
    no matter how basic the question is,
    this community will help you.