Berechnung eines Krümmungskoeffizienten für Polygone

Geschrieben von am .

Analog zu einem einfachen Verfahren, Drehwinkel für Karten-Label zu berechnen, war dies der erste Versuch, eine geeignete Krümmung für Label zu berechnen.

Leider hat sich der hier berechnete Wert als nicht geeignet für diesen Zweck erwiesen. ☹

Der Krümmungskoeffizient wird berechnet als Integral über die Dichte multipliziert mit der Entfernung von der Rotationsachse (= x-Achse) und dem Quadrat der Entfernung von der y-Achse:

⟪ C = int_A x^2y\ dA ⟫

Als Teilaufgabe betrachten wir ein Trapez, dessen eine Achse mit der x-Achse übereinstimmt und dessen zwei weitere Achsen parallel zur y-Achse sind. Das Trapez ist durch die zwei Punkte ⟪(x_1, y_1)⟫ und ⟪(x_2, y_2)⟫ festgelegt:

                           ··+ y₂
                     ······  |
                ·····        |
           ·····             |
      ·····                  |
y₁ +··                       |
   |                         |
   |                         |
   |                         |
   |                         |
   |                         |
0 -+-------------------------+-
   x₁                        x₂

Das Trapez wird beschrieben durch:

⟪ f(x) = y_1 + (x-x_1) * (y_2-y_1) / (x_2-x_1) ⟫

Mit ⟪ Delta x := x_2-x_1 ⟫ und ⟪ Delta y := y_2-y_1 ⟫ und s := ⟪ Delta y // Delta x ⟫ ergibt sich:

⟪ f(x) = y_1 + s * (x-x_1) = y_1 - s * x_1 + s * x ⟫

Wir berechnen den Beitrag dieser Fläche zum Krümmungskoeffizienten:

⟪ C_i = int_(x=x_1)^(x_2) x^2 * int_(y=0)^(f(x))y\ dy\ dx ⟫

⟪ C_i = int_(x=x_1)^(x_2) x^2 * 1/2 [y^2]_0^(f(x)) dx ⟫

⟪ C_i = 1/2 int_(x=x_1)^(x_2) x^2 * f(x)^2 dx ⟫

Wir setzen für ⟪ f(x) ⟫ die Definition ein:

⟪ C_i = 1/2 * int_(x=x_1)^(x_2) x^2 * [y_1 - s * x_1 + s * x]^2 dx ⟫

⟪ C_i = 1/2 * int_(x=x_1)^(x_2) x^2 * ( y_1^2 + s^2 * x_1^2 + s^2 * x^2 - 2 * y_1 * s * x_1 + 2 * (y1*s - x1*s^2) * x ) dx ⟫

⟪ C_i = 1/2 * int_(x=x_1)^(x_2) ( ( y_1^2 + x_1^2 * s^2 - 2 * x_1 * y_1 * s ) * x^2 + 2* (y1 * s - x1 * s^2 ) * x^3 + s^2 * x^4 ) dx ⟫

⟪ C_i = 1/2 * ( (y_1^2 + x_1^2*s^2 - 2*y_1*x_1*s) * int_(x=x_1)^(x_2) x^2 dx + 2 * (y1*s - x1*s^2) * int_(x=x_1)^(x_2) x^3 dx + s^2 * int_(x=x_1)^(x_2) x^4 dx ) ⟫

⟪ C_i = 1/2 * ( (y_1^2 + x_1^2*s^2 - 2*y_1*x_1*s) * 1/3 * [x^3]_(x_1)^(x_2) + 2 * (y1*s - x1*s^2) * 1/4 * [x^4]_(x_1)^(x_2) + s^2 * 1/5 * [x^5]_(x_1)^(x_2) ) ⟫

⟪ C_i = 1/6 * (y_1^2 + x_1^2*s^2 - 2*y_1*x_1*s) * (x_2^3-x_1^3) + 1/4 * (y1*s - x1*s^2) * (x_2^4-x_1^4) + 1/10 * s^2 * (x_2^5-x_1^5) ⟫

Wir erweitern die Brüche mit 60 und multiplizieren aus:

⟪ C_i = 1/60 ({: ( y_1^2, * , ( 10 x_2^3 - 10 x_1^3 ) ), ( + y_1s , * , ( 15 x_2^4 - 20 x_2^3x_1 + 5 x_1^4 ) ), ( + s^2 , * , ( 6 x_2^5 - 15 x_2^4x_1 + 10 x_2^3x_1^2 - 1 x_1^5 ) ) :})⟫

Wir ziehen den Faktor ⟪ x_2 - x_1 ⟫ als ⟪ Delta x ⟫ vor die Summen:

⟪ C_i = 1/60 ({: ( y_1^2 , * , ( 10 x_2^3 - 10 x_1^3) ), ( + y_1s Delta x , * , ( 15 x_2^3 - 5 x_2^2x_1 - 5 x_2x_1^2 - 5 x_1^3) ), ( + s^2 (Delta x)^2 , * , ( 6 x_2^3 - 3 x_2^2x_1 - 2 x_2x_1^2 - 1 x_1^3) ) :}) ⟫

