kurse:ef05a-2021:kurven:beziergeometrisch

Geometrische Definition von Bézierkurven

Eine Bézierkurve $n$-ten Grades ist definiert durch $n+1$ Kontrollpunkte. Die einzelnen Punkte auf der Kurve lassen sich durch einen Parameter $t \in [0,1]$ parametrieren.

Die Bezierkurve vom Grad 1 mit den Kontrollpunkten $p_0$ und $p_1$ entspricht der Menge aller konvexen Kombinationen der beiden Punkte:

$$ p(t) = (1-t) \cdot p_0 + t \cdot p_1 =: I(t, p_0, p_1) $$ Die Funktion $I$ interpoliert linear zwischen $p_0$ und $p_1$ für $t \in [0,1]$.

Programmierung einer Vektor-Klasse in Python

Ziel ist es, komfortabel mit Vektoren arbeiten zu können. Insbesondere benötigen wir

  • Addition, Subtraktion und
  • Multiplikation mit einer Zahl.

Aktueller Code: vector-class.zip

Die Berechnung nimmt eine Liste von $n+1$ Punkten entgegen, und berechnet damit $n$ neue Punkte. Wenn $n=1$ ist man fertig, ansonsten reduziert man die Liste in gleicher Weise weiter.

Wir werden die allgemeine Formel formal herleiten.

bezier-explizit.jpg

Man kann dies auch direkt rechnerisch algebraisch tun, ist aber ziemlich mühsam. Und TR ist dafür, naja, bedingt zu gebrauchen.

Betrachtung der Polynome, die die einzelnen Punkte multiplizieren.

  • Konvexe Kombination
  • Graphen der Polynome

Mit Hilfe des TRs soll die explizite Formel für den Punkt $P(t)$ auf der kubischen Bezierkurve berechnet werden, die durch die 4 Punkte $a$, $b$, $c$, $d$ definiert wird.

  • Wenn Sie den Ausdruck haben, solle Sie ausmultiplizieren Sie mit expand().
  • Klammern Sie erst $a$ aus, mit factor(ausdruck, a). Notieren Sie sich den Faktor

TR Akrobatik

TR Akrobatik

(1-t)*a+t*b -> i(t,a,b)
seq(i(t,x[n],x[n+1]),n,1,dim(x)-1) -> r(x)
{a,b,c,d} -> x
r(r(r(x)))[0] -> p
seq(factor(polyCoeffs(factor(expand(p),x[n]),x[n]))[1]), n, 1, 4)))
x:[a,b,c,d];
i(t,a,b):=(1-t)*a+t*b;
r(l):=makelist(i(t,l[i],l[i+1]), i, 1, length(l)-1);
p:r(r(r(x)))[1];
create_list(factor(coeff(expand(p),v)),v,x);

Gegen ist die kubische Bézier-Kurve $p(t)$ durch die vier Kontrollpunkte $p_0$ bis $p_3$. Wir möchten hier die Ableitungen von $p(t)$ nach $t$ bestimmen und interpretieren.

Implementierung einer Bézier-Klasse (kubisch)

  • Array von 4 Vektoren
  • $p(t)$
  • $v(t)$
  • Subdivision in zwei Bézier-Kurven.
  • kurse/ef05a-2021/kurven/beziergeometrisch.txt
  • Last modified: 2021/11/04 09:39
  • by Ivo Blöchliger