angle_lxangle_lxAngleLxAngleLx (Operator)

Name

angle_lxangle_lxAngleLxAngleLx — Berechnen des Winkels zwischen einer Geraden und der horizontalen Achse.

Signatur

angle_lx( : : Row1, Column1, Row2, Column2 : Angle)

Herror angle_lx(double Row1, double Column1, double Row2, double Column2, double* Angle)

Herror T_angle_lx(const Htuple Row1, const Htuple Column1, const Htuple Row2, const Htuple Column2, Htuple* Angle)

void AngleLx(const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2, HTuple* Angle)

static HTuple HMisc::AngleLx(const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2)

static double HMisc::AngleLx(double Row1, double Column1, double Row2, double Column2)

static void HOperatorSet.AngleLx(HTuple row1, HTuple column1, HTuple row2, HTuple column2, out HTuple angle)

static HTuple HMisc.AngleLx(HTuple row1, HTuple column1, HTuple row2, HTuple column2)

static double HMisc.AngleLx(double row1, double column1, double row2, double column2)

Beschreibung

angle_lxangle_lxAngleLxAngleLxAngleLx berechnet den Winkel zwischen einer Geraden und der Horizontalen. Als Eingabe werden die Koordinaten von zwei Punkten auf der Geraden (Row1Row1Row1Row1row1,Column1Column1Column1Column1column1, Row2Row2Row2Row2row2,Column2Column2Column2Column2column2) erwartet. Die Berechnung des Winkels geschieht wie folgt: Man interpretiert die Gerade als einen Vektor, wobei Row1Row1Row1Row1row1,Column1Column1Column1Column1column1 der Startpunkt und Row2Row2Row2Row2row2,Column2Column2Column2Column2column2 der Endpunkt sind. Der Startpunkt liegt dabei auf der Horizontalen und dient in der folgenden Überlegung als Drehpunkt. Liegt der Endpunkt des Vektors oberhalb der Horizontalen, ergibt sich der gesuchte Winkel (mit positivem Vorzeichen) aus der Rotation dieser Horizontalen gegen den Uhrzeigersinn auf den Vektor. Liegt der Endpunkt des Vektors unterhalb der Horizontalen, ergibt sich der gesuchte Winkel (mit negativem Vorzeichen) aus der Rotation dieser Horizontalen im Uhrzeigersinn auf den Vektor. Der Winkel ist also abhängig von der Reihenfolge der Koordinaten. Das Ergebnis, d.h. der Winkel in Bogenmaß, wird im Parameter AngleAngleAngleAngleangle übergeben. Der Winkel liegt im Bereich von .

Ausführungsinformationen

Parameter

Row1Row1Row1Row1row1 (input_control)  point.y(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Zeilenkoordinate des ersten Punktes der Geraden.

Column1Column1Column1Column1column1 (input_control)  point.x(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Spaltenkoordinate des ersten Punktes der Geraden.

Row2Row2Row2Row2row2 (input_control)  point.y(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Zeilenkoordinate des zweiten Punktes der Geraden.

Column2Column2Column2Column2column2 (input_control)  point.x(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Spaltenkoordinate des zweiten Punktes der Geraden.

AngleAngleAngleAngleangle (output_control)  angle.rad(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Winkel zwischen der Geraden und der Horizontalen [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])
Row1 := 255
Column1 := 255
for I := 5 to 360 by 5
  Row2 := 255 - sin(rad(I)) * 200
  Column2 := 255 + cos(rad(I)) * 200
  gen_contour_polygon_xld (Contour, [Row1,Row2], [Column1,Column2])
  angle_lx (Row1, Column1, Row2, Column2, Angle)
  AngleDeg := deg(Angle)
endfor

Ergebnis

angle_lxangle_lxAngleLxAngleLxAngleLx liefert den Wert 2 (H_MSG_TRUE).

Alternativen

angle_llangle_llAngleLlAngleLlAngleLl

Modul

Foundation