Action:
|
Determines whether or not a pattern lies on a given circle.
|
|
Filename:
|
kern/kern_scm/pattern_scm.cxx
|
|
Syntax:
|
(pattern:circular? pat {face | {center axis}})
|
|
Arg Types:
|
pat
|
pattern
|
|
face
|
face
|
|
center
|
position
|
|
axis
|
gvector
|
|
Returns:
|
boolean
|
|
Description:
|
This extension is limited in that the pattern must be defined.
|
|
|
This extension returns #t if a pattern lies on the circular surface associated with the
face or, alternately, with the combination of
center and
axis. Otherwise, it returns #f.
|
|
|
pat specifies a pattern.
|
|
|
face specifies a circular face.
|
|
|
center and
axis together specify a circular surface.
|
|
Example:
|
; pattern:circular?
|
|
; ; choose an axis and a center defining a circle
|
|
(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 circular symmetry about center ; and normal?
|
|
(pattern:circular? pat center normal)
|
|
;; #f
|
|
; what about this pattern?
|
|
(set! pat (pattern:elliptical center normal 5))
|
|
;; 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"
|
|
;; scale:
|
|
"null_law"
|
|
;; keep:
|
|
"null_law"
|
|
;; no list]
|
|
(pattern:circular? pat center normal)
|
|
;; #t
|