Comandos do fluxus de alto nível escritos em fluxus
Returns void
Remove o pai da primitiva atual, e ajusta as transformações para que a primitiva não mova. Use (parent 1) para evitar este ajuste.
Example
; builds and animates a random heirarchical structure, ; click on the objects to detach them from their parents (define (build-heir depth) (with-state (let ((p (with-state (translate (vector 2 0 0)) (scale 0.9) (build-cube)))) (when (> depth 0) (parent p) (for ((i (in-range 0 5))) (when (zero? (random 3)) (rotate (vector 0 0 (* 45 (crndf)))) (build-heir (- depth 1)))))))) (define (animate-heir children depth) (for-each (lambda (child) (with-primitive child (rotate (vector 0 0 (sin (+ depth (time))))) (animate-heir (get-children) (+ depth 1)))) children)) (define (animate) (animate-heir (get-children) 0) (when (mouse-button 1) (let ((s (select (mouse-x) (mouse-y) 2))) (when (not (zero? s)) (with-primitive s (detach-parent)))))) (clear) (build-heir 5) (every-frame (animate))
Returns resultado da última expressão
Encapsula mudanças locais, e remove a necessidade de push e pop.
Example
; state hierachy, by nesting with-state: (with-state (hint-vertcols) (colour (vector 0 0 1)) (with-state (translate (vector 1 0 0)) (build-sphere 10 10)) (build-torus 1 2 30 30)) ; making primitives: (define my-torus (with-state (hint-vertcols) (colour (vector 0 0 1)) (build-torus 1 2 30 30)))
Returns resultado da última expressão
Encapsula mudanças de estado das primitivas, e remove a necessidade de grab e ungrab.
Example
(define my-torus (with-state (colour (vector 0 0 1)) (build-torus 1 2 30 30))) ; change the torus colour: (with-primitive my-torus (colour (vector 0 1 0)))
Returns resultado da última expressão
Permite que você renderize em uma primitiva pixel.
Example
Returns resultado da última expressão
Permite que você trabalhe no plugin FFGL específicado.
Example
(clear) (define plugin (ffgl-load "FFGLTile.dylib" 256 256)) (with-ffgl plugin (for ([i (ffgl-get-info)]) (printf "~a~n" i)))
Returns void
Uma estrutura de controle de alto nível para simplificar a passagem sobre uma array de pdata para deformação de primitivas. Deve ser mais fácil e menos sujeito a erros do que fazer o loop manualmente. Escreve na primeira array pdata.
Example
(clear) (define my-torus (build-torus 1 2 30 30)) (with-primitive my-torus (pdata-map! (lambda (position) (vadd position (vector (flxrnd) 0 0))) ; jitter the vertex in x "p")) ; read/write the position pdata array (with-primitive my-torus (pdata-map! (lambda (position normal) (vadd position normal)) ; add the normal to the position (expand the object) "p" "n")) ; read/write the position pdata array, read the normals array
Returns void
Uma estrutura de controle de alto nível para simplificar a passagem sobre uma array de pdata para deformação de primitivas. Mesmo que pdata-map! exceto que pdata-index-map! fornece o índice do elemento pdata atual como o primeiro argumento ao "procedimento".
Example
(clear) (define my-torus (build-torus 1 2 30 30)) (with-primitive my-torus (pdata-index-map! (lambda (index position) (vadd position (vector (gh index) 0 0))) ; jitter the vertex in x "p")) ; read/write the position pdata array
Returns resultado do procedimento de dobragem sobre a array pdata
Uma estrutura de controle de alto nível para fazer cálculos em arrays pdata. Roda o procedimento sobre cada elemento pdata acumulando o resultado. Deve ser mais fácil e menos sujeito a erros que percorrer manualmente.
Example
(define my-torus (build-torus 1 2 30 30)) ; find the centre of the primitive by averaging ; the points position's together (let ((centre (with-primitive my-torus (vdiv (pdata-fold vadd (vector 0 0 0) "p") (pdata-size))))) (display centre)(newline))
Returns resultado do procedimento de dobragem sobre a array pdata
Igual a pdata-fold exceto que passa o índice do elemento pdata atual como o primeiro parâmetro de "procedimento".
Example
(define my-torus (build-torus 1 2 30 30)) ; can't think of a good example for this yet... (let ((something (with-primitive my-torus (vdiv (pdata-index-fold (lambda (index position ret) (vadd ret (vmul position index))) (vector 0 0 0) "p") (pdata-size))))) (display something)(newline))
Returns vetor resultante
Multiplica um vetor por um número.
Example
(vmul (vector 1 2 3) 2) (vmul (vector 1 2 3 4 5) 3)
Returns vetor resultante
Divide um vetor por um número
Example
(vdiv (vector 1 2 3) 2) (vdiv (vector 1 2 3 4 5) 3)
Returns void
Remove o pai da primitiva atual, e ajusta as transformações para que a primitiva não mova. Use (parent 1) para evitar este ajuste.
Example
; builds and animates a random heirarchical structure, ; click on the objects to detach them from their parents (define (build-heir depth) (with-state (let ((p (with-state (translate (vector 2 0 0)) (scale 0.9) (build-cube)))) (when (> depth 0) (parent p) (for ((i (in-range 0 5))) (when (zero? (random 3)) (rotate (vector 0 0 (* 45 (crndf)))) (build-heir (- depth 1)))))))) (define (animate-heir children depth) (for-each (lambda (child) (with-primitive child (rotate (vector 0 0 (sin (+ depth (time))))) (animate-heir (get-children) (+ depth 1)))) children)) (define (animate) (animate-heir (get-children) 0) (when (mouse-button 1) (let ((s (select (mouse-x) (mouse-y) 2))) (when (not (zero? s)) (with-primitive s (detach-parent)))))) (clear) (build-heir 5) (every-frame (animate))
Returns resultado da última expressão
Encapsula mudanças locais, e remove a necessidade de push e pop.
Example
; state hierachy, by nesting with-state: (with-state (hint-vertcols) (colour (vector 0 0 1)) (with-state (translate (vector 1 0 0)) (build-sphere 10 10)) (build-torus 1 2 30 30)) ; making primitives: (define my-torus (with-state (hint-vertcols) (colour (vector 0 0 1)) (build-torus 1 2 30 30)))
Returns resultado da última expressão
Encapsula mudanças de estado das primitivas, e remove a necessidade de grab e ungrab.
Example
(define my-torus (with-state (colour (vector 0 0 1)) (build-torus 1 2 30 30))) ; change the torus colour: (with-primitive my-torus (colour (vector 0 1 0)))
Returns resultado da última expressão
Permite que você renderize em uma primitiva pixel.
Example
Returns resultado da última expressão
Permite que você trabalhe no plugin FFGL específicado.
Example
(clear) (define plugin (ffgl-load "FFGLTile.dylib" 256 256)) (with-ffgl plugin (for ([i (ffgl-get-info)]) (printf "~a~n" i)))
Returns void
Uma estrutura de controle de alto nível para simplificar a passagem sobre uma array de pdata para deformação de primitivas. Deve ser mais fácil e menos sujeito a erros do que fazer o loop manualmente. Escreve na primeira array pdata.
Example
(clear) (define my-torus (build-torus 1 2 30 30)) (with-primitive my-torus (pdata-map! (lambda (position) (vadd position (vector (flxrnd) 0 0))) ; jitter the vertex in x "p")) ; read/write the position pdata array (with-primitive my-torus (pdata-map! (lambda (position normal) (vadd position normal)) ; add the normal to the position (expand the object) "p" "n")) ; read/write the position pdata array, read the normals array
Returns void
Uma estrutura de controle de alto nível para simplificar a passagem sobre uma array de pdata para deformação de primitivas. Mesmo que pdata-map! exceto que pdata-index-map! fornece o índice do elemento pdata atual como o primeiro argumento ao "procedimento".
Example
(clear) (define my-torus (build-torus 1 2 30 30)) (with-primitive my-torus (pdata-index-map! (lambda (index position) (vadd position (vector (gh index) 0 0))) ; jitter the vertex in x "p")) ; read/write the position pdata array
Returns resultado do procedimento de dobragem sobre a array pdata
Uma estrutura de controle de alto nível para fazer cálculos em arrays pdata. Roda o procedimento sobre cada elemento pdata acumulando o resultado. Deve ser mais fácil e menos sujeito a erros que percorrer manualmente.
Example
(define my-torus (build-torus 1 2 30 30)) ; find the centre of the primitive by averaging ; the points position's together (let ((centre (with-primitive my-torus (vdiv (pdata-fold vadd (vector 0 0 0) "p") (pdata-size))))) (display centre)(newline))
Returns resultado do procedimento de dobragem sobre a array pdata
Igual a pdata-fold exceto que passa o índice do elemento pdata atual como o primeiro parâmetro de "procedimento".
Example
(define my-torus (build-torus 1 2 30 30)) ; can't think of a good example for this yet... (let ((something (with-primitive my-torus (vdiv (pdata-index-fold (lambda (index position ret) (vadd ret (vmul position index))) (vector 0 0 0) "p") (pdata-size))))) (display something)(newline))
Returns vetor resultante
Multiplica um vetor por um número.
Example
(vmul (vector 1 2 3) 2) (vmul (vector 1 2 3 4 5) 3)
Returns vetor resultante
Divide um vetor por um número
Example
(vdiv (vector 1 2 3) 2) (vdiv (vector 1 2 3 4 5) 3)