| Operatoren |
draw_nurbs_interp — Interaktives Erstellen einer NURBS-Kurve durch Interpolation.
draw_nurbs_interp( : ContOut : WindowHandle, Rotate, Move, Scale, KeepRatio, Degree : ControlRows, ControlCols, Knots, Rows, Cols, Tangents)
draw_nurbs_interp liefert die Kontur ContOut einer NURBS-Kurve, die interaktiv durch den Benutzer im Fenster WindowHandle durch Interpolation erzeugt worden ist. Mit dem Operator draw_nurbs ist es möglich eine NURBS-Kurve durch Zeichnen des Kontrollpolyongs zu erzeugen.
Zusätzlich zu ContOut werden die Kontrollinformation der Kurve (ControlRows,ControlCols und Knots), die vom Benutzer bestimmten Interpolationspunkte (Rows und Cols) und die Tangenten im ersten und letzten Punkt der Kurve (Tangents) zurückgegeben. Tangents besteht aus den Y- (Zeilen) und X- (Spalten) Werten der Tangente im Startpunkt, gefolgt von den beiden Werten der Tangente im Endpunkt der Kurve.
Ein Gewichtsvektor wird nicht zurückgegeben, da dieser aus gleichen Einträgen besteht. Das heißt, dass 'auto' als Gewichtsvektor verwendet werden kann, wenn die Kontrollinformationen im Operator gen_contour_nurbs_xld verwendet werden. Mehr Informationen über NURBS-Kurven befinden sich in der Dokumentation des Operators gen_contour_nurbs_xld.
Direkt nach dem Aufruf von draw_nurbs_interp kann man durch Drücken der linken Maustaste an den gewünschten Positionen Interpolationspunkte hinzufügen. Sind genug Punkte vorhanden (mindestens Degree-1), wird eine NURBS-Kurve, die durch alle Punkte geht berechnet und angezeigt.
Der zuletzt angehängte Punkt kann durch Drücken der Steuerungstaste (Strg, Ctrl) gelöscht werden. Sobald 3 Punkte vorhanden sind, werden der erste und der letzte Punkt durch ein zusätzliches Quadrat markiert. Durch Klicken darauf wird die Kontur geschlossen bzw. wieder geöffnet.
Außerdem werden die Tangenten (d.h. die erste Ableitung der Kurve) im ersten und im letzten Punkt der Kurve angezeigt. Diese Tangenten können durch Veschieben ihrer Endpunkte mit der Maus verändert werden.
Vorhandene Punkte können durch Ziehen mit der Maus bewegt werden. Außerdem können neue Punkte auf der Kurve eingefügt werden, indem man auf die gewünschte Position auf der Kurve mit der linken Maustaste klickt.
Durch Drücken der Umschalttaste kann in den Modus zum Transformieren der Kurve gewechselt werden. In diesem Modus kann die Kurve rotiert, verschoben und skaliert werden, jedoch nur wenn der entsprechende Parameter (Rotate, Move, Scale) auf 'true' gesetzt wurde. Die Kurve wird zusammen mit einem Kreuz in der Mitte und einem Pfeil nach rechts, falls Rotate auf 'true' gesetzt wurde, und einem Doppelpfeil, falls Scale auf 'true' gesetzt wurde, dargestellt.
Die Kurve kann
verschoben werden, indem man mit der linken Maustaste auf das Kreuz im Mittelpunkt klickt und dann die Kurve an die neue Position schiebt,
rotiert werden, indem man mit der linken Maustaste auf den Pfeil klickt und die Maus bewegt bis die Kurve die gewünschte Lage eingenommen hat, und
skaliert werden, indem der Doppelpfeil verschoben wird. Um das Seitenverhältnis beim Skalieren beizubehalten, muss der Parameter KeepRatio auf 'true' gesetzt werden.
Durch ein weiteres Drücken der Umschalttaste wechselt man zurück in den Editiermodus. Ein Klick mit der rechten Maustaste beendet die Prozedur. Unter macOS kann draw_nurbs_mod auch durch Drücken der Escape-Taste beendet werden.
Das Aussehen der Kurve beim Zeichnen wird durch die Linienbreite, den Linienstil und die Farbe bestimmt, die mit den Operatoren set_color, set_colored, set_line_width und set_line_style gesetzt werden können. Die Tangenten und alle Anfasser werden in der zweiten Farbe gezeichnet, die via set_color oder set_colored gesetzt wurde. Ihre Linienbreite ist fest auf 1 gesetzt, außerdem werden ihre Linien durchgezogen gezeichnet.
Im Gegensatz zu draw_nurbs hat jeder Punkt, der vom Nutzer vorgegeben wird, Einfluss auf die ganze Kurve. Wird ein Punkt bewegt, kann und wird sich die ganze Kurve ändern. Um diesen Effekt zu minimieren, empfehlen wir die Verwendung eines niedrigen Grades (3-5). Im Allgemeinen sind die Ergebnisse bei ungeradem Grad etwas besser als bei geradem. Außerdem ist es vorteilhaft, die Abstände aufeinanderfolgender Punkte ungefähr gleich zu wählen.
Kontur der Kurve.
Fenster-Handle.
Rotation ermöglichen?
Defaultwert: 'true'
Werteliste: 'false', 'true'
Verschieben ermöglichen?
Defaultwert: 'true'
Werteliste: 'false', 'true'
Skalieren ermöglichen?
Defaultwert: 'true'
Werteliste: 'false', 'true'
Seitenverhältnis beim Skalieren beibehalten?
Defaultwert: 'true'
Werteliste: 'false', 'true'
Grad p der Kurve. Vernünftige Werte liegen zwischen 3 und 5.
Defaultwert: 3
Wertevorschläge: 2, 3, 4, 5
Restriktion: Degree >= 2 && Degree <= 9
Zeilenkoordinaten des Kontrollpolygons.
Spaltenkoordinaten des Kontrollpolygons
Knotenvektor.
Zeilenkoordinaten der vom Benutzer bestimmten Punkte.
Spaltenkoordinaten der vom Benutzer bestimmten Punkte.
Vom Benutzer bestimmte Tangenten.
draw_nurbs_interp liefert den Wert 2 (H_MSG_TRUE), falls das Fenster gültig ist. Ansonsten wird eine Fehlerbehandlung durchgeführt.
set_colored, set_line_width, set_draw, set_insert
draw_nurbs_interp_mod, draw_nurbs, gen_contour_nurbs_xld
Foundation
| Operatoren |