intersection_llintersection_llIntersectionLlIntersectionLl (Operator)
Name
intersection_llintersection_llIntersectionLlIntersectionLl
— Berechnen des Schnittpunktes zwischen zwei Geraden.
Warnung
intersection_llintersection_llIntersectionLlIntersectionLlIntersectionLl
ist veraltet und wird nur aus Gründen
der Rückwärtskompatibilität zur Verfügung gestellt. Neue
Applikationen sollten stattdessen den Operator intersection_linesintersection_linesIntersectionLinesIntersectionLinesIntersectionLines
aus dem Kapitel Tools / Geometrie verwenden.
Signatur
Herror intersection_ll(double RowA1, double ColumnA1, double RowA2, double ColumnA2, double RowB1, double ColumnB1, double RowB2, double ColumnB2, double* Row, double* Column, Hlong* IsParallel)
Herror T_intersection_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* Row, Htuple* Column, Htuple* IsParallel)
void IntersectionLl(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* Row, HTuple* Column, HTuple* IsParallel)
static void HMisc::IntersectionLl(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* Row, HTuple* Column, HTuple* IsParallel)
static void HMisc::IntersectionLl(double RowA1, double ColumnA1, double RowA2, double ColumnA2, double RowB1, double ColumnB1, double RowB2, double ColumnB2, double* Row, double* Column, Hlong* IsParallel)
static void HOperatorSet.IntersectionLl(HTuple rowA1, HTuple columnA1, HTuple rowA2, HTuple columnA2, HTuple rowB1, HTuple columnB1, HTuple rowB2, HTuple columnB2, out HTuple row, out HTuple column, out HTuple isParallel)
static void HMisc.IntersectionLl(HTuple rowA1, HTuple columnA1, HTuple rowA2, HTuple columnA2, HTuple rowB1, HTuple columnB1, HTuple rowB2, HTuple columnB2, out HTuple row, out HTuple column, out HTuple isParallel)
static void HMisc.IntersectionLl(double rowA1, double columnA1, double rowA2, double columnA2, double rowB1, double columnB1, double rowB2, double columnB2, out double row, out double column, out int isParallel)
Beschreibung
intersection_llintersection_llIntersectionLlIntersectionLlIntersectionLl
berechnet die Koordinaten des
Schnittpunktes zwischen zwei Geraden.
Als Eingabe werden je zwei Punkte auf den Geraden erwartet
(RowA1RowA1RowA1RowA1rowA1
,ColumnA1ColumnA1ColumnA1ColumnA1columnA1
,
RowA2RowA2RowA2RowA2rowA2
,ColumnA2ColumnA2ColumnA2ColumnA2columnA2
) und
(RowB1RowB1RowB1RowB1rowB1
,ColumnB1ColumnB1ColumnB1ColumnB1columnB1
,
RowB2RowB2RowB2RowB2rowB2
,ColumnB2ColumnB2ColumnB2ColumnB2columnB2
).
Das Ergebnis wird dann in RowRowRowRowrow
und ColumnColumnColumnColumncolumn
übergeben.
Falls die Geraden parallel zueinander sind, sind die Werte von
RowRowRowRowrow
und ColumnColumnColumnColumncolumn
undefiniert und IsParallelIsParallelIsParallelIsParallelisParallel
hat den Wert 1. Andernfalls liefert IsParallelIsParallelIsParallelIsParallelisParallel
den Wert 0.
Achtung
Falls die Geraden parallel zueinander sind,
dann sind die Werte von RowRowRowRowrow
und
ColumnColumnColumnColumncolumn
undefiniert.
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
RowA1RowA1RowA1RowA1rowA1
(input_control) point.y(-array) →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des ersten Punktes der ersten
Geraden.
ColumnA1ColumnA1ColumnA1ColumnA1columnA1
(input_control) point.x(-array) →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des ersten Punktes der
ersten Geraden.
RowA2RowA2RowA2RowA2rowA2
(input_control) point.y(-array) →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des zweiten Punktes der
ersten Geraden.
ColumnA2ColumnA2ColumnA2ColumnA2columnA2
(input_control) point.x(-array) →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des zweiten Punktes der
ersten Geraden.
RowB1RowB1RowB1RowB1rowB1
(input_control) point.y(-array) →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des ersten Punktes der
zweiten Geraden.
ColumnB1ColumnB1ColumnB1ColumnB1columnB1
(input_control) point.x(-array) →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate es ersten Punktes der
zweiten Geraden.
RowB2RowB2RowB2RowB2rowB2
(input_control) point.y(-array) →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des zweiten Punktes der
zweiten Geraden.
ColumnB2ColumnB2ColumnB2ColumnB2columnB2
(input_control) point.x(-array) →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des zweiten Punktes der
zweiten Geraden.
RowRowRowRowrow
(output_control) point.y(-array) →
HTupleHTupleHtuple (real) (double) (double) (double)
Zeilenkoordinate des Schnittpunktes.
ColumnColumnColumnColumncolumn
(output_control) point.x(-array) →
HTupleHTupleHtuple (real) (double) (double) (double)
Spaltenkoordinate des Schnittpunktes.
IsParallelIsParallelIsParallelIsParallelisParallel
(output_control) number(-array) →
HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Sind die zwei Geraden parallel?
Beispiel (HDevelop)
dev_set_color ('black')
RowLine1 := 350
ColLine1 := 250
RowLine2 := 300
ColLine2 := 300
Rows := 300
Columns := 50
disp_line (WindowHandle, RowLine1, ColLine1, RowLine2, ColLine2)
n := 0
for Rows := 40 to 200 by 4
dev_set_color ('red')
disp_line (WindowHandle, Rows, Columns, Rows+n, Columns+n)
intersection_ll (Rows, Columns, Rows+n, Columns+n, RowLine1, ColLine1, \
RowLine2, ColLine2, Row, Column, IsParallel)
dev_set_color ('blue')
disp_line (WindowHandle, Row, Column-2, Row, Column+2)
disp_line (WindowHandle, Row-2, Column, Row+2, Column)
n := n+8
endfor
Beispiel (C)
create_tuple(&rowA1, 1);
set_i(rowA1, 8, 0);
create_tuple(&columnA1, 1);
set_i(columnA1, 7, 0);
create_tuple(&rowA2, 1);
set_i(rowA2, 15, 0);
create_tuple(&columnA2, 1);
set_i(columnA2, 11, 0);
create_tuple(&RowB1, 1);
set_i(RowB1, 2, 0);
create_tuple(&ColumnB1, 1);
set_i(ColumnB1, 4, 0);
create_tuple(&RowB2, 1);
set_i(RowB2, 6, 0);
create_tuple(&ColumnB2, 1);
set_i(ColumnB2, 10, 0);
T_intersection_ll(rowA1,columnA1,rowA2,columnA2,RowB1,ColumnB1,RowB2,
ColumnB2,&row_i,&column_i,¶llel);
aa_min = get_d(row_i,0);
aa_max = get_d(column_i,0);
Beispiel (HDevelop)
dev_set_color ('black')
RowLine1 := 350
ColLine1 := 250
RowLine2 := 300
ColLine2 := 300
Rows := 300
Columns := 50
disp_line (WindowHandle, RowLine1, ColLine1, RowLine2, ColLine2)
n := 0
for Rows := 40 to 200 by 4
dev_set_color ('red')
disp_line (WindowHandle, Rows, Columns, Rows+n, Columns+n)
intersection_ll (Rows, Columns, Rows+n, Columns+n, RowLine1, ColLine1, \
RowLine2, ColLine2, Row, Column, IsParallel)
dev_set_color ('blue')
disp_line (WindowHandle, Row, Column-2, Row, Column+2)
disp_line (WindowHandle, Row-2, Column, Row+2, Column)
n := n+8
endfor
Beispiel (HDevelop)
dev_set_color ('black')
RowLine1 := 350
ColLine1 := 250
RowLine2 := 300
ColLine2 := 300
Rows := 300
Columns := 50
disp_line (WindowHandle, RowLine1, ColLine1, RowLine2, ColLine2)
n := 0
for Rows := 40 to 200 by 4
dev_set_color ('red')
disp_line (WindowHandle, Rows, Columns, Rows+n, Columns+n)
intersection_ll (Rows, Columns, Rows+n, Columns+n, RowLine1, ColLine1, \
RowLine2, ColLine2, Row, Column, IsParallel)
dev_set_color ('blue')
disp_line (WindowHandle, Row, Column-2, Row, Column+2)
disp_line (WindowHandle, Row-2, Column, Row+2, Column)
n := n+8
endfor
Beispiel (HDevelop)
dev_set_color ('black')
RowLine1 := 350
ColLine1 := 250
RowLine2 := 300
ColLine2 := 300
Rows := 300
Columns := 50
disp_line (WindowHandle, RowLine1, ColLine1, RowLine2, ColLine2)
n := 0
for Rows := 40 to 200 by 4
dev_set_color ('red')
disp_line (WindowHandle, Rows, Columns, Rows+n, Columns+n)
intersection_ll (Rows, Columns, Rows+n, Columns+n, RowLine1, ColLine1, \
RowLine2, ColLine2, Row, Column, IsParallel)
dev_set_color ('blue')
disp_line (WindowHandle, Row, Column-2, Row, Column+2)
disp_line (WindowHandle, Row-2, Column, Row+2, Column)
n := n+8
endfor
Ergebnis
intersection_llintersection_llIntersectionLlIntersectionLlIntersectionLl
liefert den Wert 2 (H_MSG_TRUE).
Modul
Foundation