Istniejące odpowiedzi nie biorą pod uwagę, że punkty końcowe są arbitralne (a nie podane). Dlatego podczas pomiaru prostoliniowości krzywej nie ma sensu używać punktów końcowych (na przykład do obliczenia oczekiwanej długości, kąta, położenia). Prostym przykładem może być linia prosta z dwoma końcami kinck. Jeśli mierzymy za pomocą odległości od krzywej i linii prostej między punktami końcowymi, będzie to dość duża, ponieważ narysowana linia prosta jest odsunięta od linii prostej między punktami końcowymi.
Jak powiedzieć, jak prosta jest krzywa? Zakładając, że krzywa jest wystarczająco gładka, chcemy wiedzieć, o ile średnio zmienia się styczna do krzywej. Dla linii byłoby to zero (ponieważ styczna jest stała).
Jeśli pozwolimy pozycji w czasie t być (x (t), y (t)), to styczną jest (Dx (t), Dy (t)), gdzie Dx (t) jest pochodną x w chwili t (wydaje się, że w tej witrynie brakuje obsługi TeXa). Jeśli krzywa nie jest sparametryzowana przez długość łuku, normalizujemy dzieląc przez || (Dx (t), Dy (t)) ||. Mamy więc wektor jednostkowy (lub kąt) stycznej do krzywej w czasie t. Tak więc kąt to a (t) = (Dx (t), Dy (t)) / || (Dx (t), Dy (t)) ||
Jesteśmy następnie zainteresowani zintegrowaniem krzywej || Da (t) || ^ 2.
Biorąc pod uwagę, że najprawdopodobniej mamy dyskretne punkty danych, a nie krzywą, musimy użyć różnic skończonych do przybliżenia pochodnych. Tak więc Da (t) staje się (a(t+h)-a(t))/h
. I staje się (t) ((x(t+h)-x(t))/h,(y(t+h)-y(t))/h)/||((x(t+h)-x(t))/h,(y(t+h)-y(t))/h)||
. Następnie otrzymujemy S, sumując h||Da(t)||^2
dla wszystkich punktów danych i ewentualnie normalizując przez długość krzywej. Najprawdopodobniej używamy h=1
, ale tak naprawdę jest to tylko arbitralny czynnik skali.
Aby powtórzyć, S będzie wynosić zero dla linii i tym większe, im bardziej odbiega od linii. Aby przekonwertować na wymagany format, użyj 1/(1+S)
. Biorąc pod uwagę, że skala jest nieco dowolna, możliwe jest pomnożenie S przez pewną liczbę dodatnią (lub przekształcenie jej w inny sposób, np. Użyj bS ^ c zamiast S), aby wyregulować, jak proste są niektóre krzywe.