DE4244462A1 - Verfahren zur Generierung von ebenen technischen Kurven oder Konturen - Google Patents

Verfahren zur Generierung von ebenen technischen Kurven oder Konturen

Info

Publication number
DE4244462A1
DE4244462A1 DE4244462A DE4244462A DE4244462A1 DE 4244462 A1 DE4244462 A1 DE 4244462A1 DE 4244462 A DE4244462 A DE 4244462A DE 4244462 A DE4244462 A DE 4244462A DE 4244462 A1 DE4244462 A1 DE 4244462A1
Authority
DE
Germany
Prior art keywords
bezier
curve
points
point
polynomial
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE4244462A
Other languages
English (en)
Inventor
Traugott Schulmeiss
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SCHULMEISS, TRAUGOTT, 07747 JENA, DE
Original Assignee
EQUIcon Software GmbH Jena
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EQUIcon Software GmbH Jena filed Critical EQUIcon Software GmbH Jena
Priority to DE4244462A priority Critical patent/DE4244462A1/de
Priority to JP6514689A priority patent/JPH08504984A/ja
Priority to US08/481,451 priority patent/US5717847A/en
Priority to EP94902635A priority patent/EP0954618B1/de
Priority to DE59310364T priority patent/DE59310364D1/de
Priority to PCT/DE1993/001252 priority patent/WO1994015267A2/de
Publication of DE4244462A1 publication Critical patent/DE4244462A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

Die Erfindung bezieht sich auf ein Verfahren zur Generierung von ebenen technischen Kurven oder Konturen für technische Geräte, in denen ebene gekrümmte geometrische Objekte in besonders großem Umfang, in sehr hoher Auflösung und/oder unter Realtime- Anforderungen dargestellt oder generiert werden müssen. Die erfindungsgemäße Lösung ermöglicht die schnelle und exakte Generierung digitaler Approximationen für spezielle ebene Kurven im Bereich der grafischen Datenverarbeitung. Die betrachteten Splines werden in grafischen Entwurfssystemen eingesetzt als effiziente und flexible Mittel zur Beschreibung gekrümmter linienhafter und flächenhafter geometrischer Objekte und zur angenäherten Beschreibung mathematisch komplizierter Kurven. Digitale Approximationen (Diskretisierungen) der Splines werden benötigt für die grafische Darstellung der durch Splines beschriebenen Objekte in einem quadratischen Raster sowie zur Ansteuerung von technischen Geräten, die durch Splines beschriebene Objekte in einem quadratischen Raster belichten oder in anderer Form zur Generierung von Kurven, Konturen oder Flächen umsetzen. Derartige Anwendungen sind etwa Laserbelichter (Drucker, Plotter etc.), Mikrolithografie mit Elektronen- oder Röntgenstrahlen, Mikrosystemtechnik, binäre und integrierte Optik, Herstellung von Lichtwellenleitern, 2-D-Robotersteuerungen, Drucktechnik und die Visualisierung von Entwurfsdaten.
Grafische Entwurfssysteme sind in vielen technischen Bereichen ein unabdingbares Werkzeug zur Produktentwicklung und zur Erzeugung von Fertigungsdaten. Auf klassischen Gebieten wie Maschinen-, Automobil-, Schiff- und Flugzeugbau oder zur Entwicklung mikroelektronischer Schaltkreise existieren leistungsfähige, komplexe, z. T. hochautomatisierte Entwurfssysteme. Für sie ist kennzeichnend, daß sie zur Modellierung von gekrümmten ebenen oder räumlichen Kurven und Flächen Splines verwenden, bevorzugt parametrische kubische Splines.
Splines verbinden die Vorteile von Flexiblität und Universalität als Entwurfshilfsmittel mit einfacher rechentechnischer Handhabbarkeit und geringem Datenaufwand zur Beschreibung auch komplizierterer Objekte. Während bis vor wenigen Jahren ausschließlich polynomiale Splines eingesetzt wurden, bieten jetzt rationale Splines größeren Entwurfsspielraum bei nur unwesentlich gesteigertem Rechenaufwand und finden Aufnahme sowohl in neueren Entwurfssystemen als auch als geometrische Primitive in Standards der Computergrafik. Ein weiterer Vorteil rationaler Splines besteht darin, daß sie quadratische Kurven (Kreisbögen, Ellipsen, Parabeln, Hyperbeln) exakt darstellen.
Zur Visualisierung der Entwurfsergebnisse und zur Ansteuerung technischer Gerät, die die Entwürfe in industrieller Produkte umsetzten, werden in der Regel koordinatengesteuerte Einrichtungen mit einer maximalen diskreten Koordinatenauflösung verwendet. Daher können nur Punkte eines quadratischen Rasters codiert und angesteuert werden, und es entsteht die Aufgabe, digitale Approximationen für durch Splines beschriebene Kurven und Konturen zu generieren. Dies ist sowohl ein rechenzeitaufwendiger als auch ein vom Ergebns her datenintensiver Vorgang.
Mit der Entwicklung der Mikrostrukturtechnik treten technische Anwendungen auf, für die es noch keine spezialisierten grafischen Entwurfssysteme gibt und die an die Digitalisierung erhöhte Anforderungen stellen. Bei wesentlich gesteigerter Auflösung wachsen die zu erzeugenden Rasterpunktmengen und damit die notwendigen Rechenzeiten stark an. Es werden Entwürfe notwendig, bei denen eine vollständige Digitalisierung auf unvertretbar hohe Datenmenge führen würde, bei denen daher die Digitalisierung parallel zum technischen Steuervorgang und somit unter Echtzeitbedingungen erfolgen muß. Die Anforderungen an die Genauigkeit der erzeugten Konturen wachsen.
Insgesamt ist der Stand der Entwurfstechnik auf diesem und ähnlichen Gebieten dadurch gekennzeichnet, daß die Probleme der Digitalisierung kubischer Splines deren Einsatz zur Modellierung gekrümmter geometrischer Objekte bisher behinderten. Statt dessen werden Kreis- oder Ellipsenbögen verwendet, für deren exakte Digitalisierung schnelle und einfache Verfahren existieren, oder kompliziertere Bögen werden durch (datenaufwendige und ungenaue) Polygonzüge angenähert. In manchen Systemen wird die erforderliche Rechenzeit dadurch gesenkt, daß ausschließlich polynominale quadratische Splines genutzt werden können.
Zweckmäßigerweise können verschiedene gebräuchliche Klassen von Splines zur Digitalisierung durch einfache Transformationen in Bezierkurven überführt werden. Nach dem Stand der Technik werden zur Berechnung einzelner Kurvenpunkte einer Bezierkurve (x(t), y(t)) der Algorithmus von de Casteljau oder ein dem Horner-Schema verwandtes Verfahren eingesetzt [G. Farin: Curves und Surfaces for CAGD, Academic Press 1990]. Die digitale Approximation einer Kurve wird zusammengesetzt aus den digitalen Approximationen der zwischen berechneten Kurvenpunkten liegenden Strecken.
Dieses Verfahren weist drei Nachteile auf, die insbesondere bei Anwendungen in innovativen technischen Bereichen von Bedeutung sind:
  • 1. Anzahl und Zeitbedarf der Rechenschritte zur Berechnung eines Kurvenpunktes sind relativ hoch, speziell bei rationalen (nichtpolynomialen) Splines.
  • 2. Die Schrittweite des Parameters t, mit der einzelne Kurvenpunkte berechnet werden, muß in Bereichen großer Krümmung oder starker Koordinatenänderung einer Kurve feiner gewählt werden als in anderen Bereichen. Diese Adaptierung erfordert zusätzlichen Aufwand. Verzichtet man darauf, treten entweder Effizienzverluste oder Genauigkeitsverluste ein.
  • 3. Es kann nicht garantiert werden, daß jeder erzeugte Rasterpunkt einen Abstand parallel zu den Koordinatenachsen kleiner oder gleich der halben Rasterschrittweite von der exakten Splinekurve hat, auch nicht bei extrem feiner Schrittweite des Parameters t. Ein exaktes Verfahren kann diesen Maximalfehler garantieren.
