Не правильно считает координату в JavaScript

102
15 июня 2019, 09:50

Выводит отрицательные вещественные значения. Пример: y = -1085.679012345679. Не пойму как с этого значения получить нужную координату. Знаю что Math.cos или Math.sin возвращает значение в радианах. Пробовал считать выражение с округленными переменными.

'use strict' 
const g = 9.8; 
shoot.addEventListener('click', function() { 
        var v0 = +document.getElementById("v0Speed").value; 
        var a = +document.getElementById("aAngle").value; 
        var x = 500; // расстояние 
        var t = x / (v0 * Math.cos(a)); 
        var y = v0 * Math.sin(a) * t - ((g*t*t)/2); 
        console.log(t); 
        console.log(y); 
}); 
 
// Составить код для игровой программы попадания 
// снаряда в цель. Траектория снаряда, вылетающего из 
// орудия под углом a с начальной скоростью v0, 
// описывается выражением

Answer 1

1) исправь строчку: вместо v0 * + нужно написать просто v0 *(без знака +).

var y = v0*Math.sin(a)*t - ((g*t*t)/2);

2) у - это твоя координата (физическая). Она может быть любой. Положительное значение говорит о том, что тело еще в воздухе, 0 - ударилось о землю (меньше нуля обычно не рассматривают). Если ты хочешь рисовать сам процесс полета, то стоит учесть, что на экране координаты "перевернуты" и ось ОУ идет сверху-вниз. Т.е., например, если по твоим расчетам получится, что у=200, то на экране точку нужно рисовать с координатой "высота экрана" -200.

Answer 2

Знаю что Math.cos или Math.sin возвращает значение в радианах.

Немножко наоборот - аргумент этих функций должен быть в радианах, а не в градусах, а возвращают они безразмерную величину в пределах -1..1

Так что при использовании градусов их нужно перевести в радианы

var radians = a / 180 * Math.PI;

и использовать

Math.cos(radians)
Math.sin(radians)

Пример для

  v = 250 м/c и angle=45 (Pi/4)
  t = 500 / (250 * 0.707) = 2.828 
  y = 250 * 0.707 * 2.828 - 10/2*(2.828)^2 = 500 - 40 = 460 м   
READ ALSO
Разбор сложного JSON-объекта JavaScript

Разбор сложного JSON-объекта JavaScript

Всем приветТолько начинаю изучать JS и столкнулся с такой проблемой: есть сложный JSON-объект типа

136
Неверно определяется isAutoplayAllowed

Неверно определяется isAutoplayAllowed

Есть такая проблема - у хрома новая политика безопасности, которая блокирует автовоспроизведение видео, если не было взаимодействия пользователя...

79
Отнять от даты 1 день

Отнять от даты 1 день

есть дата 2018-11-12 как от нее отнять 1 день в js? urrDatesetDate(CurrDate

108