2015-05-20 2 views
-2

Итак, у меня есть две разные системы координат: одна - это входящие данные, а другая - то, как я рисую точки в приложении. Есть ли формула, которая, учитывая некоторые выровненные точки, даст мне алгоритм для вычисления будущих точек? Например:Найти соотношение/алгоритм для перевода различных систем координат?

X = 6.5 & Y = 2 на одной системе = X = 3101 & Y = 3441 в другой системе.

Другой комплект 6.45/2.37 = 3211/3414. Из этих двух матчей, как я могу вычислить формулу, чтобы «перевести» одну систему в другую?

+1

Предполагая, что перевод является линейным, для X и Y отдельно вам будет имеют систему уравнений с двумя неизвестными. X2 = A * X1 + B, plug X1 (6.5) и X2 (3101) в уравнение, а также X1 (6.45) и X2 (3211), и вы можете решить его, чтобы найти A и B, чтобы найти ваши линейное уравнение, то сделать то же самое для Y. –

+1

Это не вопрос программирования; вам может быть повезло на [math.se]. Кроме того, вам, вероятно, понадобится третий пункт (или источник останется фиксированным?). – Teepeemm

+1

Если перевод линейный, у него есть все, что ему нужно. –

ответ

1

Вы должны решить два уравнения с двумя неизвестными для X, а затем то же самое для Y.

Давайте пройти через это. Во-первых, мы делаем X:

3101 = 6.5 * a + b 
3211 = 6.45 * a + b 

Сначала выделим б:

3101 - 6.5 * a = b 
3211 - 6.45 * a = b 

Что дает:

3101 - 6.5 * a = 3211 - 6.45 * a 

Теперь мы можем решить для:

3101 - 6.5 * a - 3211 + 6.45 * a = 0 
-110 -0.05 * a = 0 
-110 = 0.05 * a 
-2200 = a 

Учитывая это a мы можем решить для b, используя один из двух исходных двух уравнений ионы:

3101 - 6.5 * a = b 
3101 - 6.5 * -2200 = b 
3101 + 14300 = b 
17401 = b 
b = 17401 

Так что для X мы имеем следующую формулу:

X2 = -2200 * X1 + 17401 

Давайте попробуем X1 = 6,5 и X1 = 6,45:

X2 = -2200 * 6.5 + 17401 
X2 = -14300 + 17401 
X2 = 3101 

X2 = -2200 * 6.45 + 17401 
X2 = -14190 + 17401 
X2 = 3211 

Делая точно так же математику для Y дает мне что соотношение следует этой формуле:

Y2 = Y1 * A + B 
3441 = 2 * A + B     3414 = 2.37 * A + B 
3441 - 2 * A = B     3414 - 2.37 * A = B 
3441 - 2 * A = 3414 - 2.37 * A 
3441 - 2 * A - 3414 + 2.37 * A = 0 
27 + 0.37 * A = 0 
    0.37 * A = -27 
    0.37 * A = -27 
      A = -72.973 

3441 = 2 * A + B 
3441 = 2 * -72.973 + B 
3441 - 2 * -72.973 = B 
3441 + 145.946 = B 
3586.946 = B 
B = 3586.946 

Что дает:

Y2 = Y1 * -72.973 + 3586.946 

Давайте тест:

Y2 = 2 * -72.973 + 3586.946 
Y2 = -145.946 + 3586.946 
Y2 = 3441 

Y2 = 2.37 * -72.973 + 3586.946 
Y2 = -172.946 + 3586.946 
Y2 = 3414 

ваших формул перевода являются это:

X2 = X1 * -2200 + 17401 
Y2 = Y1 * 72.973 + 3586.946 
+1

Это не учитывает вращения системы координат. Опять же, ОП не сказал, разрешены ли они. – cfh

+0

@ Lasse спасибо за это, объяснение очень ценится. Просто то, что я искал. @ cfh Мне не нужно было вращать или масштабировать что-либо, мне просто нужно было найти взаимосвязь между этими двумя числами, чтобы я мог рассчитать будущие числа того же шаблона. – Orbit

1

то, что вы хотите, называется линейная интерполяция, правило трех, и т.д.

+0

Спасибо, веди меня на правильный путь. – Orbit

Смежные вопросы