Eine rekursive Anwendung des Algorithmus von de Castaljau, die den dritten Nachteil vermeidet, wurde in [D. E. Knuth: Computers & Typesetting; D. Addison Wesley 1986] angegeben. Sie ist allerdings sehr rechenzeitaufwendig, da in ungünstigen Fällen die Anzahl der auf komplizierte Weise zu berechnenden Kurvenpunkte vergleichbar mit der Anzahl der zu erzeugenden Rasterpunkte ist.
In der Veröffentlichung [Knuth] wurde auch die sog. Oktantenteilung beschrieben. Sie vereinfacht das Verfahren zur Generierung eines Splinebogens, indem sie eine Splinekurve in Abschnitte unterteilt - an den Maxima und Minima von x(t) bzw. y(t) sowie an denjenigen Punkten, in denen der Anstieg der Tangente an die Kurve +1 oder -1 beträgt. Die Generierung der einzelnen Abschnitte wird dann auf die Generierung eines Bogens in Standardlage zurückgeführt. Diese Verfahrensweise wird in der hier vorgeschlagenen Neuerung übernommen, allerdings wird zur Generierung nicht von der parametrischen Bezierkurve ausgegangen, sondern diese wird hierzu in eine implizite kubische Kurve f(x, y) = 0 mit einem kubischen Polynom f transformiert.
In dem in U.S. Patent 47 89 954 beschriebenen ähnlichen Verfahren zur digitalen Approximation einer impliziten quadratischen Kurve F(x, y) = 0 wird dagegen bei der Generierung jedes einzelnen Rasterpunktes überprüft, ob in der Kurvenverfolgung ein Oktantenwechsel und damit eine Änderung der Rechenvorschrift erforderlich ist. Die dafür notwendigen Rechenschritte werden im hier vorgeschlagenen Verfahren außerhalb der Schleife zur Bogengenerierung und nur einmalig durchgeführt, wobei sich die angestrebte Generierung von Bögen in hoher Auflösung erheblich beschleunigt.
Das im obengenannten Patent beschriebene Verfahren ist in der Lage, eine quadratische Kurve in einem Zug zu erzeugen, da ein Oktantenwechsel automatisch erkannt und in den Ablauf integriert wird. Um die Rechenoperationen dabei einfach zu halten, wird dieser Vorteil jedoch mit dem Nachteil erkauft, daß der Approximationsfehler eines generierten Rasterpunktes einen ganzen Rasterschritt, also das Zweifache des garantierbaren Maximalfehlers betragen kann.
Der im Patentanspruch 1 angegebenen Erfindung liegt das Problem zugrunde, ein Verfahren zur Generierung von ebenen technischen Kurven oder Konturen zur Darstellung von technischen Bildern anzugeben, das mittels Digitalisierung von parametrischen polynomialen und rationalen kubischen Bezierkurven in der x-y-Ebene aufeinanderfolgende Rasterpunkte mit möglichst wenigen einfachen Rechenoperationen erzeugt. Darüber hinaus soll es den kleinstmöglichen Fehler der erzeugten Rasterpunkte garantieren und die Probleme der passenden Schrittweitenwahl bei der Berechnung von Kurvenpunkten vermeiden. Weiterhin soll das vorgeschlagene Verfahren den Rechenaufwand zur Vorbereitung der Generierung einzelner Bögen möglichst gering halten.
Dieses Problem wird dadurch gelöst, daß zur Digitalisierung parametrischer, rationaler oder polynomialer kubischer Bezierkurven der Form
mit den Kontrollpunkten
Xi = (xi, yi) (0 < = i < = 3),
den Gewichten p, q < 0,
und dem Parameter t mit 0 < = t < = 1
diese in Oktantenbögen, die getrennt erzeugt werden, zerlegt werden, derart, daß die Grenzen der Oktantenbögen durch die Parameter t an den Punkten der Kurve bestimmt werden, wo diese den Anstieg 0, ∞, 1 oder -1 aufweist, daß anschließend die Kurven zur Befreiung von der Parametrisierung in eine implizite Form f(x, y) = 0 transformiert werden, daß eine zusätzliche Kurventeilung der Bezierkurve an den Stellen erfolgt, an denen f(x, y) = 0 eine Selbstüberschneidung besitzt und danach eine Bestimmung der Koordinaten aller Teilungspunkte aus den entsprechenden Parameterwerten erfolgt, wobei die Teilungspunkte zusammen mit den Anfangs- und Endpunkten der ursprünglichen Kurve die Anfangs- und Endpunkte aller Einzelbögen bilden, daß alle diese Bögen durch Spiegelungen an einer oder mehreren der drei Achsen x = 0, y = 0 oder x = y in die Standardlage gebracht werden, daß die Generierung der digitalen Approximation mit der Bestimmung des zum Startpunkt des Bogens benachbarten Rasterpunktes (x₀, y₀) beginnt, wobei durch die Oktantenteilung und die Spiegelungen gesichert ist, daß der Anstieg des Bogens stets zwischen 0 und 1 liegt, daß anschließend die Berechnung der Funktion f(x₀+1, y₀+½) erfolgt, wobei diese Berechnung und die Auswertung des Vorzeichens von f in (x₀+1, y₀+½) die Entscheidung ermöglicht, zwischen welchem Rasterpunkt und Testpunkt der Bogen verläuft und daß anschließend dieser Rasterpunkt den Ausgangspunkt für den nächsten Schritt bis zum Erreichen des Endpunktes des Bogens bildet.
Ausgangspunkt des erfindungsgemäßen Verfahrens ist die Standardform einer rationalen kubischen Bezierkurve
mit den Kontrollpunkten
Xi = (xi, yi) (0 < = i < = 3),
den Gewichten p, q < 0,
und dem Parameter t mit 0 < = t < = 1.
Falls p = q = 1, wird das Nennerpolynom identisch 1 und die Bezierkurve ist polynomial. Von der Standardform abweichende Bezierkurven, bei denen die Kontrollpunkte X₀ oder X₃ mit von 1 verschiedenen Gewichten versehen sind, können durch eine einfache Parametertranformation in die Standardform überführt werden.
Für die schnelle Generierung der Rasterpunkte ist es erforderlich, die Kurve in sogenannte Oktantenbögen zu zerlegen und diese getrennt zu erzeugen. Dazu werden diejenigen Parameterwerte t ermittelt, bei denen die Kurve eine waagerechte oder senkrechte Tangente besitzt bzw. eine Tangente mit dem Anstieg +1 oder -1. Das geschieht durch die Lösung von 4 Polynomgleichungen 4. Grades, die im Parameterintervall [0, 1] jeweils höchstens zwei Lösungen besitzen. Im vorgschlagenen Verfahren werden die Polynome 4. Grades als Bezierfunktionen dargestellt und durch ein schnelles geometrisches Verfahren rekursiv ihre Nullstellen bestimmt.
Von der Parametrisierung befreit man sich durch den Übergang zu einer parameterlosen impliziten Form f(x, y) = 0 mit einem in x und y kubischen Polynom f. Die Bezout- Resultante, eine dreireihige Determinante, deren Elemente lineare Polynome in x und y sind, liefert diese Darstellung. Aus ihr lassen sich die Koeffizienten von f leicht gewinnen, indem passend gewählte Koordinatenpaare in die Kurvengleichung eingesetzt werden und das entstehende homogene lineare Gleichungssystem gelöst wird.
Die implizite Kurvengleichung setzt die gegebene Bezierkurve in der ganzen x-y-Ebene fort. Aus algorithmischen Gründen muß eine zusätzliche Kurventeilung an den Stellen der Bezierkurve erfolgen, an denen f = 0 eine Selbstüberschneidung besitzt, auch wenn die ursprüngliche Bezierkurve diese nicht aufweist. Die zugehörigen Parameterwerte werden aus der Bezierform problemlos über das Lösen einer quadratischen Gleichung berechnet.
Aus den Parameterwerten aller Teilungspunkte werden die Koordinaten der Teilungspunkte bestimmt. Sie bilden zusammen mit dem Anfangs- und Endpunkt der ursprünglichen Kurve die Anfangs- und Endpunkte aller Einzelbögen. Jeder dieser Bögen wird durch eine Auswahl aus den drei Transformationen Spiegelung an der Geraden x = 0, an der Geraden y = 0 und an der Geraden x = y in die Standardlage gebracht. Sie ist dadurch gekennzeichnet, daß der Richtungsvektor (dx, dy) vom Anfangspunkt des Bogens zum Endpunkt positive Koordinaten besitzt und daß dx < = dy. Durch eine eventuelle Negation des transformierten Polynoms f wird gewährleistet, daß Punkte unterhalb des Bogens beim Einsetzen in die Kurvengleichung positive Werte liefern.
Die Generierung der digitalen Approximation beginnt mit der Bestimmung des zum Startpunkt des Bogens benachbarten Rasterpunktes (x₀, y₀). Durch die Oktantenteilung und die durchgeführte Transformation ist gesichert, daß der Anstieg des Bogens an jeder Stelle zwischen 0 und 1 liegt. Damit kommen zum Abszissenwert x₀+1 nur die Punkte (x₀+1, y₀) und (x₀+1, y₀+1) als Rasterpunkte mit minimalem Abstand zur Kurve in Frage. Die Berechnung von f(x₀+1, y₀+½) und die Auswertung des Vorzeichens von f in diesem Testpunkt erlaubt die Entscheidung, zwischen welchem Rasterpunkt und dem Testpunkt der Bogen verläuft. Dieser Rasterpunkt ist nun Ausgangspunkt für den nächsten Schritt usw. bis der Endpunkt des Bogens erreicht ist.
Zusätzlich zu dem Funktionswert im Testpunkt sind 2 Korrekturwerte erster Ordnung für den Funktionswert und drei Korrekturwerte zweiter Ordnung für die Korrekturen erster Ordnung zu berechnen. Zusammen mit vier konstanten Korrekturwerten dritter Ordnung ermöglichen sie es, alle verwendeten Parameter durch lediglich 6 Additionen je nach der getroffenen Entscheidung für den Übergang zum nächsten Testpunkt inkrementell zu aktualisieren.
Durch die Entscheidungen, wann in dem digitalisierten Bogen jeweils nur eine Koordinate oder beide gleichzeitig zu inkrementieren sind, wird die digitale Approximation vollständig beschrieben. Für die Weiterverarbeitung der Daten ist lediglich eine Rücktransformation des Bogenanfangspunktes und eine Uminterpretation der Koordinatenschritte notwendig.
Detaillierte Beschreibung des Verfahrens 1. Bestimmung der Parameterwerte zur Oktantenteilung
Es sei eine ebene kubische rationale Bezierkurve in Standardform
zu digitalisieren. Beim Durchlauf durch die Kurve für wachsende Parameterwerte t kann sich in Analogie zum Durchlauf eines Kreisbogens in der Regel mehrfach der durchlaufene Oktant des Tangentialvektors (x′(t), y′(t)) an die Kurve ändern. Zwischen den Wechseln, innerhalb eines sogenannten Oktantenbogens, besitzt die digitalisierte Kurve eine eindeutige Fortschreitrichtung (x- oder y-Richtung), einen bestimmten Durchlaufsinn (in Richtung wachsender oder fallender Koordinaten ), und die Zuwächse von Rasterpunkt zu Rasterpunkt orthogonal zur Fortschreitrichtung besitzen ein festes Vorzeichen (positiv oder negativ). Die 8 Oktanten können folgendermaßen charakterisiert werden:
Die Oktantenwechsel treten auf den Stellen t mit x′(t) = 0, y′(t) = 0 und x′(t) = y′(t) bzw. x′(t) = -y′(t), an denen die Kurve Extremwerte in x oder y oder den Anstieg +1 bzw. -1 besitzt.
Jede der Funktionen x′(t), y′(t), (x(t)-y(t))′ hat ausgehend von den rationalen Koordinatengleichungen die Form
wobei
u(t) = a₀ (1-t)³+3a₁ p t(1-t)²+3a₂ q t² (1-t)+a₃t³
eine kubische Bezierfunktion und v(t) den Nenner der Gleichung der ursprünglichen Bezierkurve bezeichnet.
Die Nullstellen einer derartigen Funktion sind aus den Nullstellen des Zählers bestimmbar. Der Nenner ist wegen p, q < 0 stets größer Null. Der Zähler einer Ableitungsfunktion ist formal ein Polynom 5. Grades, da jedoch der Koeffizient von t⁵ unabhängig von der Wahl der Ordinaten ai und der Gewichte p, q identisch verschwindet, ist lediglich eine Gleichung 4. Grades zu lösen. Man kann voraussetzen, daß die betrachteten Gleichungen im Intervall [0,1] maximal 2 Lösungen besitzen, da eine rationale Bezierkurve auf ihrem Parameterintervall keinen qualitativ anderen Verlauf hat als die entsprechende polynomiale mit den Gewichten p = q = 1, bei der unter den getroffenen Voraussetzungen die Ableitungen nach t quadratische Polynome sind.
Für eine schnelle Lösung der Gleichung u′v-uv′ = 0 im Intervall [0,1] wird ihre linke Seite als eine polynomiale Bezierfunktion vom Grad 4
B(b₀,b₁,b₂,b₃,b₄;t) = b₀ (1-t)⁴+4 b₁ t(1-t)³+6 b₂t²(1-t)²+4 b₃ t³(1-t)+b₄t⁴
dargestellt. Dabei gelten (bis auf einen konstanten Faktor) folgende Formeln
b₀ = 2 p (a₁ - a₀),
b₁ = q (a₂ - a₀).
b₂ = (a₃ - a₀)/3+p q (a₂ - a₁),
b₃ = p (a₃ - a₁),
b₄ = 2 q (a₃ - a₂).
Zusätzlich zu dem Ordinatenvektor der Bezierfunktion werden zwei weitere Variablen eingeführt und initialisiert - der Anfangspunkt s = 0 ihres Parameterintervalls und die Intervallänge 1 = 1.
Das Verfahren zur Nullstellenbestimmung besteht aus mehreren Schritten:
  • 1. Abtrennen einer auf dem Rand des Parameterintervalls liegende Nullstelle,
  • 2. Separieren der Nullstellen und Eingrenzen einer separierten Nullstelle durch sukzessive Halbierung des Parameterintervalls,
  • 3. schnelles Eingrenzen einer Nullstelle, sobald die Bezierfunktion auf dem verkleinerten Parameterintervall keinen Wendepunkt besitzt.
  • 4. Das schnelle Eingrenzen einer separierten Nullstelle kann auch nach einer prinzipiell anderen Methode erfolgen, und zwar durch die alternierende Anwendung von Schmiegungsparabeln am linken und rechten Rand des Parameterintervalls.
