Я пишу программу для решения задачи по геометрии.
Мой алгоритм не очень хорошо обрабатывает коллинеарную точку.
Есть ли какое-либо преобразование, которое я могу применить к точкам, чтобы избавиться от коллинеарности?
Я пишу программу для решения задачи по геометрии.
Мой алгоритм не очень хорошо обрабатывает коллинеарную точку.
Есть ли какое-либо преобразование, которое я могу применить к точкам, чтобы избавиться от коллинеарности?
Тогда я думаю, что шум действительно может быть решением. Как я писал в комментарии выше
Один из способов устранить коллинеарность — просто добавить шум в каждую точку, т. е. (x, y, z) ↦ (x + 0,01*(random() — 0,5), y + 0,01*(random() — 0,5), z + 0,01(random() - 0,5)) если random() возвращает случайное действительное число в [0, 1[.
Если вы работаете с большим количеством наборов точек, добавление шума к каждому набору может решить проблему в одном наборе, но создать ее в другом.
Если это так, вы можете проверить коллинеарность перед применением шума.
Условие колинеарности:
x1 y1 1
det x2 y2 1 = 0
x3 y3 1