2012-03-26 6 views
7

Как получить координаты точки в системе координат, когда все, что у меня есть, - это координаты начала координат (x, y) и угол от начала координат до точка и расстояние от начала до точки?Как получить координаты точки в системе координат на основе угла и расстояния

+0

Похоже, что речь идет скорее о математическом вопросе (алгебре), чем о вычислительном вопросе. Знаете ли вы формулы, необходимые для расчета новой точки? –

+4

http://mathworld.wolfram.com/PolarCoordinates.html или http://en.wikipedia.org/wiki/Polar_coordinate_system –

+0

Зависит от типа системы координат, но большую часть времени использует простые тригонометрические функции, называемые sin(), cos(). – hovanessyan

ответ

22

Вы используете Math.cos, Math.sin так:

pointX = x + distance * Math.cos(angle) 
pointY = y + distance * Math.sin(angle) 

Заметьте, что Math.cos и Math.sin принимает аргумент дается в радианах. Если у вас есть угол в градусах, вы бы использовали Math.cos(Math.toRadians(angle)) например.

+2

+1: Поскольку на самом деле он использует Java-функции, на которые мой ответ не был :) –

+0

+1 для полного ответа ... Вот что такое опыт !!! – aProgrammer

+0

Как это можно изменить для 3D-системы? – helion3

2
px = x + r * cos(phi) 
py = y + r * sin(phi) 

где [px py] является точкой вы ищете, [x y] является «происхождением», r расстояния и phi угла к цели от начала координат.

EDIT: http://en.wikipedia.org/wiki/Polar_coordinate_system Эта ссылка, которая была хорошо опубликована Бартом Кирсом, может дать некоторую справочную информацию.

3

Если d является расстоянием и А представляет собой угол, чем coordnates точки, будет

(х + д * Cos (А), у + d * sin (А))

+0

Это неверно, поскольку он не учитывает, что точка смещена в любую другую произвольную точку (x, y). –

+0

@kigurai; Спасибо, что указали это. Отредактировал код. Это было на уме, когда я печатал, я не знаю, как я его пропустил ... В любом случае спасибо еще раз ... – aProgrammer

3

Если r этого расстояния от происхождения и a угла (в радианах) между осью х и точкой можно легко вычислить координаты с переходом от полярных координат:

x = r*cos(a) 
y = r*sin(a) 

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

Обратный результат получается путем вычисления по модулю вектора (так как расстояние + угол составляет вектор) и арктангенса, которое может быть рассчитано с использованием функции atan2.

r = sqrt(x*2+y*2) 
a = atan2(y,x)