packages feed

roguestar-gl-0.2.1: src/Models/Androsynth.hs

module Models.Androsynth
    (androsynth)
    where

import RSAGL.Affine
import RSAGL.Vector
import RSAGL.Model
import Quality
import Models.Materials
import RSAGL.ModelingExtras

androsynth_head :: Quality -> Modeling ()
androsynth_head _ = model $
    do model $ 
           do smoothbox 0.2 (Point3D (-2) 0 (-2)) (Point3D (-3) 10 (-5))  -- side panels/"ears"
              smoothbox 0.2 (Point3D 2 0 (-2))    (Point3D 3 10 (-5))
              smoothbox 0.2 (Point3D (-5) 7 3)    (Point3D 5 8 (-8))         -- top panel
              smoothbox 0.2 (Point3D (-1) 2 2)    (Point3D 1 6 (-5))      -- main head
	      closedCone (Point3D (-3) 4 1,1) (Point3D (-3) 4 (-4),1)
	      closedCone (Point3D 3 4 1,1)    (Point3D 3 4 (-4),1)
	      model $
	          do quadralateral (Point3D 0 6 (-2))  (Point3D 0 10 (-2))
		                   (Point3D 0 10 (-5)) (Point3D 0 6 (-5))
		     twoSided True
	      openCone (Point3D 0 2 0,0.5) (Point3D 0 (-2) 0,0.5)
              concordance_metal
       let eyeglass = model $
            do sphere (Point3D 0 0 0) 0.75
	       affine $ scale (Vector3D 1 1 0.1)
               concordance_bright_glass
       model $ eyeglass >> affine (translate $ Vector3D 3 4 1)
       model $ eyeglass >> affine (translate $ Vector3D (-3) 4 1)
       model $
           do sphere (Point3D 0 4 2) 0.95
	      concordance_dark_glass

androsynth_body :: Quality -> Modeling ()
androsynth_body _ = model $
    do model $
           do smoothbox 0.2 (Point3D (-2) 7 (-2.5)) (Point3D 2 8 2.5)
	      smoothbox 0.2 (Point3D (-3) 0 (-3.5)) (Point3D 3 1 3.5)
	      openCone (Point3D 0 1 0,1.5) (Point3D 0 7 0,1)
       concordance_metal

androsynth :: Quality -> Modeling ()
androsynth q = model $ 
    do model $
           do androsynth_head q
              affine $ translate (Vector3D 0 30 0)
       model $
           do androsynth_body q
	      affine $ translate (Vector3D 0 20 0)
       affine $ scale' (1/40)