Top community members
All Wiki Articles Create Wiki Article

Welcome to Dirask IT community! ÔŁĄ ­čĺ╗
We are community of people that helps each other.

If you are beginner in IT field, you are more then welcome to ask questions, it will help you to learn faster. We are here to help you.

We are always beginner in something, we just need to remember it along the way.

there are no wrong questions - Ask Question

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

0 contributions
3 points

Funkcja Math.acos() zwraca liczb─Ö w radianach z zakresu od 0 do Math.PI. Na podstawie tej funkcji jeste┼Ťmy w stanie obliczy─ç warto┼Ť─ç odwr├│conej funkcji cosinus.

// ONLINE-RUNNER:browser;

//                                   radiany                stopnie
console.log( Math.acos( -2   ) ); // NaN
console.log( Math.acos( -1   ) ); // 3.1415926535897930 ->  180
console.log( Math.acos( -0.5 ) ); // 2.0943951023931957 -> ~120
console.log( Math.acos(  0   ) ); // 1.5707963267948966 ->   90
console.log( Math.acos(  0.5 ) ); // 1.0471975511965979 ->  ~60
console.log( Math.acos(  1   ) ); // 0                  ->    0
console.log( Math.acos(  2   ) ); // NaN

console.log( Math.acos(  0.7071067811865476   ) ); // 0.7853981633974483 -> 45 stopni
console.log( Math.acos(  0.8660254037844387   ) ); // 0.5235987755982987 -> 30 stopni

console.log(Math.acos( Math.cos(  Math.PI / 4))); // 0.7853981633974483-> pi/4 (45 stopni)
console.log(Math.cos(  Math.acos( Math.PI / 4))); // 0.7853981633974483-> pi/4 (45 stopni)

Inny spos├│b spojrzenia na funkcj─Ö acos:

// ONLINE-RUNNER:browser;

function calculateAngle(b, h) {
	return Math.acos(b / h);
}

/*
  |\
  | \ h
a |  \
  |__*\ <- k─ůt
    b
*/

var a, b, h;

// gdy a, b oraz h buduj─ů tr├│jk─ůt r├│wnoramienny
a = 3; 
b = a;
h = Math.sqrt(a * a + b * b);
console.log( calculateAngle(b, h) ); // 0.7853981633974483 <-  45 stopni

// gdy a, b oraz h buduj─ů po┼éow─Ö tr├│jk─ůta r├│wnobocznego
a = 3; 
b = a * Math.sqrt(3); 
h = Math.sqrt(a * a + b * b);
console.log( calculateAngle(b, h) ); // 0.5235987755982987 <- ~30 stopni

// gdy a, b oraz h nie s─ů w stanie zbudowa─ç tr├│jk─ůta
a = 3; 
b = a; 
h = 1;
console.log( calculateAngle(b, h) ); // NaN

1. Dokumentacja

SkładniaMath.acos(number)
Parametry

number - liczba ca┼ékowita lub liczba zmiennoprzecinkowa, kt├│ra reprezentuje wynik operacji dzielenia nakraw─Ödziach┬ás─ůsiaduj─ůca┬á/ przeciwprostok─ůtna┬ána prostok─ůtnym tr├│jk─ůcie.

number┬ápowinna mie┼Ťci─ç si─Ö w zakresie od -1 do +1.

Wynik

warto┼Ť─ç liczbowa wyra┼╝ona┬áw radianach z zakresu┬áod 0 do Math.PI.

Je┼Ťli nie mo┼╝na obliczy─ç warto┼Ťci, zwracany jest NaN.

Opisacos to metoda statyczna, kt├│ra przyjmuje tylko jeden parametr i zwraca przybli┼╝enie wyniku funkcji matematycznej arccos(x).

2. Praca ze stopniami

// ONLINE-RUNNER:browser;

function calculateAngle(b, h) {
	var angle = Math.acos(b / h);

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

/*
  |\
  | \ h
a |  \
  |__*\ <- k─ůt
    b
*/

var a, b, h;

// gdy a, b oraz h buduj─ů tr├│jk─ůt r├│wnoramienny
a = 3; 
b = a;
h = Math.sqrt(a * a + b * b);
console.log( calculateAngle(b, h) ); // 45 stopni

// gdy a, b oraz h buduj─ů po┼éow─Ö tr├│jk─ůta r├│wnobocznego
a = 3; 
b = a * Math.sqrt(3); 
h = Math.sqrt(a * a + b * b);
console.log( calculateAngle(b, h) ); // ~30 stopni

// gdy a, b oraz h nie s─ů w stanie zbudowa─ç tr├│jk─ůta
a = 3; 
b = a; 
h = 1;
console.log( calculateAngle(b, h) ); // NaN

3. Przykład rysowania na obiekcie canvas

// ONLINE-RUNNER:browser;

<!doctype html>
<html>
<head>
  <style> #canvas { border: 1px solid black; } </style>
</head>
<body>
  <canvas id="canvas" width="200" height="200"></canvas>
  <script>
    
    var canvas = document.querySelector('#canvas');
    var context = canvas.getContext('2d');

    // zakres dla rysowanego wykresu arccos
    var x1 = -1.0;
    var x2 = +1.0;
    var y1 =  0;
    var y2 = +Math.PI

    var dx = 0.01;

    var xRange = x2 - x1;
    var yRange = y2 - y1;

    function calculatePoint(x) {
      var y = Math.acos(x);

      // wykres zostanie odwr├│cony w poziomie z powodu odwr├│conego indeksowania pikseli na ekranie

      var nx = (x - x1) / xRange;       // znormalizowany x
      var ny = 1.0 - (y - y1) / yRange; // znormalizowane y
      
      var point = {
        x: nx * canvas.width,
        y: ny * canvas.height
      };

      return point;
    }

    console.log('x range: <' + x1 + '; ' + x2 + '>');
    console.log('y range: <' + y1 + '; ' + y2 + '> // k─ůty w radianach');

    var point = calculatePoint(x1);
    
    context.beginPath();
    context.moveTo(point.x, point.y);

    for (var x = x1 + dx; x < x2; x += dx) {
      point = calculatePoint(x);
      context.lineTo(point.x, point.y);
    }

    point = calculatePoint(x2);
    context.lineTo(point.x, point.y);
    context.stroke();

  </script>
</body>
</html>

Referencje

  1. Funkcje cyklometryczne - Wikipedia

0 contributions

Suggested wiki articles:

Suggested findings

Let's do the work and have some fun
  • Dirask is online IT community for professionals and hobbyist 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,
    we will help you. ­čĹŹ Ôťö ­čŽä
Read more