Существует ли функция R для нахождения относительных расстояний между точками?

#r #math #geometry #distance #computational-geometry

#r #математика #геометрия #расстояние #вычислительная геометрия

Вопрос:

У меня есть несколько точек, распределенных на графике XY, как на картинке. Есть ли способ распознать вершину многоугольника (в данном случае треугольника) и присвоить каждой точке значение трехмерной координаты на основе расстояний между точками?
Вершина будет (1, 0, 0), (0, 1, 0) и (0, 0, 1), в то время как остальные 4 точки должны быть рассчитаны по этой ссылке, например, центральная точка должна быть примерно такой (0.33, 0.4, 0.27).

введите описание изображения здесь

Комментарии:

1. Вы ищете геометрическое преобразование, которое сопоставляет ваши три точки с (1,0,0), (0,1,0) и (0,0,1)?

2. Ваши объяснения особенно непрозрачны…

3. Прошу прощения за это плохое объяснение, но я не знаю правильной математической терминологии для этого случая. Это правильно, как указано @Stef, но есть нечто большее, чем просто отображение вершин треугольника. Я должен быть в состоянии найти остальные четыре точки в новых координатах. Я рассматриваю эту операцию как преобразование этого треугольника в поверхность, которая пересекает в вершинах треугольника три оси xy и z в (1,0,0), (0,1,0) и (0,0,1). Другие точки внутри треугольника будут представлены на этой поверхности в виде координат x, y и z.

4. Простые геометрические преобразования являются частным случаем аффинных преобразований. В случае 2dplane-to-3dspace аффинное преобразование может быть закодировано как матрица dim-3×2 M плюс вектор dim-3 T. Это всего 9 коэффициентов, которые вам нужно найти. Каждая из трех точек P = (x0, y0) в вашем исходном треугольнике отображается в точку Q = (x’, y’, z’) в пространстве, что преобразуется в матрично-векторное уравнение Mp T = Q, что эквивалентно 3 уравнениям. Три точки 3 эквалайзера на точку = 9 эквалайзеров. Неизвестными являются коэффициенты M и T. Решите уравнения: вы получите свое преобразование.

5. Большое вам спасибо, я постараюсь решить эти уравнения и добраться до координат!

Ответ №1:

Я бы, вероятно, начал с выпуклой оболочки, если вы ожидаете выпуклые формы, оттуда вы можете проверять каждые 3 точки, и если угол ниже некоторого порога, удалите среднюю точку из многоугольника. Тогда вы можете просто использовать стандартный алгоритм для получения центральной точки многоугольника.

Другое решение, если приближение подходит, вы можете просто использовать взвешенный центр всех точек. Среднее значение значений X и среднее значение значений Y дает вам вашу точку x / y. возможно, более эффективно, если вы сделаете это с точками выпуклой оболочки. Хотя это может быть смещено, если слишком много точек находятся в пределах заданной области. То есть: скажем, около одного угла было 100 точек, но только 10 точек около двух других углов треугольника. Это было бы сильно взвешено по отношению к этому углу с 100 точками.

Не знаком с R, так что это лучшее, что я могу сделать.