До появления спецификации 5-го издания метод Date.parse
был полностью зависимым от реализации (new Date(string)
эквивалентен Date.parse(string)
кроме последнего возвращает число, а не Date
). В спецификации 5-го издания было добавлено требование о поддержке упрощенного (и немного неправильного) ISO-8601 , но кроме этого было требование no для того, что Date.parse
/ new Date(string)
должны принять иное, чем то, что они должны были принять любой вывод Date # toString (не сказав, что это было).
Как и в ECMAScript 2017 (издание 8), реализации необходимо было проанализировать их вывод для Дата # toString и Дата # toUTCString , но формат этих строк не был указан.
Начиная с ECMAScript 2019 (версия 9) формат для Дата # toString и Дата # toUTCString указана как (соответственно):
предоставление еще 2 форматов, которые Date.parse должны корректно анализировать в новых реализациях (отмечая, что поддержка не является вездесущей и несовместимые реализации будут оставаться в использовании в течение некоторого времени).
Я бы рекомендовал, чтобы строки даты обрабатывались вручную, а конструктор даты Date использовался с аргументами года, месяца и дня, чтобы избежать двусмысленность:
// parse a date in yyyy-mm-dd format
function parseDate(input) {
var parts = input.split('-');
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[0], parts[1]-1, parts[2]); // Note: months are 0-based
}
То, в чем Вы нуждаетесь, является этим:
var h:Number = Math.sqrt(x*x + y*y);
var z:Number = Math.atan2(y, x);
, Который должен дать Вам угол в радианах, Вы, возможно, должны были бы подкачать x/y и возможно добавить или удалить 90 градусов, но это должно добиться цели! (Обратите внимание, что Вам даже не нужно h для получения z при использовании atan2)
, я использую умножение вместо Math.pow () просто, потому что Математика является довольно медленной, можно сделать:
var h:Number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
И это должно быть точно то же.
z эквивалентен 180 - угол yH. Или:
180 - arctan(x/y) //Degrees
pi - arctan(x/y) //radians
кроме того, если математические библиотеки actionscript имеют его, arctan2 использования, который берет и X и Y и соглашения со знаками правильно.
Угол, который Вы хотите, совпадает с углом, настроенным против одного wetween y и h.
Позволяют нам звонить a
угол между y
и h
, угол, который Вы хотите, на самом деле 180 - a
или PI - a
в зависимости от Вашей единицы (градусы или радианы).
Теперь геометрия говорит нам что:
cos(a) = y/h
sin(a) = x/h
tan(a) = x/y
Используя загар (), мы добираемся:
a = arctan(x/y)
, Поскольку мы ищем 180 - a, необходимо вычислить:
180 - arctan(x/y)
Какой сказанный @Patrick, также гипотенуза sqrt(x^2 + y^2)
.