Helwig Hauser Teil 2: Kurven und Flächen Parametrische Objekte.
1DVG3 - Bezier Kurven Kubische Bézier Kurven Vortrag: Pascal Gbodogbe 25. 1. 2000.
-
Upload
kreszenz-kemmerling -
Category
Documents
-
view
107 -
download
0
Transcript of 1DVG3 - Bezier Kurven Kubische Bézier Kurven Vortrag: Pascal Gbodogbe 25. 1. 2000.
DVG3 - Bezier Kurven 1
Kubische Bézier Kurven
Vortrag: Pascal Gbodogbe
25. 1. 2000
DV
G3 - B
ezier Ku
rven
2
Viele Graphik_Package sind aus kubischen Spline Funktion
abgeleitet.
Ziel: Polynom vom Grad drei in kubischen Bézierdarstellung.
Um dies zu erreichen benötige man diese vier Funktionen aus
kubischer Bézier_Kurven:
BEZ _ 0,3(x)=(1-x)^3
BEZ _ 1,3(x)=3*x(1-x)^2
BEZ _ 2,3(x)=3*(x^2)*(1-x)
BEZ _ 3,3(x)=x^3
Die Funktionen sind aus Bernsteinspolynom
BEZ_k,n(x)=C(n,k)*(x^k)*(1-x) ^(n-k) abgeleitet, wobei 0 <= x <= 1,
C(n,k)=n!/(k!)*(n-k)! und n = 3.
DV
G3 - B
ezier Ku
rven
3
Kubische Bézierdarstellung
P(x) sei ein belieges Polynom von Grad 3in kubische Bézier_kurve darzustellen P(x) = P0* BEZ _ 0,3(x) + P1* BEZ _ 1,3(x) + P2* BEZ _ 2,3(x) + P3* BEZ _ 3,3(x). EigenschaftenP(0) = P0P(1) = P3 , P3 entspricht P_n(=P mit Index n)P‘(0) = 3*(P1-P0) , entspricht P‘(0) = n*(P1-P0)P‘(1) = 3*(P3-P2) , entspricht P‘(1) = n*(P3-P2)P‘‘(0) = 6*[(P2-P1) - (P1-P0)] = 6*(P0-2*P1+P2) entspricht P‘‘(1) = n*(n-1)*[(P2-P1) - (P1-P0)] P‘‘(1) = 6*[(P1 - P2) - (P2 - P3)] = 6*(P1-2*P2+P3) entspricht P‘‘(1) = n*(n-1)*[(P_(n-2) - P_(n-1) ) - (P_(n-1) - P_(n))] P‘(= Erste Ableitung)P‘‘(=Zweite Ableitung)
DV
G3 - B
ezier Ku
rven
4
Bestimmung von koeffizienten P0,P1,P2 und P3
P0 = P(0)
P3 = P(1) , P3 entspricht P_n(=P mit Index n)
P1 = (1/3)*P‘(0) + P0
P2 = P3 - (1/3)* P‘(1)
DV
G3 - B
ezier Ku
rven
5
Graphische Darstellung
Um die Graphische Darstellung der Funktion zu realisieren,
wird 2D_Graphik benötigen.
DV
G3 - B
ezier Ku
rven
6
Einführung und Beispiele
Zusammenstellung der 2D_Graphik2D_Graphik klasse sind von Graphik klasse abgeleitet. 2D_Graphik enthält diese ElementePoint2D [{x,y}] Punkt mit den Koordinaten (x|y)
Line2D [{{x1,y1},…,{xn,yn}}] Polygonzug durch die Punkte (x1|y1) bis {x_n,y_n}Polygon2D [{{x1,y1},…,{x_n,y_n}}] Die vom Polygonzug durch die Punkte {x1,y1} bis {x_n,y_n}umschlossene Fläche wird ausgefülltCircle2D [{x,y},r] Kreis(Linie) mit Mittelpunkt (x|y) und Radius rCircle2D [{x,y},r,{winkel1,winkel2}] Kreisbogen mit Mittelpunkt (x|y) und Radius rCircle2D [{x,y},{r_x,r_y}] Ellipse mit Mittelpunkt (x|y) und Halbachsen r_x,r_yDisk2D [{x,y},r] Ausgefüllte Kreisscheibe mit Mittelpunkt (x|y) und Radius rDisk2D [{x,y},{r_x,r_y}] Ausgefüllte Ellipse
DV
G3 - B
ezier Ku
rven
7
• Rectangle [{xmin,ymin},{xmax,ymax}] Rechteck mit diagonalen Ecken in den angegebenen Punkten
• Text [“text“,{x,y}] Text, Zentrum des Textes ist im Punkt (x|y)• Text [“text“,{x,y},{±1, ±1}] Text, mit linken/rechtem bzw.
oberen /unterem Rand des Textes im Punkt (x|y)• Arrow[{xa,ya},{xe,ye}] zeichnet einen Pfeil (Vektor) mit
angegebenem Anfangs–und Endpunkt
DV
G3 - B
ezier Ku
rven
8
Affine Tranformation : Eine koordinatentransformation in dieser Form
x’= axxx + axyy +bx´ y’= ayxx + ayyy + by´ heißt eine 2D_Affinetransformation
jede der transformierte Koordinaten x’ und y’ ist eine lineare Funktion von der originalkoordinaten x und y, und parameter aij und bk sind Konstante , die von der transformationstyp bestimmt sind. Translation, Rotation und Skalierung sind einige beispiele der 2D_Affinetransformation
DV
G3 - B
ezier Ku
rven
9
Translation :Um original Koordinatenposition (x,y) in Position (x’,y’) verschieben zu können, benötige man eine Translation
Die Form lautet : x’= x + tx , y’= y + ty , wobei tx , ty Translationsabstande sind
Skalierung : Um die Dimension des Objektes möglich groß zu haben benötige man eine Skalierung in der Forme x’= x*sx , y’= y*sy , wobei sx , sy Skalierungsfaktor sind.
DV
G3 - B
ezier Ku
rven
10
Rotation : Um original Polarkoordinatenposition(x,y) in Position
(x’,y’)rotieren zu lassen, benötige man eine Rotationin der Form
x’= r cos(u+v) = r cos(u)cos(v) - r sin(u)sin(v)
y’= r sin(u+v) = r sin(u)cos(v) + r sin(v)cos(u) , wobei (x,y) in Polarkoordinaten sind:
x = r cos(u), y = r sin(u)
D.h.: x’= x cos(v) - y sin(v) y’= x sin(v) +y cos(v)