Bestehende Antworten berücksichtigen nicht, dass die Endpunkte willkürlich sind (anstatt gegeben). Daher ist es bei der Messung der Geradheit der Kurve nicht sinnvoll, die Endpunkte zu verwenden (z. B. um die erwartete Länge, den Winkel und die Position zu berechnen). Ein einfaches Beispiel wäre eine gerade Linie, bei der beide Enden geknickt sind. Wenn wir den Abstand von der Kurve und der geraden Linie zwischen den Endpunkten messen, ist dieser ziemlich groß, da die gerade Linie, die wir gezeichnet haben, von der geraden Linie zwischen den Endpunkten versetzt ist.
Wie erkennen wir, wie gerade die Kurve ist? Unter der Annahme, dass die Kurve glatt genug ist, möchten wir wissen, um wie viel sich die Tangente an die Kurve im Durchschnitt ändert. Für eine Linie wäre dies Null (da die Tangente konstant ist).
Wenn wir die Position zum Zeitpunkt t (x (t), y (t)) sein lassen, dann ist der Tangens (Dx (t), Dy (t)), wobei Dx (t) die Ableitung von x zum Zeitpunkt t ist (Diese Seite scheint keine Unterstützung für TeX zu haben). Wenn die Kurve nicht durch die Bogenlänge parametrisiert ist, normieren wir durch Teilen durch || (Dx (t), Dy (t)) ||. Wir haben also einen Einheitsvektor (oder Winkel) der Tangente an die Kurve zum Zeitpunkt t. Der Winkel ist also a (t) = (Dx (t), Dy (t)) / || (Dx (t), Dy (t)) ||
Wir interessieren uns dann für || Da (t) || ^ 2, das entlang der Kurve integriert ist.
Da wir höchstwahrscheinlich eher diskrete Datenpunkte als eine Kurve haben, müssen wir endliche Differenzen verwenden, um die Ableitungen zu approximieren. Also wird Da (t) (a(t+h)-a(t))/h
. Und a (t) wird ((x(t+h)-x(t))/h,(y(t+h)-y(t))/h)/||((x(t+h)-x(t))/h,(y(t+h)-y(t))/h)||
. Dann erhalten wir S, indem wir h||Da(t)||^2
für alle Datenpunkte summieren und möglicherweise durch die Länge der Kurve normalisieren. Am wahrscheinlichsten verwenden wir h=1
, aber es ist wirklich nur ein willkürlicher Skalierungsfaktor.
Um es noch einmal zu wiederholen: S ist für eine Linie Null und größer, je mehr sie von einer Linie abweicht. In der gewünschten Format, Verwendung zu konvertieren 1/(1+S)
. Da die Skalierung etwas willkürlich ist, ist es möglich, S mit einer positiven Zahl zu multiplizieren (oder auf andere Weise zu transformieren, z. B. mit bS ^ c anstelle von S), um die Geradheit bestimmter Kurven anzupassen.