Я ищу (почти всюду) дифференцируемую функцию f(p1, p2, p3, p4)
, которая с учетом четырех точек даст мне масштабно-независимую меру копланарности. Это ноль, если четыре точки лежат на одной плоскости и положительны в противном случае. Независимость от масштаба означает, что когда я равномерно масштабирую все точки, мера плоскостности будет возвращаться одинаково.
Я придумал кое-что довольно сложное и не легко оптимизируемое. Определите u=p2-p1
, v=p3-p1
, w=p4-p1
. Тогда мера планарности:
[(u x v) * w]² / (|u x v|² |w|²)
, где x означает перекрестное произведение, а '*' означает точечное произведение.
Числитель - это просто (квадрат) объема тетраэдра, определяемого четырьмя точками, а знаменатель является нормализующим фактором, который делает эту меру просто косинусом угла. Поскольку углы не меняются при равномерном масштабе, эта функция удовлетворяет всем моим требованиям.
Кто-нибудь знает что-нибудь попроще?
Alex.
Edit:
В конечном итоге я использовал метод расширенного лагранжиана для оптимизации, поэтому мне не нужно, чтобы он был независимым от масштаба. Достаточно просто использовать ограничение (u x v) * w = 0
, поскольку процедура оптимизации находит правильный множитель Лагранжа для компенсации масштаба.