Action:
|
Determines whether or not a pattern lies on a given cylinder.
|
|
Filename:
|
kern/kern_scm/pattern_scm.cxx
|
|
Syntax:
|
(pattern:cylindrical? pat {face | {center axis}})
|
|
Arg Types:
|
pat
|
pattern
|
|
face
|
face
|
|
center
|
position
|
|
axis
|
gvector
|
|
Returns:
|
boolean
|
|
Description:
|
This extension returns #t if a pattern lies on the cylindrical surface. Otherwise, it returns #f.
|
|
|
pat specifies a pattern.
|
|
|
face specifies a cylindrical face.
|
|
|
center and
axis together specify a cylindrical surface.
|
|
Example:
|
; pattern:cylindrical?
|
|
; Choose an axis and a center defining a cylinder.
|
|
(define center (position 5 6 3))
|
|
;; center
|
|
(define normal (gvector 0 0 1))
|
|
;; normal
|
|
; Make a pattern.
|
|
(define pat (pattern:cylindrical
|
|
|
center normal 4 10 3))
|
|
;; pat
|
|
; Does the result have cylindrical symmetry about
|
|
; the center and normal?
|
|
(pattern:cylindrical? pat center normal)
|
|
;; #t
|
|
; Try another pattern.
|
|
(set! pat (pattern:elliptical center normal 5))
|
|
;; #[pattern
|
|
;; trans-vec:
|
"DOMAIN(VEC(5,6,3)+VEC
|
|
;; (0,0,1)*3*X2,0,3,0,9)"
|
|
;; x-vec:
|
|
"VEC(-1,0,0)*COS
|
|
;; (1.570796326794897*X+0)
|
|
;; +VEC(0,1,0)*SIN
|
|
;; (1.570796326794897*X+0)"
|
|
;; y-vec:
|
"VEC(0,0,1)"
|
|
;; z-vec:
|
"null_law"
|
|
;; sale:
|
"null_law"
|
|
;; keep:
|
"null_law"
|
|
;; no list]
|
|
(pattern:cylindrical? pat center normal)
|
|
;; #t
|
|
; Try yet another pattern.
|
|
(set! pat (pattern:elliptical center
|
|
|
(gvector 1 0 0) 5))
|
|
;; #[pattern
|
|
;; trans-vec:
|
"VEC(5,6,3)"
|
|
;; x-vec:
|
|
"DOMAIN(VEC(-1,0,0)
|
|
;; *COS(1.256637061435917*X)
|
|
;; +VEC(0,-1,0)*SIN
|
|
;; (1.256637061435917*X),0,4)"
|
|
;; y-vec: "VEC(0,0,1)"
|
|
;; z-vec: "null_law"
|
|
;; scale: "null_law"
|
|
;; keep: "null_law"
|
|
;; no list]
|
|
(pattern:cylindrical? pat center normal)
|
|
;; #f
|