Что вам нужно, так это базовое преобразование:
Предположим, что координаты первого черного вектора (x1, x2), а координаты второго вектора (y1, y2).
Следовательно, нахождение красных векторов, попадающих в точку (z1, z2), эквивалентно решению следующей линейной системы:
x1*r1 + y1*r2 = z1
x2*r1 + y2*r2 = z2
или в матричной форме:
A x = b
/x1 y1\ |r1| = |z1|
\x2 y2/ |r2| |z2|
x = inverse(A)*b
Например, пусть черный вектор будет (2, 1) и (2, -1). Соответствующая матрица А будет
2 2
1 -1
и его обратное будет
1/4 1/2
1/4 -1/2
Таким образом, точка (x, y) в исходных координатах сможет быть представлена в альтернативной базе, используя следующую формулу:
(x, y) = (1/4 * x + 1/2 * y)*(2,1) + (1/4 * x -1/2 * y)*(2, -1)