zu 1.
Eine auf dem Rand des Parameterintervalls liegende Nullstelle ist daran erkennbar, daß b₀ = 0 (Nullstelle für t = 0) oder b₄ = 0 (Nullstelle für t = 1). Die folgenden Transformationen der Bezierfunktion B(b₀,b₁,b₂,b₃,b₄;t) zu B(c₀,c₁,c₂,c₃,c₄;t) stellen ein Polynom mit einem um 1 verringerten Grad her, das alle ursprünglichen Nullstellen außer der am Rand liegenden aufweist:
Falls b₀ = 0,
c₀ = 4 b₁,
c₁ = b₁+3 b₂/2,
c₂ = b₂+2 b₃/3,
c₃ = b₃+b₄/4,
c₄ = b₄.
Falls b₄ = 0,
c₀ = b₀,
c₁ = b₁+b₀/4,
c₂ = b₂+2 b₁/3,
c₃ = b₃+3 b₂/2,
c₄ = 4 b₃.
zu 2.
Das vorgeschlagene Verfahren zur Berechnung der Nullstellen liefert eine obere und eine untere Schranke für jede der Nullstellen im Parameterintervall [0,1]. Die Differenz beider Schranken kann kleiner als ein vorgegebener Fehler delta gemacht werden, so daß die zu den Mittelwerten der Schranken berechneten Kurvenpunkt im vorgegebenen Raser hinreichend nahe an den Trennstellen der Oktantenbögen liegen. Das Verfahren beginnt mit einer sukzessiven Halbierung des Parameterintervalls.
Der Algorithmus von de Casteljau erlaubt es, eine polynominale Bezierfunktion B(a₀, . . ., an; t) an der Stelle t = t₀ aufzutrennen und in zwei Bezier-Segmente B₁(b₀, . . ., bn; t) und B₂(c₀, . . ., cn; t) zu zerlegen. Dabei gilt
B₁(b₀, . . ., bn; t) = B(a₀, . . ., an; t₀*t),
B₂(c₀, . . ., cn; t) = B(a₀, . . ., an; t₀+(1-t₀)*t)
für 0 < = t < = 1.
Die abgeleiteten Segmente B₁ und B₂ stellen die beiden Teile der Bezierfunktion B wieder als Bezierfunktion über [0,1] dar. Deshalb ist es notwendig, in den Variablen s (Startpunkt) und l (Länge) mitzuführen, welchem Abschnitt des Parameterintervalls der Ausgangsfunktion jeweils ein Segment entspricht.
Die Startpunkte und die Intervallängen der abgetrennten Segmente werden gemäß
s(B₁) = s(B),
s(B₂) = s(B)+t₀*1(B),
1(B₁) = t₀*1(B),
1(B₂) = (1-t₀)*1(B)
berechnet.
Die Rechenschritte zur Auftrennung werden bei n = 4 zweckmäßigerweise nach dem folgenden Schema organisiert:
b₀: = a₀
b₁: = a₀+t₀*(a₁ - a₀)
b₂: = a₁+t₀*(a₂ - a₁)
c₂: = a₂+t₀*(a₃ - a₂)
c₃: = a₃+t₀*(a₄ - a₃)
c₄: = a₄
c₁: = b₂+t₀*(c₂ - b₂)
b₂: = b₁+t₀*(b₂ - b₁)
c₂: = c₂+t₀*(c₃ - c₂)
b₃: = b₂+t₀*(c₁ - b₂)
c₁: = c₁+t₀*(c₂ - c₁)
b₄: = b₃+t₀*(c₁ - b₃)
c₀: = b₄
Zur Separierung der Nullstellen von B(a₀, . . ., a₄; t) verfährt man wie folgt: Nach Abtrennung eventueller auf dem Rand liegender Nullstellen sind beide Ordinaten a₀ und a₄ ungleich Null. Wenn sie verschiedene Vorzeichen besitzen, liegt im Parameterintervall [s(B), s(B)+1(B)] der Ausgangsfunktion wenigstens eine, im allgemeinen Fall eine ungerade Anzahl von Nullstellen. Da aber bei den betrachteten Bezierfunktionen maximal zwei auftreten können, existiert genau eine. Diese ist bereits separiert und liegt zwischen den Schranken s(B) und s(B)+1(B).
Wenn a₀ und a₄ das gleiche Vorzeichen besitzen (etwa positiv sind), dann wird unterschieden.
Sind auch a₁, a₂ und a₃ größer Null, dann kann keine Nullstelle vorliegen, denn jeder Wert B(t) liegt im Parameterintervall zwischen dem Maximum und dem Minimum aller ai. (Analog schließt man ausnahmslos strikt negativen Ordinaten.)
Ist jedoch eine der Ordinaten a₁ bis a₃ kleiner oder gleich Null, kann die Bezierfunktion entweder keine oder 2 Nullstellen aufweisen. Dann ist B(t) an der Stelle t = ½ aufzutrennen und jedes der beiden Segmente auf die beschriebene Weise zu untersuchen. Wenn dabei eine Bezierfunktion B′(t) mit 1(B′) < delta erreicht ist, ohne daß eine Aussage über ihre Nullstellen gemacht werden kann, so kann die Halbierung abgebrochen werden. Eventuell noch vorhandene Nullstellen können im Rahmen der Rechengenauigkeit als Doppelnullstelle betrachtet werden und haben für die Digitalisierung der Ausgangskurve keine Bedeutung. Sie entsprechen einem Wendepunkt der nicht nach t differenzierten Funktionen x(t), y(t), x(t)+y(t) bzw. x(t) - y(t).
Nach der Separierung der Nullstelle(n) wird die sukzessive Halbierung des Parameterintervalls jeweils mit dem Bezier-Segment B (a₀, . . ., a₄, t) fortgesetzt, bei dem a₀ und a₄ verschiedene Vorzeichen besitzen, bis entweder 1(B) < delta (dann ist die gewünschte Genauigkeit erreicht) oder bis eine der folgenden Bedingungen erfüllt ist:
a₄-a₃ < = a₃-a₂ < = a₂-a₁ < = a₁-a₀ (A)
bzw.
a₄-a₃ < = a₃-a₂ < = a₂-a₁ < = a₁-a₀ (B)
Nach einer bekannten Eigenschaft der Bezierfunktionen ist dann die zweite Ableitung von B(t) auf [0,1] bei (A) positiv (bei (B) negativ), die Funktion hat dort keinen Wendepunkt. Damit ist weiter gewährleistet, daß die eingetretene Monotonie der Ordinatendifferenzen auch bei folgenden Intervallteilungen erhalten bleibt.
Das Bezierpolygon von B(a₀, . . ., a₄; t) mit den Eckpunkten
Pi = (i/4, ai), (i = 0, . . ., 4)
enthält in seiner konvexen Hülle stets den Graphen von B(t). Unter den Voraussetzungen über die Ordinatendifferenzen liegt die konvexe Hülle der Eckpunkte vollständig bei (A) oberhalb (bei (B) unterhalb) des Bezierpolygons, daher gilt das auch für den Graphen von B(t). Aufgrund dieser Eigenschaft kann zur schnellen Einschließung der Nullstelle übergegangen werden.
zu 3.
Die schnelle Entschließung der Nullstellen beruht auf einer Kombination des einfachen Sekantenverfahrens mit einem modifizierten Tangentenverfahren, die die Vorteile beider Verfahren koppelt. Sie verwendet, daß bei fortschreitender Verfeinerung des Intervalls die Seiten der Bezierpolygone den Graphen der Bezierfunktion sehr gut approximieren.
Im Fall A setzen wird ohne echte Einschränkung voraus, daß a₀ < 0 und a₄ < 0 gilt, dann ist k durch ak < = 0, ak+1 < 0 eindeutig bestimmt. Die Seite des Bezierpolygons zwischen Pk und Pk+1 hat den Schnittpunkt
mit der t-Achse. Dieser Wert ist eine obere Schranke für die Nullstelle von B(t), da der Graph von B(t) oberhalb des Bezierpolygons liegt. Damit gilt B(t₁) < = 0. Nach dem Algorithmus von de Casteljau wird nun B(t) an der Stelle t = t₁ aufgetrennt und das linke Segment B₁(t) weiter betrachtet. Wenn B₁(1) = 0, dann ist die Nullstelle der Ausgangsfunktion gleich s(B₁)+1(B₁), andernfalls berechnet man für B₁(t) = B₁(b₀, . . ., b₄; t) den Schnittpunkt
t₂ = b₀/(b₀ - b₄)
der Verbindungsstrecke der Polygoneckpunkte (0, b₀) und (1, b₄) mit der t- Achse. Diese Strecke liegt oberhalb des Graphen von B₁(t), daher ist t₂ eine untere Schranke für die Nullstelle von B₁(t). Mit t = t₂ wird erneut eine Auftrennung von B₁(t) ausgeführt, nach der das rechte Segment B₂(t) weiterverwendet wird.
In der Folge sind auf die beschriebene Weise jeweils ein Polygonseiten- und ein Sekantenschritt auszuführen, bis der Intervallängenparameter 1 kleiner als die vorgegebene Schranke delta wird. Dann ist s(B)+1(B)/2 ein geeigneter Näherungswert der gesuchten Nullstelle.
Im Fall B setzen wir analog voraus, daß a₀ < 0 und a₄ < 0. Der Index k wird durch ak < = 0, ak+1 < 0 definiert. Als untere Schranke für die Nullstelle von B(t) berechnet man
da das Bezierpolygon oberhalb des Graphen von B(t) liegt. B(t) wird an der Stelle t = t₁ aufgetrennt, dann enthält das rechte Segment B₂(t) die Nullstelle. Ist B₂(0) = 0, dann ist die Nullstelle der Ausgangsfunktion zu s(B₂) ermittelt, wenn nicht, wird aus den Ordinaten c₀ und c₄ von B₂(t) der Schnittpunkt der Sekante mit der t-Achse
t₂ = c₀/(c₀ - c₄)
berechnet. Er liefert eine obere Schranke für die Nullstelle von B₂(t), daher ist diese Bezierfunktion bei t = t₂ aufzutrennen und das linke Segment weiter zu zerlegen.
Auch hier sind nach dem beschriebenen Verfahren jeweils ein Polygonseiten- und ein Sekantenschritt auszuführen, bis für den Längenparameter 1 < delta gilt. Dann ist s(B)+1(B)/2 ein geeigneter Näherungswert für die gesuchte Nullstelle.
zu 4.
Es existiert eine weitere Methode der sukzessiven Einschließung einer separierten Nullstelle einer Bezierfunktion B(a₀, . . ., a₄; t). Dabei wird zur Teilung des Parameterintervalls nach dem Algorithmus von de Casteljau nicht die Intervallmitte verwendet, sondern die Nullstellen in [0,1] von passend gewählten quadratischen Bezierfunktionen Bx(a₀, x, a₄; t). Diese Funktionen stimmen am Rand des Intervalls mit der vorgegebenen Bezierfunktion überein. Sie besitzen daher in [0,1] genau eine Nullstelle, und über den Parameter x kann man erreichen, daß für t = 0 oder t = 1 eine Berührung 2. Ordnung von B und Bx auftritt (Bx ist eine Schmiegungsparabel).
Die allgemeine Form der Nullstellen von Bx lautet
t₁ = a₀/(a₀ - x+sqrt (x² - a₀a₄)),
t₂ = a₀/(a₀ - x - sqrt (x² - a₀a₄)).
Wenn a₀ < 0, dann liegt t₁ in [0,1], andernfalls ist die Formel für t₂ zur Bestimmung des Intervallteilungspunktes zu wählen.
Für x = 2 a₁ - a₀ erhält man die Schmiegungsparabel am linken Rand, für x = 2 a₃ - a₄ erhält man die Schmiegungsparabel am rechten Rand.
Die vorgeschlagene Methode der Einschließung der Nullstelle von B(a₀, . . ., a₄; t) mit a₀a₄ < 0 besteht darin, daß eine Intervallteilung nach de Casteljau an der sich für x = 2 a₁ - a₀ oder x = 2 a₃ - a₄ ergebenden Nullstelle in [0,1] einer Schmiegungsparabel ausgeführt wird, die zwei Segmente B₁(b₀, . . ., b₄; t) und B₂(c₀, . . ., c₄; t) liefert. Dabei werden wie im Punkt 2 beschrieben die Intervallparameter s(B) und 1(B) mitgeführt. Ist b₄ = c₀ = 0, dann ist die gesuchte Nullstelle ermittelt. Andernfalls gilt entweder b₀*b₄ < 0, dann enthält das Segment B₁ die Nullstelle von B, oder c₀*c₄ < 0, dann wird die Einschließung mit Segment B₂ forgeführt. Die nächsten Intervallteilungsschritte werden im Wechsel mit der Nullstelle der jeweils anderen Schmiegungsparabel des Segmentes ausgeführt, dadurch erreicht man eine schnelle Einschließung der Nullstelle sowohl von oben als auch von unten. Das Verfahren endet wieder, wenn der Längenparameter eines Segmentes kleiner als die Fehlerschranke delta wird.
2. Ermittlung der impliziten Kurvengleichung f(x,y) = 0
Aus der parametrischen Darstellung (x(t), y(t)) der Bezierkurve wird durch Elimination des Parameters t eine implizite polynomiale Darstellung
f(x,y) = ax³+bx²y+cxy²+dy³+ex²+fxy+gy²+hx+iy+j = 0
hergestellt. Nach [J. Hoschek, D. Lasser: Grundlagen der geometrischen Datenverarbeitung, B. G. Teubner 1989] liefert die sogenannte Bezout-Resultante der Kurve eine Determinantenform von f. Aus den dort angegebenen Formeln läßt sich die folgende Formel ableiten, die rechentechnisch günstiger ist.
Bezeichnet man die Kontrollpunkte der Bezierkurve X(t) mit Xi = (xi, yi) (0 < = i < = 3), die Gewichte an X₁ und X₂ mit p und q, und führt die Determinanten
ein, wobei r₀ = 1, r₁ = 3p, r₂ = 3q, r₃ = 1, dann ist
eine implizite Darstellung der Kurve X(t).
Zur Berechnung der Polynomkoeffizienten von f setzt man das Element in Zeile m und Spalte n dieser Determinante mit umnx+vmny+wmn an.
Dann gilt:
a = det(umn), d = det(vmn), j = det(wmn),
e = (f(1,0)+f(-1,0))/2 - j,
h = (f(1,0) - f(-1,0))/2 - a,
g = (f(0,1)+f(0,-1))/2 - j,
i = (f(0,1) - f(0,1))/2 - d,
b = (f(1,1)+f(-1,1))/2 - f(0,1) - e,
c = (f(1,1)+f(1,-1))/2 - f(1,0) - g,
f = e+g+j - (f(1,-1)+f(-1,1))/2,
wobei
f(1,0) = det(wmn+umn),
f(-1,0) = det(wmn - umn),
f(0,1) = det(wmn+vmn),
f(0,-1) = det(wmn - vmn),
f(1,1) = det(wmn+umn+vmn),
f(1,-1) = det(wmn+umn - vmn),
f(-1,1) = det(wmn - umn+vmn).
3. Bestimmung der Parameterwerte einer Selbstüberschneidung der impliziten Kurve
Beim Generieren eines Oktantenbogens wird in einem Testpunkt Xs anhand des Vorzeichens von f(xs, ys) entschieden, welcher von zwei Rasterpunkten näher an der zu digitalisierenden Kurve liegt. Die Zuordnung zwischen Vorzeichen und zu wählendem Rasterpunkt kehrt sich jedoch um, wenn die Kurvenverfolgung einen Doppelpunkt der impliziten Kurve überschreitet (in eine Schlinge eintritt oder diese verläßt). Dieser Effekt tritt auch ein, wenn die vorgegebene Bezierkurve keinen Doppelpunkt aufweist, aber durch ihre Fortsetzung auf die ganze Ebene geschnitten wird. Deshalb können (für kubische Bezierkurven im Höchstfall zwei) zusätzliche Bogenteilungen erforderlich sein.
Die Parameterwerte der Teilungspunkte lassen sich wie folgt ermitteln:
Es sei M die 4×3-Matrix
mit den Kontrollpunkten der
Bezierkurve. Di (0 < = i < = 3) bezeichne die Determinante der aus M durch Streichung der i-ten Zeile hervorgehenden Matrix, dividiert durch ri, wobei r₀ = 1, r₁ = 3p, r₂ = 3q, r₃ = 1.
Setzt man
dann werden die Parameterwerte der Selbstüberschneidung durch die Lösungen der quadratischen Gleichung in Bezierform
a₀ (1-t)²+2 a₁t(1-t)+a₂t² = 0
angegeben. Dabei sind nur die im Parameterintervall [0,1] liegenden Nullstellen für eine zusätzliche Bogenteilung zu berücksichtigen.
Das Auftreten einer Doppelnullstelle dieser Gleichung im Intervall [0,1] ist ein Hinweis auf eine Singularität der Bezierkurve (die Schlinge entartet zu einer Spitze). In einer Umgebung der Singularität ist das Verfahren der inkrementellen Digitalisierung nicht anwendbar. Wenn Bezierkurven von diesem Typ auftreten können, sind sie mittels des Algorithmus von de Casteljau so zu zerlegen, daß die kritische Umgebung der Singularität nach einem üblichen unkritischen Verfahren digitalisiert werden kann.
Zur Herleitung der quadratischen Gleichung noch einige Bemerkungen:
In einem Doppelpunkt (xd, yd) der impliziten Kurve gilt für die partiellen Ableitungen von f sowohl fx(xd, yd) = 0 als auch fy(xd, yd) = 0. Ausgehend von dem in x und y kubischen Polynom f sind fx und fy quadratische Polynome. Setzt man die rationalen kubischen Bezierfunktionen x(t) und y(t) in die Gleichungen
fx(x,y) = 3ax²+2bxy+cy²+2ex+fy+h = 0,
fy(x,y) = bx²+2cxy+3dy²+fx+2gy+i = 0
ein und multipliziert beide mit dem Quadrat des gemeinsamen Nenners von x(t) und y(t), so erhält man zwei Gleichungen 6. Grades in t, fx(t) = 0 und fy(t) = 0, deren Koeffizienten von den Kontrollpunkten Xi und den Gewichten p, q der Bezierkurve abhängen. Beim Vorliegen eines Doppelpunktes gibt es zwei Parameterwerte t₁ und t₂, die beide Gleichungen erfüllen. Daher haben fx(t) und fy(t) einen quadratischen Faktor (t-t₁)(t-t₂) gemeinsam. Die konkrete Form dieses Faktors wurde mit Hilfe eines Formelmanipulationssystems aus der Bezout-Resultante für die Bezierkurve abgeleitet.
4. Transformation eines Teilbogens in die Standardlage
Aus den Parameterwerten ta für den Anfangspunkt und te für den Endpunkt eines Teilbogens einer Bezierkurve werden über die Parametergleichung X(t) = (x(t), y(t)) die Koordinaten der Punkte Xa = (xa, ya) und Xe = (Xe, ye) berechnet. Es sei jetzt vorausgesetzt, daß der Teilbogen vollständig in einem der 8 Oktanten liegt, daß also die Oktantenteilung ausgeführt wurde.
Die Standardlage eines Oktantenbogens ist dadurch gekennzeichnet, daß xe < = xa, ye < = ya und dx = xe - xa < = dy = ye - ya. Liegt ein Oktantenbogen nicht in der Standardlage vor, so kann er durch eine oder mehrere der Transformationen Negation in x, Negation in y bzw. Vertauschung von x und y sowohl an den Punkten Xa und Xe als auch an der impliziten Kurvengleichung in die Standardlage überführt werden. Zweckmäßigerweise verwendet man für die Digitalisierung des Oktantenbogens eine lokale Kopie des Koeffizientenvektors (a, . . ., j) des Polynoms f, vermerkt die ausgeführten Transformationen in einer Variablen bogentyp, und führt die erforderlichen Transformationen in der nachstehenden Reihenfolge aus:
  • 1. Wenn xa < xe, dann ist die Negation in x auszuführen. Dazu setzt man xa : = -xa, xe : = -xe,und negiert die Koeffizienten a, c, f und h (von x³, xy², xy und x, die x in ungerader Potenz enthalten) des Polynoms f(x,y). Die übrigen Koeffizienten von f bleiben unverändert. Die Negation in x ist in der Variablen bogentyp zu kennzeichnen.
  • 2. Wenn ya < ye, dann ist die Negation in y auszuführen. Dazu setzt man ya : = -ya, ye : = -ye,und negiert die Koeffizienten b, d, f und i (von x²y, y³, xy und y, die y in ungerader Potenz enthalten) des Polynoms f(x,y). Die übrigen Koeffizienten von f bleiben unverändert. Die Negation in y ist in der Variablen bogentyp zu kennzeichnen.
  • 3. Wenn (für die eventuell transformierten Werte) xa+ye < xe+ya gilt (d. h. ye - ya < xe - xa), sind x und y zu vertauschen. Dazu werden xa < - < ya, xe < - < yeausgetauscht sowie a < - < d, b < - < c, e < - < g, h < - < i (die Koeffizienten von x³ und y³, x²y und xy², x² und y², x und y, die x und y in ungleicher Potenz enthalten) des Polynoms f(x,y). Die übrigen Koeffizienten von f bleiben unverändert. Die Vertauschung von x und y ist in der Variablen bogentyp zu kennzeichnen.
