Я думаю, что как только вы точно знаете что вы хотите измерить, реализация будет довольно простой.
Я могу представить несколько измерений:
- отношение длины дороги к расстоянию между началом и концом (из-за этого длинная одиночная кривая «извилистая», поэтому, скорее всего, это не полный ответ)
- количество точек перегиба на единицу длины (это сделало бы почти прямую дорогу с большим количеством небольших покачиваний, так что, скорее всего, это не полный ответ)
Эти два значения можно объединить умножением, так что вы получите:
road-length * inflection-points
--------------------------------------
start-end-distance * road-length
Вы можете видеть, что это можно сократить до «точек перегиба на начало-конец-расстояние», что мне кажется хорошим показателем «закручивания».
Что касается учета высоты, я думаю, что для первой попытки достаточно всего вычисления в трех измерениях.
Возможно, вы захотите обработать отклонения влево-вправо.однако, из-за перегибов вверх-вниз, чтобы иметь возможность масштабировать перегибы высот по некоторому фактору.