angle_ll angle_ll AngleLl AngleLl angle_ll (Operator)
Name
angle_ll angle_ll AngleLl AngleLl angle_ll — Berechnen des Winkels zwischen zwei Geraden.
Signatur
Herror angle_ll (double RowA1 , double ColumnA1 , double RowA2 , double ColumnA2 , double RowB1 , double ColumnB1 , double RowB2 , double ColumnB2 , double* Angle )
Herror T_angle_ll (const Htuple RowA1 , const Htuple ColumnA1 , const Htuple RowA2 , const Htuple ColumnA2 , const Htuple RowB1 , const Htuple ColumnB1 , const Htuple RowB2 , const Htuple ColumnB2 , Htuple* Angle )
void AngleLl (const HTuple& RowA1 , const HTuple& ColumnA1 , const HTuple& RowA2 , const HTuple& ColumnA2 , const HTuple& RowB1 , const HTuple& ColumnB1 , const HTuple& RowB2 , const HTuple& ColumnB2 , HTuple* Angle )
static HTuple HMisc ::AngleLl (const HTuple& RowA1 , const HTuple& ColumnA1 , const HTuple& RowA2 , const HTuple& ColumnA2 , const HTuple& RowB1 , const HTuple& ColumnB1 , const HTuple& RowB2 , const HTuple& ColumnB2 )
static double HMisc ::AngleLl (double RowA1 , double ColumnA1 , double RowA2 , double ColumnA2 , double RowB1 , double ColumnB1 , double RowB2 , double ColumnB2 )
static void HOperatorSet .AngleLl (HTuple rowA1 , HTuple columnA1 , HTuple rowA2 , HTuple columnA2 , HTuple rowB1 , HTuple columnB1 , HTuple rowB2 , HTuple columnB2 , out HTuple angle )
static HTuple HMisc .AngleLl (HTuple rowA1 , HTuple columnA1 , HTuple rowA2 , HTuple columnA2 , HTuple rowB1 , HTuple columnB1 , HTuple rowB2 , HTuple columnB2 )
static double HMisc .AngleLl (double rowA1 , double columnA1 , double rowA2 , double columnA2 , double rowB1 , double columnB1 , double rowB2 , double columnB2 )
def angle_ll (row_a1 : MaybeSequence[Union[float, int]], column_a1 : MaybeSequence[Union[float, int]], row_a2 : MaybeSequence[Union[float, int]], column_a2 : MaybeSequence[Union[float, int]], row_b1 : MaybeSequence[Union[float, int]], column_b1 : MaybeSequence[Union[float, int]], row_b2 : MaybeSequence[Union[float, int]], column_b2 : MaybeSequence[Union[float, int]]) -> Sequence[float]
def angle_ll_s (row_a1 : MaybeSequence[Union[float, int]], column_a1 : MaybeSequence[Union[float, int]], row_a2 : MaybeSequence[Union[float, int]], column_a2 : MaybeSequence[Union[float, int]], row_b1 : MaybeSequence[Union[float, int]], column_b1 : MaybeSequence[Union[float, int]], row_b2 : MaybeSequence[Union[float, int]], column_b2 : MaybeSequence[Union[float, int]]) -> float
Beschreibung
angle_ll angle_ll AngleLl AngleLl angle_ll berechnet den Winkel zwischen zwei Geraden.
Als Eingabe werden die Koordinaten von zwei Punkten der ersten Geraden
(RowA1 RowA1 RowA1 rowA1 row_a1 ,ColumnA1 ColumnA1 ColumnA1 columnA1 column_a1 ,
RowA2 RowA2 RowA2 rowA2 row_a2 ,ColumnA2 ColumnA2 ColumnA2 columnA2 column_a2 ) und der zweiten Geraden
(RowB1 RowB1 RowB1 rowB1 row_b1 ,ColumnB1 ColumnB1 ColumnB1 columnB1 column_b1 ,
RowB2 RowB2 RowB2 rowB2 row_b2 ,ColumnB2 ColumnB2 ColumnB2 columnB2 column_b2 ) erwartet.
Die Berechnung des Winkels geschieht wie folgt: Man interpretiert
die beiden Geraden als Vektoren, wobei
RowA1 RowA1 RowA1 rowA1 row_a1 ,ColumnA1 ColumnA1 ColumnA1 columnA1 column_a1 bzw.
RowB1 RowB1 RowB1 rowB1 row_b1 ,ColumnB1 ColumnB1 ColumnB1 columnB1 column_b1 die Startpunkte und
RowA2 RowA2 RowA2 rowA2 row_a2 ,ColumnA2 ColumnA2 ColumnA2 columnA2 column_a2 bzw.
RowB2 RowB2 RowB2 rowB2 row_b2 ,ColumnB2 ColumnB2 ColumnB2 columnB2 column_b2 die Endpunkte sind.
Dreht man nun den Vektor A gegen den Uhrzeigersinn auf den
Vektor B (der Drehpunkt ist
der Schnittpunkt der Geraden), so ist der benötigte Rotationswinkel
der gesuchte Wert.
Der Winkel ist also abhängig von der
Reihenfolge der Koordinaten und der Reihenfolge der beiden Geraden.
Das Ergebnis, d.h. der Winkel in Bogenmaß, wird im Parameter
Angle Angle Angle angle angle übergeben.
Die Winkel liegen im Bereich von
.
Parameter-Broadcasting
Dieser Operator unterstützt Parameter-Broadcasting.
Das bedeutet, dass für jeden Parameter ein Tupel der Länge
1 oder N übergeben werden kann.
Tupel der Länge 1 werden wiederholt verwendet,
so dass immer N Winkel berechnet und zurückgegeben werden.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf interner Datenebene.
Parameter
RowA1 RowA1 RowA1 rowA1 row_a1 (input_control) point.y(-array) → HTuple MaybeSequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des ersten Punktes der ersten
Geraden.
ColumnA1 ColumnA1 ColumnA1 columnA1 column_a1 (input_control) point.x(-array) → HTuple MaybeSequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des ersten Punktes der ersten
Geraden.
RowA2 RowA2 RowA2 rowA2 row_a2 (input_control) point.y(-array) → HTuple MaybeSequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des zweiten Punktes der ersten
Geraden.
ColumnA2 ColumnA2 ColumnA2 columnA2 column_a2 (input_control) point.x(-array) → HTuple MaybeSequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des zweiten Punktes der ersten
Geraden.
RowB1 RowB1 RowB1 rowB1 row_b1 (input_control) point.y(-array) → HTuple MaybeSequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des ersten Punktes der zweiten
Geraden.
ColumnB1 ColumnB1 ColumnB1 columnB1 column_b1 (input_control) point.x(-array) → HTuple MaybeSequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des ersten Punktes der zweiten
Geraden.
RowB2 RowB2 RowB2 rowB2 row_b2 (input_control) point.y(-array) → HTuple MaybeSequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des zweiten Punktes der zweiten
Geraden.
ColumnB2 ColumnB2 ColumnB2 columnB2 column_b2 (input_control) point.x(-array) → HTuple MaybeSequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des zweiten Punktes der zweiten
Geraden.
Angle Angle Angle angle angle (output_control) angle.rad(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Winkel zwischen den Geraden [rad].
Beispiel (HDevelop)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
RowA1 := 255
ColumnA1 := 10
RowA2 := 255
ColumnA2 := 501
gen_contour_polygon_xld (Contour, [RowA1,RowA2], [ColumnA1,ColumnA2])
RowB1 := 255
ColumnB1 := 255
for I := 5 to 360 by 5
RowB2 := 255 - sin(rad(I)) * 200
ColumnB2 := 255 + cos(rad(I)) * 200
gen_contour_polygon_xld (Contour, [RowB1,RowB2], [ColumnB1,ColumnB2])
angle_ll (RowA1, ColumnA1, RowA2, ColumnA2,\
RowB1, ColumnB1, RowB2, ColumnB2, Angle)
AngleDeg := deg(Angle)
endfor
Ergebnis
angle_ll angle_ll AngleLl AngleLl angle_ll liefert den Wert 2 (
H_MSG_TRUE )
.
Alternativen
angle_lx angle_lx AngleLx AngleLx angle_lx
Modul
Foundation