;;; File: ;;; art.scm ;;; Author: ;;; Samuel A. Rebelsky ;;; Purpose: ;;; A collection of procedures for the Algorithmic Art lab ;;; Version: ;;; 1.1 of 4 April 2003 ;;; History: ;;; At end. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Preparation: Load the utilities (load "/home/rebelsky/Web/Glimmer/ScriptFu/Code/gsfu.scm") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Problem One: Higher-Order Drawing ; (gsfu-create-image width height func) ; Key pre-break idea: ; Procedures can take other procedures as parameters ; They can then apply those procedures to a ariety of values. ; gsfu-create-image is one of these kinds of procedures (define mmm (lambda (x y) (list (mod x 256) (mod (* x y) 256) (abs (* (sin x) 255))))) (define zzz (lambda (x y) (list (+ 192 (mod x 64)) (mod (* x x) 256) (mod (* y y) 256)))) (define exercise-one (lambda (x y) (list (mod (+ x y) 256) (mod (* y y) 256) (mod (* 1000 (sin x)) 256)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Problem Four: Mapping Images (define four-a (lambda (color) (let* ((red (car color)) (green (cadr color)) (blue (caddr color))) (list green blue red)))) (define four-b (lambda (color) (let* ((red (car color)) (green (cadr color)) (blue (caddr color)) (tmp (/ (+ red green blue) 3))) (list tmp tmp tmp)))) (define four-c (lambda (color) (let* ((fun (lambda (val) (* 32 (trunc (/ val 32))))) (red (car color)) (green (cadr color)) (blue (caddr color))) (list (fun red) (fun green) (fun blue))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Problem Five: Mapping Images, Revisited (define five-a (lambda (source-image source-layer dest-image dest-layer width height x y) (gsfu-set-color dest-layer x y (gsfu-get-color source-layer x (mod (+ x y) height))))) (define five-b (lambda (source-image source-layer dest-image dest-layer width height x y) (gsfu-set-color dest-layer x y (gsfu-get-color source-layer (trunc (* width (sqrt (/ x width)))) y)))) (define five-c (lambda (source-image source-layer dest-image dest-layer width height x y) (gsfu-set-color dest-layer x y (gsfu-get-color source-layer (trunc (* (- width 1) (abs (cos (* 10 (/ x width)))))) y)))) ; (define five-alt ; (lambda (source-image source-layer dest-image dest-layer ; width height x y) ; (let ((pixel-info ; (gimp-drawable-get-pixel source-layer x (mod (+ x y) height)))) ; (gimp-drawable-set-pixel dest-layer x y ; (car pixel-info) (cadr pixel-info))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; History ;;; Saturday, 1 November 2002 [Version 1.0] ;;; Created. ;;; Friday, 4 April 2003 [Version 1.1] ;;; Added stuff for new exercise five. ;;; Added another procedure for exercise 1.