draw_nurbs_interp_modT_draw_nurbs_interp_modDrawNurbsInterpModDrawNurbsInterpModdraw_nurbs_interp_mod (Operator)

Name

draw_nurbs_interp_modT_draw_nurbs_interp_modDrawNurbsInterpModDrawNurbsInterpModdraw_nurbs_interp_mod — Interaktives Modifizieren einer NURBS-Kurve durch Interpolation.

Warnung

Dieser Operator kann nicht in HDevelop-Grafikfenstern verwendet werden, die mit dev_open_window geöffnet wurden.

Signatur

draw_nurbs_interp_mod( : ContOut : WindowHandle, Rotate, Move, Scale, KeepRatio, Edit, Degree, RowsIn, ColsIn, TangentsIn : ControlRows, ControlCols, Knots, Rows, Cols, Tangents)

Herror T_draw_nurbs_interp_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 TangentsIn, Htuple* ControlRows, Htuple* ControlCols, Htuple* Knots, Htuple* Rows, Htuple* Cols, Htuple* Tangents)

void DrawNurbsInterpMod(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& TangentsIn, HTuple* ControlRows, HTuple* ControlCols, HTuple* Knots, HTuple* Rows, HTuple* Cols, HTuple* Tangents)

void HXLDCont::DrawNurbsInterpMod(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& TangentsIn, HTuple* ControlRows, HTuple* ControlCols, HTuple* Knots, HTuple* Rows, HTuple* Cols, HTuple* Tangents)

void HXLDCont::DrawNurbsInterpMod(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& TangentsIn, HTuple* ControlRows, HTuple* ControlCols, HTuple* Knots, HTuple* Rows, HTuple* Cols, HTuple* Tangents)

void HXLDCont::DrawNurbsInterpMod(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& TangentsIn, HTuple* ControlRows, HTuple* ControlCols, HTuple* Knots, HTuple* Rows, HTuple* Cols, HTuple* Tangents)   ( Nur Windows)

HXLDCont HWindow::DrawNurbsInterpMod(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& TangentsIn, HTuple* ControlRows, HTuple* ControlCols, HTuple* Knots, HTuple* Rows, HTuple* Cols, HTuple* Tangents) const

HXLDCont HWindow::DrawNurbsInterpMod(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& TangentsIn, HTuple* ControlRows, HTuple* ControlCols, HTuple* Knots, HTuple* Rows, HTuple* Cols, HTuple* Tangents) const

HXLDCont HWindow::DrawNurbsInterpMod(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& TangentsIn, HTuple* ControlRows, HTuple* ControlCols, HTuple* Knots, HTuple* Rows, HTuple* Cols, HTuple* Tangents) const   ( Nur Windows)

static void HOperatorSet.DrawNurbsInterpMod(out HObject contOut, HTuple windowHandle, HTuple rotate, HTuple move, HTuple scale, HTuple keepRatio, HTuple edit, HTuple degree, HTuple rowsIn, HTuple colsIn, HTuple tangentsIn, out HTuple controlRows, out HTuple controlCols, out HTuple knots, out HTuple rows, out HTuple cols, out HTuple tangents)

void HXLDCont.DrawNurbsInterpMod(HWindow windowHandle, string rotate, string move, string scale, string keepRatio, string edit, int degree, HTuple rowsIn, HTuple colsIn, HTuple tangentsIn, out HTuple controlRows, out HTuple controlCols, out HTuple knots, out HTuple rows, out HTuple cols, out HTuple tangents)

HXLDCont HWindow.DrawNurbsInterpMod(string rotate, string move, string scale, string keepRatio, string edit, int degree, HTuple rowsIn, HTuple colsIn, HTuple tangentsIn, out HTuple controlRows, out HTuple controlCols, out HTuple knots, out HTuple rows, out HTuple cols, out HTuple tangents)

def draw_nurbs_interp_mod(window_handle: HHandle, rotate: str, move: str, scale: str, keep_ratio: str, edit: str, degree: int, rows_in: Sequence[float], cols_in: Sequence[float], tangents_in: Sequence[float]) -> Tuple[HObject, Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float]]

Beschreibung

draw_nurbs_interp_moddraw_nurbs_interp_modDrawNurbsInterpModDrawNurbsInterpModdraw_nurbs_interp_mod liefert die Kontur ContOutContOutContOutcontOutcont_out einer NURBS-Kurve, die interaktiv durch den Benutzer im Fenster WindowHandleWindowHandleWindowHandlewindowHandlewindow_handle durch Interpolation modifiziert worden ist.

Zusätzlich zu ContOutContOutContOutcontOutcont_out werden die Kontrollinformation der Kurve (ControlRowsControlRowsControlRowscontrolRowscontrol_rows,ControlColsControlColsControlColscontrolColscontrol_cols und KnotsKnotsKnotsknotsknots), die vom Benutzer bestimmten Interpolationspunkte (RowsRowsRowsrowsrows und ColsColsColscolscols) und die Tangenten im ersten und letzten Punkt der Kurve (TangentsTangentsTangentstangentstangents) zurückgegeben. TangentsTangentsTangentstangentstangents 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'"auto""auto""auto""auto" als Gewichtsvektor verwendet werden kann, wenn die Kontrollinformationen im Operator gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldgen_contour_nurbs_xld verwendet werden. Mehr Informationen über NURBS-Kurven befinden sich in der Dokumentation des Operators gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldgen_contour_nurbs_xld.