Mit ⟪ s * Delta x = Delta y ⟫ ergibt sich:

⟪ C_i = 1/60 ({: ( y_1^2 , * , ( 10 x_2^3 - 10 x_1^3) ), ( + y_1 Delta y , * , ( 15 x_2^3 - 5 x_2^3x_1 - 5 x_2x_1^2 - 5 x_1^3) ), ( + (Delta y)^2 , * , ( 6 x_2^3 - 3 x_2^2x_1 - 2 x_2x_1^2 - 1 x_1^3) ) :}) ⟫

Mit ⟪ Delta y = y_2-y_1 ⟫ und der zweiten binomischen Formel wird daraus:

⟪ C_i = 1/60 ( {: ( y_1^2 , * , ( 10 x_2^3 - 10 x_1^3) ), ( + y_1y_2 , * , ( 15 x_2^3 - 5 x_2^3x_1 - 5 x_2x_1^2 - 5 x_1^3) ), ( + y_1^2 , * , (-15 x_2^3 + 5 x_2^3x_1 + 5 x_2x_1^2 + 5 x_1^3) ), ( + y_2^2 , * , ( 6 x_2^3 - 3 x_2^2x_1 - 2 x_2x_1^2 - 1 x_1^3) ), ( + y_1y_2 , * , (-12 x_2^3 + 6 x_2^2x_1 + 4 x_2x_1^2 + 2 x_1^3) ), ( + y_1^2 , * , ( 6 x_2^3 - 3 x_2^2x_1 - 2 x_2x_1^2 - 1 x_1^3) ) :} ) ⟫

Wir fassen gleiche Potenzen von ⟪y_1⟫ und ⟪y_2⟫ zusammen:

⟪ C_i = 1/60 ({: ( y_1^2 , * , ( 10 x_2^3 - 10 x_1^3) ), ( + y_1^2 , * , ( 6 x_2^3 - 3 x_2^2x_1 - 2 x_2x_1^2 - 1 x_1^3) ), ( + y_1^2 , * , (-15 x_2^3 + 5 x_2^3x_1 + 5 x_2x_1^2 + 5 x_1^3) ), ( + y_1y_2 , * , ( 15 x_2^3 - 5 x_2^3x_1 - 5 x_2x_1^2 - 5 x_1^3) ), ( + y_1y_2 , * , (-12 x_2^3 + 6 x_2^2x_1 + 4 x_2x_1^2 + 2 x_1^3) ), ( + y_2^2 , * , ( 6 x_2^3 - 3 x_2^2x_1 - 2 x_2x_1^2 - 1 x_1^3) ) :}) ⟫

⟪ C_i = 1/60 ({: ( + y_1^2 , * , ( x_2^3 + 2 x_2^3x_1 + 3 x_2x_1^2 - 6 x_1^3) ), ( + y_1y_2 , * , ( 3 x_2^3 + x_2^3x_1 - x_2x_1^2 - 3 x_1^3) ), ( + y_2^2 , * , ( 6 x_2^3 - 3 x_2^2x_1 - 2 x_2x_1^2 - 1 x_1^3) ) :}) ⟫

Abschließend klammern wir noch einmal den Faktor ⟪ x_2 - x_1 ⟫ aus:

⟪ C_i = 1/60 (x_2 - x_1) ({: ( y_1^2 , * , ( 1 x_2^2 + 3 x_2x_1 + 6 x_1^2) ), ( + y_1y_2 , * , ( 3 x_2^2 + 4 x_2x_1 + 3 x_1^2) ), ( + y_2^2 , * , ( 6 x_2^2 + 3 x_2x_1 + 1 x_1^2) ) :}) ⟫

Jetzt summieren wir über alle Teilflächen (⟪ y_n := y_0 ", " x_n := x_0 ⟫):

⟪ C = sum_(i=0)^(n-1) C_i = 1/60 sum_(i=0)^(n-1) (x_(i+1) - x_i) ( ( y_i^2 , * , ( 1 x_(i+1)^2 + 3 x_(i+1)x_i + 6 x_i^2) ), ( + y_iy_(i+1) , * , ( 3 x_(i+1)^2 + 4 x_(i+1)x_i + 3 x_i^2) ), ( + y_(i+1)^2 , * , ( 6 x_(i+1)^2 + 3 x_(i+1)x_i + 1 x_i^2) ) ) square ⟫

Eigenschaften:

  • Durch den Term ⟪ x_(i+1) - x_i ⟫ ist der Term vom Drehsinn abhängig.
  • Bei Spiegelung an der y-Achse (und Änderung des Drehsinns) ändert sich das Vorzeichen.
  • Bei Spiegelung an der x-Achse (und Änderung des Drehsinns) bleibt das Vorzeichen gleich.
  • Bei Skalierung um k ändert er sich mit k5.
  • Bei flächentreuer Stauchung um k (Skalierung von x um k und y um 1/k) vergrößert sich der Koeffizient um den Faktor k.

Der Koeffizient muss also normalisiert werden (mit Fläche und Asymmetriekoeffizienten).