Drop cond for length of one, calculate average based on length of list of
points.
If a 2d point is given, it is converted to 3d with z=0."
(cond ((numberp (first points))
points)
- ((= (length points) 1)
- (first points))
- (t (mapcar #'/
- (list (apply #'+ (mapcar #'first points))
- (apply #'+ (mapcar #'second points))
- (apply #'+
- (mapcar #'(lambda (x)
- (if (null (third x))
- 0
- (third x)))
- points)))
- '(2 2 2)))))
+ (t (let ((numpoints (length points)))
+ (mapcar #'/
+ (list (apply #'+ (mapcar #'first points))
+ (apply #'+ (mapcar #'second points))
+ (apply #'+
+ (mapcar #'(lambda (x)
+ (if (null (third x))
+ 0
+ (third x)))
+ points)))
+ (list numpoints
+ numpoints
+ numpoints))))))
(defun dot-product-points (apoint bpoint)
"Return the dot-product of 3d vectors a and b.