KlassenKlassenKlassenKlassen | | | | Operatoren

angle_llangle_llAngleLlangle_llAngleLlAngleLl (Operator)

Name

angle_llangle_llAngleLlangle_llAngleLlAngleLl — Berechnen des Winkels zwischen zwei Geraden.

Signatur

angle_ll( : : RowA1, ColumnA1, RowA2, ColumnA2, RowB1, ColumnB1, RowB2, ColumnB2 : Angle)

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)

Herror 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, double* Angle)

Herror 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)

void HOperatorSetX.AngleLl(
[in] VARIANT RowA1, [in] VARIANT ColumnA1, [in] VARIANT RowA2, [in] VARIANT ColumnA2, [in] VARIANT RowB1, [in] VARIANT ColumnB1, [in] VARIANT RowB2, [in] VARIANT ColumnB2, [out] VARIANT* Angle)

VARIANT HMiscX.AngleLl(
[in] VARIANT RowA1, [in] VARIANT ColumnA1, [in] VARIANT RowA2, [in] VARIANT ColumnA2, [in] VARIANT RowB1, [in] VARIANT ColumnB1, [in] VARIANT RowB2, [in] VARIANT 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)

Beschreibung

angle_llangle_llAngleLlangle_llAngleLlAngleLl berechnet den Winkel zwischen zwei Geraden. Als Eingabe werden die Koordinaten von zwei Punkten der ersten Geraden (RowA1RowA1RowA1RowA1RowA1rowA1,ColumnA1ColumnA1ColumnA1ColumnA1ColumnA1columnA1, RowA2RowA2RowA2RowA2RowA2rowA2,ColumnA2ColumnA2ColumnA2ColumnA2ColumnA2columnA2) und der zweiten Geraden (RowB1RowB1RowB1RowB1RowB1rowB1,ColumnB1ColumnB1ColumnB1ColumnB1ColumnB1columnB1, RowB2RowB2RowB2RowB2RowB2rowB2,ColumnB2ColumnB2ColumnB2ColumnB2ColumnB2columnB2) erwartet. Die Berechnung des Winkels geschieht wie folgt: Man interpretiert die beiden Geraden als Vektoren, wobei RowA1RowA1RowA1RowA1RowA1rowA1,ColumnA1ColumnA1ColumnA1ColumnA1ColumnA1columnA1 bzw. RowB1RowB1RowB1RowB1RowB1rowB1,ColumnB1ColumnB1ColumnB1ColumnB1ColumnB1columnB1 die Startpunkte und RowA2RowA2RowA2RowA2RowA2rowA2,ColumnA2ColumnA2ColumnA2ColumnA2ColumnA2columnA2 bzw. RowB2RowB2RowB2RowB2RowB2rowB2,ColumnB2ColumnB2ColumnB2ColumnB2ColumnB2columnB2 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 AngleAngleAngleAngleAngleangle übergeben. Die Winkel liegen im Bereich von

.

Parallelisierung

Parameter

RowA1RowA1RowA1RowA1RowA1rowA1 (input_control)  point.y(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Zeilenkoordinate des ersten Punktes der ersten Geraden.

ColumnA1ColumnA1ColumnA1ColumnA1ColumnA1columnA1 (input_control)  point.x(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Spaltenkoordinate des ersten Punktes der ersten Geraden.

RowA2RowA2RowA2RowA2RowA2rowA2 (input_control)  point.y(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Zeilenkoordinate des zweiten Punktes der ersten Geraden.

ColumnA2ColumnA2ColumnA2ColumnA2ColumnA2columnA2 (input_control)  point.x(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Spaltenkoordinate des zweiten Punktes der ersten Geraden.

RowB1RowB1RowB1RowB1RowB1rowB1 (input_control)  point.y(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Zeilenkoordinate des ersten Punktes der zweiten Geraden.

ColumnB1ColumnB1ColumnB1ColumnB1ColumnB1columnB1 (input_control)  point.x(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Spaltenkoordinate des ersten Punktes der zweiten Geraden.

RowB2RowB2RowB2RowB2RowB2rowB2 (input_control)  point.y(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Zeilenkoordinate des zweiten Punktes der zweiten Geraden.

ColumnB2ColumnB2ColumnB2ColumnB2ColumnB2columnB2 (input_control)  point.x(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Spaltenkoordinate des zweiten Punktes der zweiten Geraden.

AngleAngleAngleAngleAngleangle (output_control)  real(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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_llangle_llAngleLlangle_llAngleLlAngleLl liefert den Wert 2 (H_MSG_TRUE).

Alternativen

angle_lxangle_lxAngleLxangle_lxAngleLxAngleLx

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren