трилатерация процесс нахождения центра области пересечения трех сфер. Центральная точка и радиус каждой из трех сфер должны быть известны.
Давайте рассмотрим ваши три примера центральных точек P1 [-1,1], P2 [1,1] и P3 [-1, -1]. Первое требование состоит в том, что Р1' быть в начале координат, так что давайте регулировки точки, соответственно, добавляя смещение вектора V [1, -1] для всех трех:
P1' = P1 + V = [0, 0]
P2' = P2 + V = [2, 0]
P3' = P3 + V = [0,-2]
Примечания: Скорректированные точки обозначаются (первичная) аннотация.
P2 'также должен лежать на оси х. В этом случае это уже сделано, поэтому корректировка не требуется.
Мы предполагаем, что радиус каждой сферы будет 2.
Теперь у нас есть 3 уравнения (данные) и 3 неизвестных (X, Y, Z в системе центра пересечения точки).
Решите для P4'x:
x = (r1^2 - r2^2 + d^2)/2d //(d,0) are coords of P2'
x = (2^2 - 2^2 + 2^2)/2*2
x = 1
Решите для P4'y:
y = (r1^2 - r3^2 + i^2 + j^2)/2j - (i/j)x //(i,j) are coords of P3'
y = (2^2 - 2^2 + 0 + -2^2)/2*-2 - 0
y = -1
Игнорирование г для 2D задач.
P4' = [1, -1]
Теперь мы переводим обратно в исходное координатное пространство путем вычитания смещения вектора V:
P4 = P4' - V = [0,0]
Точка решения, P4, лежит в начале координат, как и ожидалось.
Во второй половине статьи описывается способ представления множества точек, где P1 не находится в начале координат, или P2 не находится по оси x так, чтобы они соответствовали этим ограничениям. Я предпочитаю думать об этом вместо этого как о переводе, но оба метода приведут к тому же решению.
Edit: Поворот P2' к оси х
Если P2' не лежит на оси х после перевода Р1 происхождения, мы должны выполнить поворот на представлении.
Во-первых, давайте создадим новые векторы для использования в качестве примера: P1 = [2,3] P2 = [3,4] P3 = [5,2]
Помните, мы должны сначала перевести P1 в начало. Как всегда, вектор смещения V является -P1. В этом случае V = [-2, -3]
P1' = P1 + V = [2,3] + [-2,-3] = [0, 0]
P2' = P2 + V = [3,4] + [-2,-3] = [1, 1]
P3' = P3 + V = [5,2] + [-2,-3] = [3,-1]
Для определения угла поворота, мы должны найти угол между P2' и [1,0] (ось х).
Мы можем использовать dot product равенство:
A dot B = ||A|| ||B|| cos(theta)
Когда Б [1,0], это может быть упрощена: Точка B всегда только X компонент А, и || B || (величина B) всегда умножается на 1 и поэтому может быть проигнорирована.
Теперь мы имеем Ax = || A || соз (тета), который мы можем перегруппировку к нашему окончательному уравнению:
theta = acos(Ax/||A||)
или в нашем случае:
theta = acos(P2'x/||P2'||)
Вычислит величину Р2' , используя || || = SQRT (Ax + Ay + Az)
||P2'|| = sqrt(1 + 1 + 0) = sqrt(2)
Подключив что мы можем решить для тета
theta = acos(1/sqrt(2)) = 45 degrees
Теперь давайте использовать rotation matrix, чтобы повернуть сцену -45 градусов. Поскольку P2'y положительно, а матрица вращения вращается против часовой стрелки, мы будем использовать отрицательное вращение, чтобы выровнять P2 по оси x (если P2'y отрицательный, не отрицайте theta).
R(theta) = [cos(theta) -sin(theta)]
[sin(theta) cos(theta)]
R(-45) = [cos(-45) -sin(-45)]
[sin(-45) cos(-45)]
Мы будем использовать двойной простое обозначение, «», чтобы обозначить векторы, которые были как и переведены вращались.
P1'' = [0,0] (no need to calculate this one)
P2'' = [1 cos(-45) - 1 sin(-45)] = [sqrt(2)] = [1.414]
[1 sin(-45) + 1 cos(-45)] = [0] = [0]
P3'' = [3 cos(-45) - (-1) sin(-45)] = [sqrt(2)] = [ 1.414]
[3 sin(-45) + (-1) cos(-45)] = [-2*sqrt(2)] = [-2.828]
Теперь вы можете использовать P1 ', P2 '', и P3' решить для P4 ''. Примените обратное вращение к P4 '', чтобы получить P4 ', затем обратный перевод, чтобы получить P4, вашу центральную точку.
Чтобы отменить вращение, умножьте P4 '' на R (-theta), в этом случае R (45). Чтобы отменить перевод, вычтите вектор смещения V, который совпадает с добавлением P1 (если вы первоначально использовали -P1 как ваш V).
Я не знаю, как я получаю эти точки P1, P2 и P3. Я имею в виду для каждого из ссылочных известных узлов, у меня есть координата x, y, z. – CB4
Р1 является точкой (который состоит из пары X, Y координат) в центре первого опорного узла. Аналогично для P2 и P3. Если у вас есть координаты, у вас есть P1, P2 и P3. Они одно и то же. – Dan
Я установил тестовые координаты, чтобы проверить математику, и это не дало мне правильный результат, поэтому я запутался. Это мой настройки: р1 = (-1,1) p2 = (1,1) р3 = (-1, -1) Из уравнения я нашел: ех = (1, 0) я = 0 еу = (0, -1) d = 2 и так, чтобы найти е и уг использовать другие уравнения и я получаю х = 1 у = 1 Что неправильно. Я ожидаю увидеть x = 0 и y = 0. Примечание: В этом случае я использую r1 = sqrt (2) = r2 = r3 Можете ли вы определить проблему в расчете? – CB4