Parameterized Arms Example Code
(define (arm-base)
(separator
(scale (vec3 .75 .075 .75))
(box)
)
)
(define (base-to-bottom-segment-translation)
(translate (vec3 0 0 0))
)
(define (bottom-segment)
(separator
(scale (vec3 .1 1 .1))
(rotate -90 (vec3 1 0 0))
(cylinder)
)
)
(define (bottom-segment-to-elbow-translation)
(translate (vec3 0 1 0))
)
(define (elbow-rotation bend turn)
(rotate turn (vec3 0 1 0))
(rotate bend (vec3 0 0 1))
)
(define (elbow)
(separator
(scale (vec3 .1 .1 .1))
(sphere)
))
(define (elbow-to-upper-segment-translation)
(translate (vec3 0 0 0))
)
(define (upper-segment)
(separator
(scale (vec3 .075 1 .075))
(rotate -90 (vec3 1 0 0))
(cylinder)
)
)
(define (upper-segment-to-wrist-translation)
(translate (vec3 0 1 0))
)
(define (wrist-rotation bend)
(rotate bend (vec3 0 0 1))
)
(define (wrist)
(separator
(scale (vec3 .075 .075 .075))
(sphere)
))
(define (wrist-to-hand-translation)
(translate (vec3 0 0 0))
)
(define (hand)
(separator
(scale (vec3 .075 1 .075))
(rotate -90 (vec3 1 0 0))
(cone)
)
)
(define (robot-arm bend turn)
(separator
(surface "matte")
(arm-base)
(base-to-bottom-segment-translation)
(bottom-segment)
(bottom-segment-to-elbow-translation)
(elbow-rotation bend turn)
(elbow)
(elbow-to-upper-segment-translation)
(upper-segment)
(upper-segment-to-wrist-translation)
(wrist-rotation bend)
(wrist)
(wrist-to-hand-translation)
(hand)
))
(define (arms)
(define i 0)
(while (< i 10)
(begin
(define j 0)
(while (< j 10)
(separator
(translate (vec3 (- (* i 2) 10) 0 (- (* j 2) 10)))
(robot-arm (+ (* (rand) 180) -90) (* (rand) 360))
(set! j (+ j 1))
)
)
(set! i (+ i 1))
)))
Return to Iteration
mrl