Action:
|
Creates a new pattern by applying a periodic keep filter to an existing pattern.
|
|
Filename:
|
kern/kern_scm/pattern_scm.cxx
|
|
APIs:
|
api_periodic_keep_pattern
|
|
Syntax:
|
(pattern:periodic-keep pat keep which-dim [merge=#t])
|
|
Arg Types:
|
pat
|
pattern
|
|
keep
|
boolean
|
|
which-dim
|
integer
|
|
merge
|
boolean
|
|
Returns:
|
pattern
|
|
Description:
|
Applies a periodic keep filter to an existing pattern, merging with any existing filter or, optionally (with
merge=#f), replacing it.
|
|
|
pat specifies a pattern.
|
|
|
keep is the list of successive keep values, so that the size of the list is the periodicity of the filter.
|
|
|
which-dim specifies the dimension within which the filter is applied.
|
|
|
If
merge is specified as
#f, the existing pattern is replaced. The default value is
#t.
|
|
Example:
|
; pattern:periodic-keep
|
|
; make a prism
|
|
(define height 1)
|
|
;; height
|
|
(define maj_rad 1)
|
|
;; maj_rad
|
|
(define min_rad 0.5)
|
|
;; min_rad
|
|
(define num_sides 3)
|
|
;; num_sides
|
|
(define prism (solid:prism height
|
|
|
maj_rad min_rad num_sides))
|
|
;; prism
|
|
; position the prism
|
|
(define origin (position 1 2 3))
|
|
;; origin
|
|
(define transform (entity:transform prism
|
|
|
(transform:axes
|
|
|
origin (gvector 1 0 0) (gvector 0 1 0))))
|
|
;; transform
|
|
; make a pattern
|
|
(define x-vec (gvector 4 0 0))
|
|
;; x-vec
|
|
(define num_x 6)
|
|
;; num_x
|
|
(define y-vec (gvector 0 2 0))
|
|
;; y-vec
|
|
(define num_y 12)
|
|
;; num_y
|
|
(define z-vec (gvector 0 0 3))
|
|
;; z-vec
|
|
(define num_z 4)
|
|
;; num_z
|
|
(define pat (pattern:linear x-vec num_x
|
|
|
y-vec num_y z-vec num_z))
|
|
;; pat
|
|
; modify the pattern
|
|
(define keep1 #t)
|
|
;; keep1
|
|
(define keep2 #t)
|
|
;; keep2
|
|
(define keep3 #f)
|
|
;; keep3
|
|
(define dim 1)
|
|
;; dim
|
|
(set! pat (pattern:periodic-keep pat
|
|
|
(list keep1 keep2 keep3) dim))
|
|
;; #[pattern
|
|
;; trans-vec:
|
"DOMAIN(X*VEC(4,0,0)+X2*VEC(0,2,0)
|
|
;; +X3*VEC(0,0,3),0,5,0,11,0,3)"
|
|
;; x-vec:
|
"null_law"
|
|
;; y-vec:
|
"null_law"
|
|
;; z-vec
|
"null_law"
|
|
;; scale:
|
"null_law"
|
|
;; keep:
|
"null_law"
|
|
;; no list]]
|
|
; apply the pattern to the prism
|
|
(define body (entity:pattern prism pat))
|
|
;; body
|