2016-05-11 11 views
2

Ich habe die Gleichung eines Polynoms dritter Ordnung und zwei Punkte auf diesem Polygon liegen. Ich kann auch die Länge des Polygons zwischen diesen Punkten mit der opencv arcLength-Funktion berechnen.Divide Polynom in gleicher Länge in OpenCV

Wie bekomme ich diese gleichmäßig verteilten Punkte, die das Polygon in N Teile mit der gleichen Länge teilen?

Problem visualization

Antwort

1

Mal sehen, ob dies helfen kann. Im folgenden:

f = polynomial 
f' = derivative of f 
N = Number of subdivisions 
D = length of each subdivisions 
a = x coordinate of f for the first end of the curve. 
M = max of f' in the interval [a, b] where the curve is to be drawn. 
k = an integer such that an error of M/k would be negligible 

Algorithmus

  • Für jeden 1 <= j <= N - 1 finden n(j), so dass die folgende sum(j) nähert sich jD von weniger als M/k:

    sum(j) = sum from i=1 to n(j) of sqrt(1 + f'(a + (i-1)/k)^2)/k 
    

Idee des Algorithmus

Die Menge:

1/k * sqrt(1 + f'(a + (i-1)/k)^2) 

ist die ungefähre Länge der Kurve zwischen a + (i-1)/k und a + i/k.

Die Idee des Algorithmus ist die Länge dieser kleinen Kurvensegmente zu summieren versuchen nahe genug, welche zu finden, um D, 2D, 3D usw.

Verwandte Themen