packages feed

roguestar-gl-0.4.0.0: src/Models/Stargate.hs

module Models.Stargate
    (portal)
    where

import RSAGL.Math
import RSAGL.Modeling
import Models.Materials
import Quality

portal :: Quality -> Modeling ()
portal q =
    do model $
           do model $
                  do box (Point3D (-0.6) 0 (-0.05)) (Point3D (-0.5) 1.618 0.05)
                     box (Point3D 0.6 0 (-0.05)) (Point3D 0.5 1.618 0.05)
                     box (Point3D (-1.1) 1.568 (-0.05))
                         (Point3D (1.1) 1.668 0.05)
                     minorFixedQuality q
              let cone =
                      do openCone (Point3D 0 (1.618/6) 0,0.4)
                                  (Point3D 0 (1.618/3) 0,0)
                         openCone (Point3D 0 (1.618/6) 0,0.4) (Point3D 0 0 0,0)
                  cone_stack = scale (Vector3D 1 (7/8) 1) $
                      do cone
                         translate (Vector3D 0 (1.618/3) 0) cone
                         translate (Vector3D 0 (2*1.618/3) 0) cone
                         translate (Vector3D 0 1.618 0) cone
              translate (Vector3D 1.1 0 0) cone_stack
              translate (Vector3D (-1.1) 0 0) cone_stack
              material treaty_metal
       model $
           do quadralateral (Point3D (-0.55) 0 0)
                            (Point3D (-0.55) 1.618 0)
                            (Point3D 0.55 1.618 0)
                            (Point3D 0.55 0 0)
              twoSided True
              material treaty_energy_field