Commit eeaeebde authored by Dave Cooper's avatar Dave Cooper

added points-display documentation and new points functions.

parent f985644c
......@@ -526,6 +526,8 @@ If you are interested in this effort we would love to hear from you at open-sour
#:bounding-box-from-points
#:flatten-lines
#:flatten-curves
#:point-on-plane?
#:point-on-vector?
#:arc
#:base-object
......
......@@ -23,7 +23,7 @@
(defparameter *gendl-version* "1588r004")
(defparameter *gendl-version* "1590pre002")
(defparameter *gendl-patch-level* nil)
......
......@@ -1628,3 +1628,33 @@ add any new keys.
(the-child %matrix-vector-2%)
(* (second (the-child index)) (the-child %matrix-increment-2%)))))))
(defun point-on-plane? (3d-point plane-point plane-normal &key (tolerance *zero-epsilon*))
"Boolean. Determines whether or not the <tt>3d-point</tt> lies on the plane specified by <tt>plane-point</tt>
and <tt>plane-normal</tt>, within <tt>tolerance</tt>.
:arguments (3d-point \"Point in question\"
plane-point \"point on the known plane\"
plane-normal \"normal to the known plane\")
:&key ((tolerance *zero-epsilon*) \"Tolerance for points to be considered coincident.\")
"
(let ((intersect-point (inter-line-plane 3d-point plane-normal plane-point plane-normal)))
(coincident-point? 3d-point intersect-point :tolerance tolerance)))
(defun point-on-vector? (first-point second-point unknown-point &key (tolerance *zero-epsilon*))
"Boolean. Determines whether or not the <tt>unknown-point</tt> lies on the ray specified by the vector
pointing from <tt>first-point</tt> to <tt>second-point</tt>, within <tt>tolerance</tt>.
:arguments (first-point \"first point of vector\"
second-point \"second point of vector\"
unknown-point \"point in question\")
:&key ((tolerance *zero-epsilon*) \"Tolerance for vectors to be considered same-direction.\")
"
(let ((known-vector (subtract-vectors second-point first-point))
(unknown-vector (subtract-vectors unknown-point first-point)))
(same-direction-vectors? known-vector unknown-vector :tolerance tolerance)))
......@@ -22,7 +22,12 @@
(in-package :geom-base)
(define-object points-display (outline-specialization-mixin)
:input-slots (points)
:documentation
(:description "Product a list of hidden-children which are GDL point objects, which
will be displayed in normal renderings using the <tt>outline-specialization-mixin</tt> mechanism.")
:input-slots ("List of 3D points (i.e. vectors). The points to be displayed." points)
:computed-slots ((points-array (make-array (length (the points))
:initial-contents (the points))))
......
......@@ -333,7 +333,8 @@ instance at what time should the recovery instance expire?"
(first root-part-and-version)))
(defun gwl-make-object (req ent part &key make-object-args share? skin (instance-id (if share? "share" (make-new-instance-id))))
(defun gwl-make-object (req ent part &key make-object-args share? skin (instance-id (when share? "share")))
"Void. Used within the context of the body of a :function argument to Allegroserve's
publish function, makes an instance of the specified part and responds to the request
with a redirect to a URI representing the instance.
......@@ -350,6 +351,10 @@ package-qualified object name\")
(publish :path \"/calendar\"
:function #'(lambda(req ent) (gwl-make-object req ent \"calendar:assembly\")))
</pre>"
(unless instance-id (setq instance-id (make-new-instance-id)))
(let ((query (request-query req)))
(let ((part (or part (rest (assoc "part" query :test #'string-equal)))))
(let* ((current (gethash (make-keyword-sensitive instance-id) *instance-hash-table*))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment