Я выполнял некоторые операции с двумерными точками, выраженными в однородных координатах (x, y, w). Иногда одна из координат становится очень большой, и это может легко повлиять на последующие результаты.Нормализация однородных координат (2D)
Например, определение пересечений легко вычисляется с помощью векторного x-произведения. Это может привести к большим числам. Например. (50, 100, 1) x (-100, 50, 1) = (50, -150, 12500)
Я считаю, что эти результаты должны быть как-то нормализованы. В приведенном выше примере просто деление всех координат на 12500 кажется разумным. В целом я вижу 2 пути:
- разделить на координате с наибольшим абсолютным значением (не может быть ш), или
- разделите на ш (если ш = 0!), Так что каждая точка выражается либо (x, y, 0), либо (x, y, 1).
Так что мой вопрос в том, какой путь лучше и почему?
Я использую C# с float
значениями, если это имеет какую-либо практическую значимость.