#include "implicit_f.inc"
Go to the source code of this file.
|
| integer function | seg_intersect (x1, y1, x2, y2, x3, y3, x4, y4, xint, yint, idebug) |
◆ seg_intersect()
| integer function seg_intersect |
( |
| x1, |
|
|
| y1, |
|
|
| x2, |
|
|
| y2, |
|
|
| x3, |
|
|
| y3, |
|
|
| x4, |
|
|
| y4, |
|
|
| xint, |
|
|
| yint, |
|
|
integer | idebug ) |
Definition at line 29 of file seg_intersect.F.
31
32
33
34#include "implicit_f.inc"
35
36
37
38 my_real :: x1,y1,x2,y2,x3,y3,x4,y4,xint,yint,ratio
39
40
41
42 INTEGER :: OK,IDEBUG
43 my_real :: ax,bx,ay,by,cx,cy,sy,sx,dm,
alpha,beta,tol
44
45
46
47
48
49 ok = 0
50 ax = x2 - x1
51 ay = y2 - y1
52 bx = x4 - x3
53 by = y4 - y3
54
55 dm = ay*bx - ax*by
56 IF (dm /= zero) THEN
57 cx = x3 - x1
58 cy = y3 - y1
59
60 alpha = (bx * cy - by * cx) / dm
61 beta = (ax * cy - ay * cx) / dm
62
64 . beta >= zero .and. beta <= one) THEN
65 ok = 1
66 xint = x1 +
alpha * ax
67 yint = y1 +
alpha * ay
68 ENDIF
69
70 ENDIF
72
73 RETURN
integer function seg_intersect(x1, y1, x2, y2, x3, y3, x4, y4, xint, yint, idebug)