5. Digitalisierung eines Teilbogens in Standardlage
Es wird davon ausgegangen, daß der Anfangspunkt Xa = (xa, ya) und der Endpunkt Xe = (xe, ye) des exakten Kurvenbogens berechnet vorliegen. Das Vorzeichen des transformierten Polynoms f sei so gewählt, daß für Punkte (x, y) unterhalb des Bogens f(x,y) < 0 gilt.
Da die Fortschreitrichtung eines Standardbogens die x-Richtung mit wachsenden x- Werten ist, verläuft der digitalisierte Bogen zwischen den diskreten Abszissen x₀ = ceil(xa) und x₁ = floor(xe). (Die Funktionen ceil(x) und floor(x) bezeichnen die kleinste ganze Zahl größer oder gleich x bzw. die größte ganze Zahl kleiner oder gleich x). Durch die Oktantenteilung ist auf dem Intervall [xa, xe] gewährleistet, daß der Anstieg des Bogens zwischen 0 und 1 einschließlich liegt. Die Ordinate des Kurvenpunktes zur Abszisse x₀ auf dem betrachteten Bogen liegt wegen x₀ - xa < 1 zwischen ya und ya+1. Der zur Kurve nächste Rasterpunkt an der Abszisse x₀ liegt demnach zwischen
round(ya) = floor(ya+0.5)
und
round(ya+1) = floor(ya+1.5).
Als Testpunkt für die Entscheidung über den der Kurve enger benachbarten Rasterpunkt, den Startpunkt des digitalen Bogens, wird daher
(x₀, floor(ya+0.5)+0.5)
gewählt.
Ist f(ceil(xa), round(ya)+0.5) < 0, liegt der Testpunkt oberhalb des exakten Bogens, damit ist y₀ = round(ya) Ordinate des Startpunktes. Im anderen Fall ist y₀ = round(ya)+1 als Ordinate des Startpunktes zu wählen.
(Bei dieser Verfahrensweise kann es vorkommen, daß an den Oktantenteilungspunkten der Bezierkurve zum Anstieg+1 oder -1 durch die Bogenteilung ein Rasterpunkt der Digitalisierung ausgelassen wird. Das wird vermieden, indem man im Fall y₀ - ya < 1 den Rasterpunkt (x₀-1, y₀-1) vor dem Startpunkt hinzunimmt.)
Weiter Rasterpunkte werden im Prinzip durch die Wiederholung der Vorzeichenauswertung des Polynoms in fortlaufenden Testpunkten generiert. Ausgehend von einem bereits bestimmten Rasterpunkt (x,y) der digitalen Approximation kommen als Kandidaten für den Rasterpunkt zur Abszisse x+1 nur die Ordinaten y oder y+1 in Frage. Der Mittelpunkt (x+1, y+0.5) ist daher Testpunkt für die zu treffende Entscheidung über den Rasterpunkt mit minimalem Approximationsfehler.
Die Anzahl der auszuführenden Schritte ergibt sich aus der Differenz x₁ - x₀.
Die Besonderheit des vorgeschlagenen Verfahrens besteht darin, daß die Auswertung des Polynoms f in aufeinanderfolgenden Testpunkten inkrementell aus dem vorhergehenden Polynomwert und vorbereiteten Korrekturwerten erfolgt. Diese sind je nach der Art des Übergangs in den nächsten Testpunkt jeweils durch einige Additionen zu aktualisieren.
Es bezeichne fp den Zuwachs von f(x,y) beim Übergang vom Testpunkt (x,y) zum nächsten Testtpunkt durch Inkrement in beiden Koordinatenrichtungen, also
fp(x,y) = f(x+1, y+1) - f(x,y).
Dieser Übergang wird als p-Übergang bezeichnet.
Entsprechend bezeichne fm den Zuwachs von f(x,y) beim Übergang vom Testpunkt (x,y) zum nächsten Testpunkt durch Inkrement in der x-Richtung, also
fm(x,y) = f(x+1,y) - f(x,y).
Dieser Übergang wird als m-Übergang bezeichnet.
Analog vereinbaren wir die Änderungen dieser und weiterer Zuwächse durch
fp*(x,y) = f*(x+1,y+1) - f*(x,y),
fm*(x,y) = f*(x+1,y) - f*(x,y),
wobei * eine endliche Folge von p- bzw. m-Übergängen bezeichnet.
Die Funktion fp* gibt den Wert an, um den man den Funktionswert von f* bei einem p- Übergang korrigieren muß. Die Funktion fm* gibt den Wert an, um den der Funktionswert von f* bei einem m-Übergang korrigiert werden muß.
Unmittelbares Ausrechnen liefert die Identitäten
fmp(x,y) = fpm(x,y)
und
fmmp(x,y) = fmpm(x,y) = fpmm(x,y),
fmpp(x,y) = fpmp(x,y) = fppm(x,y)
für beliebige x, y.
Darüber hinaus sind die Zuwächse dritter Ordnung des kubischen Polynoms f konstant.
Somit müssen für die inkrementelle Auswertung von f in den Testpunkten jeweils 10 Parameter berechnet werden - der Funktionswert f, die Korrekturen erster Ordnung fm und fp, die Korrekturen zweiter Ordnung fmm, fpm und fpp sowie die Korrekturen dritter Ordnung fmmm, fpmm, fppm und fppp. Die letzteren 4 müssen als Konstante nur einmal pro Bogen bestimmt werden. Die übrigen 6 werden inkrementell je nach der getroffenen Vorzeichenentscheidung mit Hilfe ihrer bereits berechneten Zuwächse aktualisiert.
Bei einem p-Übergang sind folgende Additionen auszuführen
f : = f+fp,
fp : = fp+fpp,
fm : = fm+fpm,
fpp : = fpp+fppp,
fpm : = fpm+fppm,
fmm : = fmm+fpmm.
Bei einem m-Übergang sind folgende Additionen auszuführen
f : = f+fm,
fp : = fp+fpm,
fm : = fm+fmm,
fpp : = fpp+fppm,
fpm : = fpm+fppm,
fmm : = fmm+fmmm.
Die Formeln für die Anlaufrechnung im ersten Testpunkt (x,y) lauten:
fm(x,y) und fp(x,y) werden am günstigsten mittels ihrer Definitionsgleichung berechnet.
fpp(x,y) = (6a+4b+2c) x+(2b+4c+6d) y+6(a+b+c+d)+2(e+f+g),
fpm(x,y) = (6a+2b) x+(2b+2c) y+6a+3b+c+2e+f,
fmm(x,y) = 6a x+2b y+6a+2e,
fppp = 6(a+b+c+d),
fppm = 6a+4b+2c,
fpmm = 6a+2b,
fmmm = 6a.
Alle Rechnungen sind im Gleitkommaformat mit erhöhter Genauigkeit durchzuführen, um die Auswirkungen von Rundungsfehlern zu begrenzen. Dabei kann trotz der geringeren Geschwindigkeit gegenüber dem Integer-Format eine hohe Generierungsrate der Rasterpunkte erreicht werden. Eine Implementierung des Verfahrens auf einem Transputer T800-20 benötigte pro Rasterpunkt 11 Mikrosekunden.
Bei einer Anwendung des vorgeschlagenen Verfahrens zur Kurvengenerierung in sehr hoher Auflösung ist das Problem der Akkumulation von Rundungsfehlern dadurch entschärft, daß die Zuwächse höherer Ordnung betragsmäßig sehr viel kleiner und damit absolut genauer sind als die Funktionswerte oder die Zuwächse niederer Ordnung. Wenn bei der Generierung sehr langer Bögen die geforderte Genauigkeit trotzdem durch akkumulierte Rundungsfehler beeinträchtigt wird, kann nach einer festen Anzahl erzeugter Punkte erneut eine Anlaufrechnung eingeschaltet werden.
6. Durchlauf durch die vollständige Bezierkurve
Für die Generierung eines Oktanbogens in Standardlage wurde vorausgesetzt, daß fy(xi,yi) < 0 an irgendeinem inneren Punkt (xi,yi) des Bogens. Es soll nun anhand des Umlaufs um einen Vollkreis
f(x,y) = r² - x² - y² = 0
betrachtet werden, welche Forderungen an die untransformierten Bögen in allen 8 Ausgangslagen zu stellen sind, damit nach der Transformation in die Standardlage diese Bedingung erfüllt ist. In diesem Beispiel ist die Voraussetzung für den 7. Oktanten (Standardlage) erfüllt.
Es ist zu berücksichtigen, daß die Negation in x fx in -fx überführt, die Negation in y überführt fy in -fy und die Vertauschung von x und y vertauscht fx mit fy.
Aus dieser Tabelle ist abzulesen, daß für den ersten Bogen der Kurvengenerierung in irgendeinem inneren Punkt des Bogens zu bestimmen ist
(Regel 1)
das Vorzeichen von fx, falls er im Oktanten 1, 2, 5 oder 6 liegt,
das Vorzeichen von fy, falls er im Oktanten 3, 4, 7 oder 8 liegt.
Um nach der Transformation in die Standardlage fy < 0 zu erreichen, muß das Vorzeichen des Polynoms f so gewählt werden, daß die partielle Ableitung orthogonal zur Fortschreitrichtung auf dem ersten Bogen
(Regel 2)
kleiner 0 ist für die Oktanten 1, 4, 6 oder 7,
größer 0 ist für die Oktanten 2, 3, 5 oder 8.
Weiter geht aus dieser Tabelle hervor, daß bei einem Durchlauf durch die vollständige Bezierkurve in jedem Oktantenteilungspunkt mit Übergang zum benachbarten Oktanten (entsprechend dem Vollkreis) das Vorzeichen des Polynoms f zu invertieren ist. Das gleiche gilt beim Durchlauf durch einen Teilungspunkt, der einem Doppelpunkt der impliziten Kurve entspricht. Damit entfällt die Notwendigkeit, für den zweiten und weitere Bögen der Bezierkurve das Vorzeichen der partiellen Ableitung orthogonal zur Fortschreitrichtung zu errechnen.
Damit läßt sich die Generierung der vollständigen Bezierkurve wie folgt beschreiben. Die t-Parameter der Bogenteilungspunkte sind in eine aufsteigende Folge
0 = t₀ < t₁ < . . . < tn = 1
zu sortieren. Für t₀ und tn sind die Kurvenpunkte als vorgegebene Kontrollpunkte bereits bekannt, zu den restlichen sind die Punkte (x(tk),y(tk)) zu errechnen. Der Koeffizientenvektor des Polynoms f wird einmal gemäß der Bezout-Resultante und einmal mit negierten Elementen (-f) abgespeichert. In einem inneren Punkt des ersten Bogens über [0,t₁] bestimmt man nach Regel 1 das Vorzeichen einer partiellen Ableitung von f. Wenn es Regel 2 genügt, wird als lokale Kopie des Koeffizientenvektors f an die Bogengenerierung übergeben, andernfalls der Vektor von -f. In der Folge ist bei jedem anschließenden Bogen der alternierende Koeffizientenvektor zu wählen.
Die mit der Erfindung erzielten Vorteile bestehen insbesondere darin, daß abbildende Verfahren mit sehr hohen Genauigkeitsanforderungen, die aus Gründen der Zeitabhängigkeit der Genauigkeit auf kurze Prozeßzeiten angewiesen sind, mit dem erfindungsgemäßen Verfahren realisiert werden können, da mit dem Verfahren auch bei komplexen Geometrien die Koordinatengenerierung in Echtzeit erreichbar ist. Durch die kurzen Prozeßzeiten erhöht sich die Produktivität der mit diesem Verfahren arbeitenden Anwendungen (z. B. Laserbelichter (Drucker, Plotter etc.), Mikrolithografie mit Elektronen- oder Röntgenstrahlen, Mikrosystemtechnik, binäre und integrierte Optik, Herstellung von Lichtwellenleitern, 2-D-Robotersteuerungen, Drucktechnik und die Visualisierung von Entwurfsdaten). Bei den Anwendungen, die wegen der über einen längeren Zeitraum schwierig aufrechterhaltbaren Prozesse bisher nur mit erhöhten Ausschußraten betrieben werden konnten, ist wegen der deutlich kürzeren Prozeßzeiten eine Qualitätssteigung und Verringerung der Ausschußrate zu realisieren. Zeitaufwendige Datenvorbereitungsprozesse zur Umwandlung der kompakten Geometriedaten in hochaufgelöste Steuerdaten (offline-Compilierung) können entfallen, es entstehen daher keine Zwischendateien mit Massendatencharakter, die umfangreichen Speichermedien und schnelle Transferkanäle hin zur Steuereinrichtung erfordern würden.

