pattern:periodic-keep
List of: Scheme Extensions
Subjects: Patterns
Contents: Kernel

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
PDF/KERN/14SCI.PDF
HTM/DATA/KERN/KERN/14SCI/0074.HTM