28 lines
618 B
Plaintext
28 lines
618 B
Plaintext
(scl 4)
|
|
|
|
(de intersects (Px Py Ax Ay Bx By)
|
|
(when (> Ay By)
|
|
(xchg 'Ax 'Bx)
|
|
(xchg 'Ay 'By) )
|
|
(when (or (= Py Ay) (= Py By))
|
|
(inc 'Py) )
|
|
(and
|
|
(>= Py Ay)
|
|
(>= By Py)
|
|
(>= (max Ax Bx) Px)
|
|
(or
|
|
(> (min Ax Bx) Px)
|
|
(= Ax Px)
|
|
(and
|
|
(<> Ax Bx)
|
|
(>=
|
|
(*/ (- Py Ay) 1.0 (- Px Ax)) # Blue
|
|
(*/ (- By Ay) 1.0 (- Bx Ax)) ) ) ) ) ) # Red
|
|
|
|
(de inside (Pt Poly)
|
|
(let Res NIL
|
|
(for Edge Poly
|
|
(when (apply intersects Edge (car Pt) (cdr Pt))
|
|
(onOff Res) ) )
|
|
Res ) )
|