Claims (4)

1. Verfahren zur Generierung von ebenen technischen Kurven oder Konturen zur Darstellung von technischen Bildern, dadurch gekennzeichnet, daß zur Digitalisierung parametrischer, rationaler oder polynomialer kubischer Bezierkurven der Form mit den Kontrollpunkten Xi = (xi, yi) (0 < = i < = 3), den Gewichten p, q < 0, und dem Parameter t mit 0 < = t < = 1
diese in Oktantenbögen, die getrennt erzeugt werden, zerlegt werden, derart, daß die Grenzen der Oktantenbögen durch die Parameter t an den Punkten der Kurve bestimmt werden, wo diese den Anstieg 0, ∞, 1 oder -1 aufweist, daß anschließend die Kurven zur Befreiung von der Parametrisierung in eine implizite Form f(x,y) = 0 transformiert werden, daß eine zusätzliche Kurventeilung der Bezierkurve an den Stellen erfolgt, an denen f(x,y) = 0 eine Selbstüberschneidung besitzt und danach eine Bestimmung der Koordinaten aller Teilungspunkte aus den entsprechenden Parameterwerten erfolgt, wobei die Teilungspunkte zusammen mit den Anfangs- und Endpunkten der ursprünglichen Kurve die Anfangs- und Endpunkte aller Einzelbögen bilden, daß alle diese Bögen durch Spiegelungen an einer oder mehreren der drei Achsen x = 0, y = 0 oder x = y in die Standardlage gebracht werden, daß die Generierung der digitalen Approximation mit der Bestimmung des zum Startpunkt des Bogens benachbarten Rasterpunktes (xo, y₀) beginnt, wobei durch die Oktantenteilung und die Spiegelungen gesichert ist, daß der Anstieg des Bogens stets zwischen 0 und 1 liegt, daß anschließend die Berechnung der Funktion f(xo+1, yo+½) erfolgt, wobei diese Berechnung und die Auswertung des Vorzeichens von f in (xo+1, yo+½) die Entscheidung ermöglicht, zwischen welchem Rasterpunkt und Testpunkt der Bogen verläuft und daß anschließend dieser Rasterpunkt den Ausgangspunkt für den nächsten Schritt bis zum Erreichen des Endpunktes des Bogens bildet.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Parameterwerte t zur Oktantenteilung dadurch ermittelt werden, daß
  • - ein Polynom, dessen Nullstellen im Intervall [0, 1] den Parameterwerten entsprechen, als Bezierfunktion 4. Grades formelmäßig dargestellt wird,
  • - die Konstruktion von abgeleiteten Bezierfunktionen über eingeschränkten Intervallen, die auf Nullstellen untersucht werden, nach dem Algorithmus von de Casteljau erfolgt,
  • - die Nullstellen zuerst durch sukzessive Intervallhalbierung separiert werden,
  • - die Einschließung einer Nullstelle durch garantierte obere und untere Schranken mit einer vorgegebenen Genauigkeit zunächst durch sukzessive Intervallhalbierung erfolgt,
  • - dabei das Kontrollpolygon einer abgeleiteten Bezierfunktion über dem Einschließungsintervall schnell auf Konvexität getestet wird,
  • - bei Erfüllung des Tests die Nullstelle im Wechsel durch die Schnittpunkte der Parameterachse mit dem Kontrollpolygon bzw. mit der Sekante des Graphen einer abgeleiteten Bezierfunktion über dem Einschließungsintervall immer enger eingeschlossen wird.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Parameterwerte t zur Oktantenteilung dadurch ermittelt werden, daß
  • - ein Polynom, dessen Nullstellen im Intervall [0, 1] den Parameterwerten entsprechen, als Bezierfunktion 4. Grades formelmäßig dargestellt wird,
  • - die Konstruktion von abgeleiteten Bezierfunktionen über eingeschränkten Intervallen, die auf Nullstellen untersucht werden, nach dem Algorithmus von de Casteljau erfolgt,
  • - die Nullstellen zuerst durch sukzessive Intervallhalbierung separiert werden,
  • - die Einschließung einer separierten Nullstelle durch garantierte obere und untere Schranken bis zur vorgegebenen Genauigkeit im Wechsel durch die Nullstelle einer Schmiegungsparabel der abgeleiteten Bezierfunktion am rechten bzw. linken Rand des Einschließungsintervalls erfolgt, wobei jede Schmiegungsparabel mit der Bezierfunktion an beiden Intervallenden übereinstimmt.
