(defun vk_GetNearestPointOnLine (p1 p2 p / d v)
(setq d (distance p1 p2)
v (/ (+ (- (expt (distance p1 p) 2) (expt (distance p2 p) 2)) (expt d 2)) (* 2 d))
)
(cond ((<= v 0) p1)
((>= v d) p2)
(t (polar p1 (angle p1 p2) v))
)
)
(defun _inters ( p1 p2 p3 p4 ) ...)
:thinking:
Interesting... now I'm curious how you could write inters function, that uses math & vectors only:going back to school :)Code: [Select](defun _inters ( p1 p2 p3 p4 ) ...)
:thinking:
(defun vk_Inters (p1 p2 p3 p4 / x y x1 x2 y1 y2 k1 k2 l1 l2)
(setq x1 (car p1)
x2 (car p2)
y1 (cadr p1)
y2 (cadr p2)
k1 (/ (- y2 y1) (- x2 x1))
l1 (- y1 (* x1 k1))
x1 (car p3)
x2 (car p4)
y1 (cadr p3)
y2 (cadr p4)
k2 (/ (- y2 y1) (- x2 x1))
l2 (- y1 (* x1 k2))
x (/ (- l2 l1) (- k1 k2))
y (+ (* k1 x) l1)
)
(list x y)
)
going back to school :)