draw_nurbs_modT_draw_nurbs_modDrawNurbsModDrawNurbsMod (Operator)
Name
draw_nurbs_modT_draw_nurbs_modDrawNurbsModDrawNurbsMod
— Interaktives Modifizieren einer NURBS-Kurve.
Warnung
Dieser Operator kann nicht in HDevelop-Grafikfenstern verwendet werden, die
mit dev_open_window
geöffnet wurden.
Signatur
draw_nurbs_mod( : ContOut : WindowHandle, Rotate, Move, Scale, KeepRatio, Edit, Degree, RowsIn, ColsIn, WeightsIn : Rows, Cols, Weights)
Herror T_draw_nurbs_mod(Hobject* ContOut, const Htuple WindowHandle, const Htuple Rotate, const Htuple Move, const Htuple Scale, const Htuple KeepRatio, const Htuple Edit, const Htuple Degree, const Htuple RowsIn, const Htuple ColsIn, const Htuple WeightsIn, Htuple* Rows, Htuple* Cols, Htuple* Weights)
void DrawNurbsMod(HObject* ContOut, const HTuple& WindowHandle, const HTuple& Rotate, const HTuple& Move, const HTuple& Scale, const HTuple& KeepRatio, const HTuple& Edit, const HTuple& Degree, const HTuple& RowsIn, const HTuple& ColsIn, const HTuple& WeightsIn, HTuple* Rows, HTuple* Cols, HTuple* Weights)
void HXLDCont::DrawNurbsMod(const HWindow& WindowHandle, const HString& Rotate, const HString& Move, const HString& Scale, const HString& KeepRatio, const HString& Edit, Hlong Degree, const HTuple& RowsIn, const HTuple& ColsIn, const HTuple& WeightsIn, HTuple* Rows, HTuple* Cols, HTuple* Weights)
void HXLDCont::DrawNurbsMod(const HWindow& WindowHandle, const char* Rotate, const char* Move, const char* Scale, const char* KeepRatio, const char* Edit, Hlong Degree, const HTuple& RowsIn, const HTuple& ColsIn, const HTuple& WeightsIn, HTuple* Rows, HTuple* Cols, HTuple* Weights)
void HXLDCont::DrawNurbsMod(const HWindow& WindowHandle, const wchar_t* Rotate, const wchar_t* Move, const wchar_t* Scale, const wchar_t* KeepRatio, const wchar_t* Edit, Hlong Degree, const HTuple& RowsIn, const HTuple& ColsIn, const HTuple& WeightsIn, HTuple* Rows, HTuple* Cols, HTuple* Weights)
(Nur Windows)
HXLDCont HWindow::DrawNurbsMod(const HString& Rotate, const HString& Move, const HString& Scale, const HString& KeepRatio, const HString& Edit, Hlong Degree, const HTuple& RowsIn, const HTuple& ColsIn, const HTuple& WeightsIn, HTuple* Rows, HTuple* Cols, HTuple* Weights) const
HXLDCont HWindow::DrawNurbsMod(const char* Rotate, const char* Move, const char* Scale, const char* KeepRatio, const char* Edit, Hlong Degree, const HTuple& RowsIn, const HTuple& ColsIn, const HTuple& WeightsIn, HTuple* Rows, HTuple* Cols, HTuple* Weights) const
HXLDCont HWindow::DrawNurbsMod(const wchar_t* Rotate, const wchar_t* Move, const wchar_t* Scale, const wchar_t* KeepRatio, const wchar_t* Edit, Hlong Degree, const HTuple& RowsIn, const HTuple& ColsIn, const HTuple& WeightsIn, HTuple* Rows, HTuple* Cols, HTuple* Weights) const
(Nur Windows)
static void HOperatorSet.DrawNurbsMod(out HObject contOut, HTuple windowHandle, HTuple rotate, HTuple move, HTuple scale, HTuple keepRatio, HTuple edit, HTuple degree, HTuple rowsIn, HTuple colsIn, HTuple weightsIn, out HTuple rows, out HTuple cols, out HTuple weights)
void HXLDCont.DrawNurbsMod(HWindow windowHandle, string rotate, string move, string scale, string keepRatio, string edit, int degree, HTuple rowsIn, HTuple colsIn, HTuple weightsIn, out HTuple rows, out HTuple cols, out HTuple weights)
HXLDCont HWindow.DrawNurbsMod(string rotate, string move, string scale, string keepRatio, string edit, int degree, HTuple rowsIn, HTuple colsIn, HTuple weightsIn, out HTuple rows, out HTuple cols, out HTuple weights)
Beschreibung
draw_nurbs_moddraw_nurbs_modDrawNurbsModDrawNurbsModDrawNurbsMod
liefert die Kontur ContOutContOutContOutContOutcontOut
und die
Kontrollinformationen (RowsRowsRowsRowsrows
, ColsColsColsColscols
, and WeightsWeightsWeightsWeightsweights
)
der NURBS-Kurve mit dem Grad DegreeDegreeDegreeDegreedegree
, die interaktiv
durch den Benutzer im Fenster WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle
modifiziert worden ist.
Zusätzliche Informationen über NURBS-Kurven finden sich in der
Dokumentation des Operators gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldGenContourNurbsXld
.
Um die Kontrollinformationen RowsRowsRowsRowsrows
, ColsColsColsColscols
und
WeightsWeightsWeightsWeightsweights
in einem Aufruf des Operators gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldGenContourNurbsXld
zu verwenden,
sollte dort der Knotenvektor KnotsKnotsKnotsKnotsknots
auf 'auto'"auto""auto""auto""auto" gesetzt
werden.
Die Eingabekurve wird durch ihr Kontrollpolygon RowsInRowsInRowsInRowsInrowsIn
,
ColsInColsInColsInColsIncolsIn
, ihren Gewichtsvektor WeightsInWeightsInWeightsInWeightsInweightsIn
und ihren Grad
DegreeDegreeDegreeDegreedegree
beschrieben. Es wird angenommen, dass ihr Knotenvektor
uniform ist (das entspricht 'auto'"auto""auto""auto""auto" in
gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldGenContourNurbsXld
).
Die Kurve kann auf zwei Arten modifiziert werden: Durch Editieren, zum
Beispiel durch Einfügen oder Verschieben von Kontrollpunkten, oder durch das
Transformieren der Kurve als Ganzes, zum Beispiel durch Rotieren,
Verschieben oder Skalieren. Die Kurve kann jedoch nur editiert werden, wenn
der Parameter EditEditEditEditedit
auf 'true'"true""true""true""true" gesetzt wurde. Die Parameter
RotateRotateRotateRotaterotate
, MoveMoveMoveMovemove
und ScaleScaleScaleScalescale
müssen auf 'true'"true""true""true""true"
gesetzt werden, damit die entsprechende Bearbeitung durchgeführt werden kann.
draw_nurbs_moddraw_nurbs_modDrawNurbsModDrawNurbsModDrawNurbsMod
beginnt im Modus zum Transformieren.
Durch Drücken der Umschalttaste kann in den Modus zum Editieren gewechselt
werden; durch erneutes Drücken der Taste wechselt man zurück in den Modus
zum Transformieren.
Transformieren
In diesem Modus kann die Kurve rotiert, verschoben und skaliert werden,
jedoch nur, wenn der entsprechenden Parameter RotateRotateRotateRotaterotate
, MoveMoveMoveMovemove
und ScaleScaleScaleScalescale
auf 'true'"true""true""true""true" gesetzt wurde. Die Kurve wird zusammen
mit einem Kreuz in der Mitte, einem Pfeil nach rechts, falls RotateRotateRotateRotaterotate
auf 'true'"true""true""true""true" gesetzt wurde, und einem Doppelpfeil, falls ScaleScaleScaleScalescale
auf 'true'"true""true""true""true" gesetzt wurde, dargestellt.
-
Zum Verschieben der Kurve klickt man mit der linken Maustaste auf
das Kreuz in der Mitte und bewegt die Maus dann mit gedrückter
Taste zur neuen Position.
-
Zum Rotieren der Kurve klickt man mit der linken Maustaste auf den
Pfeil und bewegt die Maus anschließend mit gedrückter Taste
solange, bis sich die Kurve in der gewünschten Lage befindet.
-
Zum Skalieren der Kurve muss der Doppelpfeil bewegt werden. Um das
Seitenverhältnis beim Skalieren beizubehalten, muss der Parameter
KeepRatioKeepRatioKeepRatioKeepRatiokeepRatio
auf 'true'"true""true""true""true" gesetzt werden.
Editieren
In diesem Modus wird die Kontur zusammen mit ihrem Kontrollpolygon
dargestellt. Start- und Endpunkt sind mit einem zusätzlichen Quadrat
markiert. Außerdem ist der Punkt, der als letztes angefasst wurde, von einem
Kreis umgeben, der das Gewicht dieses Punktes visualisiert. Folgende
Modifikationen können vorgenommen werden:
-
Um Punkte an das Kontrollpolygon anzuhängen, muss mit der linken
Maustaste ins Fenster geklickt werden. Hierdurch wird ein neuer Punkt
an dieser Position eingefügt.
-
Der zuletzt angehängte Punkt kann durch Drücken der Steuerungstaste
(Strg, Ctrl) gelöscht werden.
-
Kontrollpunkte können durch Ziehen mit der Maus verschoben werden
-
Punkte auf dem Kontrollpolygon werden eingefügt, indem auf die
gewünschte
Stelle auf dem Kontrollpolygon geklickt wird.
-
Um die Kurve zu schließen bzw. zu öffnen muss auf den ersten oder
letzten Punkt des Kontrollpolygons geklickt werden.
-
Das Gewicht eines Kontrollpunktes kann verändert werden, indem zuerst
auf den Punkt geklickt wird (wenn der Gewichtskreis noch nicht angzeigt
wird) und anschließend die Größe des Kreises um den Punkt durch Ziehen
mit der Maus verändert wird.
Ein Klick mit der rechten Maustaste beendet die Prozedur. Unter macOS
kann draw_nurbs_moddraw_nurbs_modDrawNurbsModDrawNurbsModDrawNurbsMod
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_colorset_colorSetColorSetColorSetColor
,
set_coloredset_coloredSetColoredSetColoredSetColored
, set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidth
und set_line_styleset_line_styleSetLineStyleSetLineStyleSetLineStyle
gesetzt werden können. Das Kontrollpolygon und alle Anfasser werden in
der zweiten Farbe gezeichnet, die via set_colorset_colorSetColorSetColorSetColor
oder
set_coloredset_coloredSetColoredSetColoredSetColored
gesetzt wurde. Ihre Linienbreite ist fest auf 1 gesetzt,
außerdem werden ihre Linien durchgezogen gezeichnet.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
ContOutContOutContOutContOutcontOut
(output_object) xld_cont →
objectHXLDContHXLDContHobject *
Kontur der modifizierten Kurve.
WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle
(input_control) window →
HWindow, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Fenster-Handle.
RotateRotateRotateRotaterotate
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Rotation ermöglichen?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"
MoveMoveMoveMovemove
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Verschieben ermöglichen?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"
ScaleScaleScaleScalescale
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Skalieren ermöglichen?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"
KeepRatioKeepRatioKeepRatioKeepRatiokeepRatio
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Seitenverhältnis beim Skalieren beibehalten?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"
EditEditEditEditedit
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Editieren ermöglichen?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"
DegreeDegreeDegreeDegreedegree
(input_control) integer →
HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Grad p der Kurve. Vernünftige Werte liegen zwischen 3
und 25.
Defaultwert: 3
Wertevorschläge: 2, 3, 4, 5
Restriktion: Degree >= 2
RowsInRowsInRowsInRowsInrowsIn
(input_control) coordinates.y-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Zeilenkoordinaten des Eingabekontrollpolygons.
ColsInColsInColsInColsIncolsIn
(input_control) coordinates.x-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Spaltenkoordinaten des Eingabekontrollpolygons.
WeightsInWeightsInWeightsInWeightsInweightsIn
(input_control) real-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Eingabegewichtsvektor.
RowsRowsRowsRowsrows
(output_control) coordinates.y-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Zeilen Koordinaten des Kontrollpolygons.
ColsColsColsColscols
(output_control) coordinates.x-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Spalten Koordinaten des Kontrollpolygons.
WeightsWeightsWeightsWeightsweights
(output_control) real-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Gewichtsvektor.
Ergebnis
draw_nurbs_moddraw_nurbs_modDrawNurbsModDrawNurbsModDrawNurbsMod
liefert den Wert 2 (H_MSG_TRUE), falls das Fenster gültig
ist. Ansonsten wird eine Fehlerbehandlung durchgeführt.
Vorgänger
open_windowopen_windowOpenWindowOpenWindowOpenWindow
Nachfolger
set_coloredset_coloredSetColoredSetColoredSetColored
,
set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidth
,
set_drawset_drawSetDrawSetDrawSetDraw
,
set_insertset_insertSetInsertSetInsertSetInsert
Alternativen
draw_nurbs_interp_moddraw_nurbs_interp_modDrawNurbsInterpModDrawNurbsInterpModDrawNurbsInterpMod
,
draw_xld_moddraw_xld_modDrawXldModDrawXldModDrawXldMod
Siehe auch
draw_nurbsdraw_nurbsDrawNurbsDrawNurbsDrawNurbs
,
draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterpDrawNurbsInterp
,
gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldGenContourNurbsXld
Modul
Foundation