4. Verfahren nach den Ansprüchen 1 bis 3, dadurch gekennzeichnet, daß
  • - die implizite Darstellung der Bezierkurve durch ein Polynom f(x, y) aus einer Determinantenform der Bezout-Resultante gewonnen wird, deren Elemente formelmäßig direkt aus den Kontrollpunkten und Gewichten der Bezierkurve berechnet werden,
  • - die Koeffizienten des Polynoms f(x, y) durch die Berechnung der Polynomwerte in 7 Punkten (x, y) und die Auswertung von 10 dreireihigen Determinanten erfolgt, aus denen lediglich einfache Linearkombinationen zu bilden sind,
  • - die Parameterwerte einer Selbstüberschneidung der Bezierkurve als Lösungen einer quadratischen Gleichung bestimmt werden, deren Koeffizienten in der Bezierform formelmäßig aus den Kontrollpunkten und Gewichten der Bezierkurve dargestellt sind.
DE4244462A 1992-12-24 1992-12-24 Verfahren zur Generierung von ebenen technischen Kurven oder Konturen Withdrawn DE4244462A1 (de)

Priority Applications (6)

Application Number Priority Date Filing Date Title
DE4244462A DE4244462A1 (de) 1992-12-24 1992-12-24 Verfahren zur Generierung von ebenen technischen Kurven oder Konturen
JP6514689A JPH08504984A (ja) 1992-12-24 1993-12-23 平面の技術的曲線ないし等高線を形成する方法
US08/481,451 US5717847A (en) 1992-12-24 1993-12-23 Method for generating plane technical curves or contours
EP94902635A EP0954618B1 (de) 1992-12-24 1993-12-23 Verfahren zur generierung von ebenen technischen kurven oder konturen
DE59310364T DE59310364D1 (de) 1992-12-24 1993-12-23 Verfahren zur generierung von ebenen technischen kurven oder konturen
PCT/DE1993/001252 WO1994015267A2 (de) 1992-12-24 1993-12-23 Verfahren zur generierung von ebenen technischen kurven oder konturen

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE4244462A DE4244462A1 (de) 1992-12-24 1992-12-24 Verfahren zur Generierung von ebenen technischen Kurven oder Konturen

