====== 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.
===== Grad 1 =====
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: {{kurse:ef05a-2021:kurven:vector-class.zip}}
===== Rekursiver Code =====
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.
===== Explizite Formel =====
Wir werden die allgemeine Formel formal herleiten.
{{kurse:ef05a-2021:kurven: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
==== Weitere Herleitungen ====
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
(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)))
==== Mit Maxima ====
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);
===== Ableitungen =====
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.