Получение координат экрана на основе треугольников - PullRequest
3 голосов
/ 22 января 2011

Если у меня есть длина гипотенузы и ее угол, как мне найти соседние и противоположные?

Я пишу это на JavaScript и просто пытаюсь найти координаты экрана (х / у), где заканчивается гипотенуза, с учетом длины и угла. Итак, кроме того, мне нужно знать, как преобразовать декартовы координаты в экранные координаты.

Извините, это, наверное, довольно тупой вопрос.

Вот эскиз, если я неясен:

alt text

Так что-то вроде этого:

function getLineEndCoords(originX, originY, hypotenuse, angle){
    // Probably something to do with tangents and cosines.
    return [x,y]
}

Кроме того, если кто-нибудь знает какие-либо хорошие библиотеки JS для такого рода вещей (изометрические чертежи, математические отображения), это было бы удобно.

Ответы [ 2 ]

4 голосов
/ 22 января 2011

Используя soh cah toa:

sin(A) = o/h
cos(A) = a/h

поэтому:

x = hypotenuse*sin(angle) + origionX
y = hypotenuse*cos(angle) + origionY

Обычно легче запомнить, что одна ось является синусом угла, умноженного на длину, идругой - это косинус угла, умноженного на длину.

РЕДАКТИРОВАТЬ:

Извините, я забыл добавить добавление начала координат.

3 голосов
/ 23 января 2011

Вот, пожалуйста:

function getLineEndCoords(originX, originY, hypotenuse, angle){
  return [originX+Math.cos(angle)*hypotenuse,originY-Math.sin(angle)*hypotenuse];
  }

Приведенный выше код имеет угол относительно правой оси x (как было на вашем эскизе).Например, угол 0 будет номером 3 на часах.Угол PI / 2 в радианах (90 градусов) будет 12 часов.Функция также возвращает координаты в виде экранных координат, где Y увеличивается с понижением, а не вверх, как на декартовой плоскости.

Обратите внимание, что функции тригонометрии JavaScript принимают только радианы, а не градусы.Ваш угол аргумента должен быть в радианах.Вот код для преобразования из градусов в радианы:

function deg2rad(deg){
  return deg*Math.PI/180;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...