Publications (1)

Publication Number Publication Date
DE4244462A1 true DE4244462A1 (de) 1994-06-30

Family

ID=6476780

Family Applications (2)

Application Number Title Priority Date Filing Date
DE4244462A Withdrawn DE4244462A1 (de) 1992-12-24 1992-12-24 Verfahren zur Generierung von ebenen technischen Kurven oder Konturen
DE59310364T Expired - Fee Related DE59310364D1 (de) 1992-12-24 1993-12-23 Verfahren zur generierung von ebenen technischen kurven oder konturen

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE59310364T Expired - Fee Related DE59310364D1 (de) 1992-12-24 1993-12-23 Verfahren zur generierung von ebenen technischen kurven oder konturen

Country Status (5)

Country Link
US (1) US5717847A (de)
EP (1) EP0954618B1 (de)
JP (1) JPH08504984A (de)
DE (2) DE4244462A1 (de)
WO (1) WO1994015267A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008062121A1 (de) * 2008-10-02 2010-04-15 Samsung Electro-Mechanics Co., Ltd., Suwon Kameraeinheit mit Fahrkorridor-Anzeigefunktion für ein Fahrzeug, Verfahren zur Anzeige einer vorausberechneten Fahrzeugtrajektorie und System zur Generierung von Fahrkorridormarkierungen

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4244462A1 (de) * 1992-12-24 1994-06-30 Equicon Software Gmbh Jena Verfahren zur Generierung von ebenen technischen Kurven oder Konturen
US6906718B1 (en) * 1997-04-25 2005-06-14 Microsoft Corporation Method and system for efficiently evaluating and drawing NURBS surfaces for 3D graphics
DE19901934C2 (de) * 1999-01-19 2001-07-19 Heidelberger Druckmasch Ag Verfahren zur Erzeugung eines Rahmens für grafische Objekte, die durch Bezier-Kurven beschrieben sind
US6466211B1 (en) 1999-10-22 2002-10-15 Battelle Memorial Institute Data visualization apparatuses, computer-readable mediums, computer data signals embodied in a transmission medium, data visualization methods, and digital computer data visualization methods
DE10226270A1 (de) * 2002-06-07 2004-01-08 Cocreate Software Gmbh & Co. Kg Verfahren und Computersystem zum Erzeugen einer mehrdimensionalen Abstandsfläche
US7239319B2 (en) * 2004-08-27 2007-07-03 Microsoft Corporation Rendering outline fonts
US7308525B2 (en) * 2005-01-10 2007-12-11 Sandisk Il Ltd. Method of managing a multi-bit cell flash memory with improved reliablility and performance
US9978161B2 (en) * 2016-04-11 2018-05-22 Here Global B.V. Supporting a creation of a representation of road geometry
JP6756320B2 (ja) 2017-09-20 2020-09-16 株式会社ニューフレアテクノロジー 描画データ生成方法、プログラム、マルチ荷電粒子ビーム描画装置、及びパターン検査装置
CN111610751B (zh) * 2020-05-21 2023-07-28 天津工业大学 过点集nurbs插值曲线的插值误差多次细分迭代计算方法
CN112666944A (zh) * 2020-12-18 2021-04-16 广东嘉腾机器人自动化有限公司 一种agv轨迹线的求值方法、存储设备和电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6124863A (en) * 1992-04-29 2000-09-26 Canon Kabushiki Kaisha Object-based graphics system for displaying an image using explicit quadratic polynomial fragments
DE4244462A1 (de) * 1992-12-24 1994-06-30 Equicon Software Gmbh Jena Verfahren zur Generierung von ebenen technischen Kurven oder Konturen

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008062121A1 (de) * 2008-10-02 2010-04-15 Samsung Electro-Mechanics Co., Ltd., Suwon Kameraeinheit mit Fahrkorridor-Anzeigefunktion für ein Fahrzeug, Verfahren zur Anzeige einer vorausberechneten Fahrzeugtrajektorie und System zur Generierung von Fahrkorridormarkierungen
DE102008062121B4 (de) * 2008-10-02 2010-10-07 Samsung Electro-Mechanics Co., Ltd., Suwon Kameraeinheit mit Fahrkorridor-Anzeigefunktion für ein Fahrzeug, Verfahren zur Anzeige einer vorausberechneten Fahrzeugtrajektorie und System zur Generierung von Fahrkorridormarkierungen
US8063752B2 (en) 2008-10-02 2011-11-22 Samsung Electro-Mechanics Co., Ltd. Camera unit with driving corridor display functionality for a vehicle, method for displaying anticipated trajectory of a vehicle, and system for generating driving corridor markers

