;;; This software is being provided to you, the LICENSEE, by the
;;; Massachusetts Institute of Technology (M.I.T.), and the NEC Research
;;; Institute (NECI) under the following license.  By obtaining, using
;;; and/or copying this software, you agree that you have read,
;;; understood, and will comply with these terms and conditions:
;;; 
;;; Permission to use, copy, modify and distribute, including the right to
;;; grant others rights to distribute at any tier, this software and its
;;; documentation for research purposes only and without fee or royalty is
;;; hereby granted, provided that you agree to comply with the following
;;; copyright notice and statements, including the disclaimer, and that
;;; the same appear on ALL copies of the software and documentation,
;;; including modifications that you make for internal use or for
;;; distribution:
;;; 
;;; Copyright 1995 by the Massachusetts Institute of Technology.  All
;;; rights reserved.  Copyright 1995 by NEC Research Institute Inc. All
;;; rights reserved
;;; 
;;; THIS SOFTWARE IS PROVIDED "AS IS", AND M.I.T. and NECI MAKE NO
;;; REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.  By way of example,
;;; but not limitation, M.I.T. and NECI MAKE NO REPRESENTATIONS OR
;;; WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR
;;; THAT THE USE OF THE LICENSED SOFTWARE OR DOCUMENTATION WILL NOT
;;; INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER
;;; RIGHTS.
;;; 
;;; The name of the Massachusetts Institute of Technology or M.I.T., or
;;; NEC Research Institute, or NECI may NOT be used in advertising or
;;; publicity pertaining to distribution of the software.  Title to
;;; copyright in this software and any associated documentation shall at
;;; all times remain with M.I.T. and NECI, and USER agrees to preserve
;;; same.
;;; 

;;; -*- Mode: LISP; Base: 10; Package: 2DG; Syntax: Common-Lisp -*-
(in-package '2DG)

(defun TEST-INTERSECT-POINT-LINE-T ()
  (let* ((line (make-line (make-point (random-between -10.0 10.0) (random-between -10.0 10.0))
			  (make-point (random-between -10.0 10.0) (random-between -10.0 10.0))))
	 (pt (add (line-point-1 line) (multiply (g-coerce line 'point) (random 2.0)))))
    (list (intersect? line pt) (distance line pt))))	; Distance should be near 0.

(defun TEST-INTERSECT-POINT-LINE-SEGMENT ()
  (let* ((line (make-line-segment (make-point (random-between -10.0 10.0) (random-between -10.0 10.0))
				  (make-point (random-between -10.0 10.0) (random-between -10.0 10.0))))
	 (scale (random 2.0))
	 (pt (add (line-segment-point-1 line) (multiply (g-coerce line 'point) scale))))
    (let ((intersect? (intersect? line pt)))
      (when (or (and intersect? (< (+ 1.0 *epsilon*) scale))
		(and (not intersect?) (~<= scale 1.0)))
	(error "Mistaken intersection")))))