Die Eingabekurve wird durch die Interpolationspunkte RowsInRowsInRowsInrowsInrows_in, ColsInColsInColsIncolsIncols_in, den Grad DegreeDegreeDegreedegreedegree und die Tangenten TangentsInTangentsInTangentsIntangentsIntangents_in beschrieben, so dass draw_nurbs_interp_moddraw_nurbs_interp_modDrawNurbsInterpModDrawNurbsInterpModdraw_nurbs_interp_mod mit den Ausgabedaten des Operators draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterpdraw_nurbs_interp verwendet werden kann.

Die Kurve kann auf zwei Arten modifiziert werden: Durch Editieren, zum Beispiel durch Einfügen oder Verschieben von Punkten, oder durch das Transformieren der Kurve als Ganzes, zum Beispiel durch Rotieren, Verschieben oder Skalieren. Die Kontur 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_interp_moddraw_nurbs_interp_modDrawNurbsInterpModDrawNurbsInterpModdraw_nurbs_interp_mod 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, 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.

Editieren

In diesem Modus wird die Kurve zusammen mit den Interpolationspunkten, der Starttangente und der Endtangente dargestellt. Start- und Endpunkt sind mit einem zusätzlichen Quadrat markiert. Folgende Modifikationen können vorgenommen werden.

Ein Klick mit der rechten Maustaste beendet die Prozedur.

Das Aussehen der Kurve beim Zeichnen wird durch die Linienbreite, den Linienstil und die Farbe bestimmt, die mit den Operatoren set_colorset_colorSetColorSetColorset_color, set_coloredset_coloredSetColoredSetColoredset_colored, set_line_widthset_line_widthSetLineWidthSetLineWidthset_line_width und set_line_styleset_line_styleSetLineStyleSetLineStyleset_line_style gesetzt werden können. Die Tangenten und alle Anfasser werden in der zweiten Farbe gezeichnet, die via set_colorset_colorSetColorSetColorset_color oder set_coloredset_coloredSetColoredSetColoredset_colored gesetzt wurde. Ihre Linienbreite ist fest auf 1 gesetzt, außerdem werden ihre Linien durchgezogen gezeichnet.

Achtung

Im Gegensatz zu draw_nurbsdraw_nurbsDrawNurbsDrawNurbsdraw_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.

Ausführungsinformationen

Parameter

ContOutContOutContOutcontOutcont_out (output_object)  xld_cont objectHXLDContHObjectHObjectHobject *

Kontur der modifizierten Kurve.

WindowHandleWindowHandleWindowHandlewindowHandlewindow_handle (input_control)  window HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Fenster-Handle.

RotateRotateRotaterotaterotate (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Rotation ermöglichen?

Default: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

MoveMoveMovemovemove (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Verschieben ermöglichen?

Default: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

ScaleScaleScalescalescale (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Skalieren ermöglichen?

Default: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

KeepRatioKeepRatioKeepRatiokeepRatiokeep_ratio (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Seitenverhältnis beim Skalieren beibehalten?

Default: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

EditEditEditeditedit (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Editieren ermöglichen?

Default: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

DegreeDegreeDegreedegreedegree (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Grad p der Kurve. Vernünftige Werte liegen zwischen 3 und 5.

Default: 3

Wertevorschläge: 2, 3, 4, 5

Restriktion: Degree >= 2 && Degree <= 9

RowsInRowsInRowsInrowsInrows_in (input_control)  coordinates.y-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Zeilenkoordinaten der Eingabeinterpolationspunkte.

ColsInColsInColsIncolsIncols_in (input_control)  coordinates.x-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Spaltenkoordinaten der Eingabeinterpolationspunkte.

TangentsInTangentsInTangentsIntangentsIntangents_in (input_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Eingabetangenten.

ControlRowsControlRowsControlRowscontrolRowscontrol_rows (output_control)  coordinates.y-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Zeilenkoordinaten des Kontrollpolygons.

ControlColsControlColsControlColscontrolColscontrol_cols (output_control)  coordinates.x-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Spaltenkoordinaten des Kontrollpolygons

KnotsKnotsKnotsknotsknots (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Knotenvektor.

RowsRowsRowsrowsrows (output_control)  coordinates.y-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Zeilenkoordinaten der vom Benutzer bestimmten Punkte.

ColsColsColscolscols (output_control)  coordinates.x-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Spaltenkoordinaten der vom Benutzer bestimmten Punkte.

TangentsTangentsTangentstangentstangents (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Vom Benutzer bestimmte Tangenten.

Ergebnis

draw_nurbs_interp_moddraw_nurbs_interp_modDrawNurbsInterpModDrawNurbsInterpModdraw_nurbs_interp_mod liefert den Wert 2 ( H_MSG_TRUE) , falls das Fenster gültig ist. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

open_windowopen_windowOpenWindowOpenWindowopen_window

Nachfolger

set_coloredset_coloredSetColoredSetColoredset_colored, set_line_widthset_line_widthSetLineWidthSetLineWidthset_line_width, set_drawset_drawSetDrawSetDrawset_draw

Alternativen

draw_xld_moddraw_xld_modDrawXldModDrawXldModdraw_xld_mod, draw_nurbs_moddraw_nurbs_modDrawNurbsModDrawNurbsModdraw_nurbs_mod

Siehe auch

draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterpdraw_nurbs_interp, gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldgen_contour_nurbs_xld

Modul

Foundation