Also Published As

Publication number Publication date
JPH08504984A (ja) 1996-05-28
EP0954618A2 (de) 1999-11-10
EP0954618B1 (de) 2004-09-29
WO1994015267A3 (de) 1994-08-18
US5717847A (en) 1998-02-10
DE59310364D1 (de) 2004-11-04
WO1994015267A2 (de) 1994-07-07

Similar Documents

Publication Publication Date Title
DE4244462A1 (de) Verfahren zur Generierung von ebenen technischen Kurven oder Konturen
DE102009024130B4 (de) Verfahren zur echtzeitfähigen Bahnplanung kontinuierlicher, rucksprungfreier Sollwerttrajektorien
DE3608438A1 (de) Verfahren zum berechnen von freien gekruemmten flaechen mittels computergestuetztem design cad und computergestuetzter herstellung cam und numerischer steuerung nc
DE10106023A1 (de) Verfahren und Vorrichtung zur Kollisionserkennung von Objekten
DE102009019443A1 (de) Kinematischer Annäherungsalgorithmus mit Regelfläche
DE3315148A1 (de) Digitale sichtanzeigeeinrichtung
DE19513960A1 (de) Abbildung eines Graphen in einen Speicher
EP2064672A2 (de) Verfahren und vorrichtung zur bildverarbeitung
DE102014015278B4 (de) Bearbeitungskurven-Erzeugungsvorrichtung und dazu gehöriges Bearbeitungskurven-Erzeugungsverfahren
DE3634024A1 (de) Verfahren zur umwandlung von konturmustern
WO2023279125A1 (de) Verfahren zum erstellen von simulationszellen für kontinuumsmechanische simulationen eines objekts
EP1537538B1 (de) Verfahren zur festlegung von gewichtungsfaktoren für die farbberechnung eines farbwerts von texeln für einen footprint
EP1316051B1 (de) Verfahren zur veränderung der konstruktion eines bauteils
DE102021000349A1 (de) Verfahren zum Betreiben einer technischen Anlage
DE69929757T2 (de) Farbumwandlung
DE2631073C3 (de) Vorrichtung zur Struktur- und Textur-Analyse zumindestens eines Mediums
DE3821322C2 (de)
DE2323684A1 (de) Vorrichtung zur erzeugung von steuersignalen fuer bewegungen in zueinander senkrechten richtungen
DE3920350A1 (de) System zur bildung gekruemmter flaechen
DE4000021A1 (de) Verfahren und vorrichtung zur darstellung von kurven in einem zweidimensionalen raster von bildelementen
EP3905095A1 (de) Computer-implementiertes verfahren zur rechnerischen ermittlung und bereitstellung zumindest eines wertes zumindest eines parameters eines festkörpers
EP1459980B1 (de) Verfahren zur rechnergestützten Ermittlung einer treibstoffoptimalen Ansteuerung von Düsen
DE3643713A1 (de) Verfahren zum erzeugen der steuersignale fuer nc-werkzeugmaschinen
DE102022000530A1 (de) Verfahren zur Geschwindigkeitsnivellierung inhomogen parametrisierter Bahnkurven - insbesondere Bézier-Kurven - zu deren dynamischen Nutzung in CAM-Prozessen (Computer Aided Manufacturing) durch Umparametrisierung nach Bogenlänge
WO2023079182A1 (de) Verfahren zum erzeugen eines 3d-modells mit innenliegenden strukturen

Legal Events

Date Code Title Description
8127 New person/name/address of the applicant

Owner name: SCHULMEISS, TRAUGOTT, 07747 JENA, DE

8110 Request for examination paragraph 44
8130 Withdrawal