#!/usr/bin/env stack -- stack runghc --package reanimate {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} module Main (main) where import qualified Data.Text as T import NeatInterpolation import Reanimate main :: IO () main = reanimate $ mkAnimation 5 $ \t -> let s = fromToS 0 360 t in mkGroup [ mkBackground "black" , povray [] (script $ T.pack $ show s) ] where script s = [text| //EXAMPLE OF SPHERE //Files with predefined colors and textures #include "colors.inc" #include "glass.inc" #include "golds.inc" #include "metals.inc" #include "stones.inc" #include "woods.inc" #include "shapes3.inc" //Place the camera camera { orthographic angle 50 location <0,0,-10> look_at <0,0,0> right x*image_width/image_height } //Ambient light to "brighten up" darker pictures global_settings { ambient_light White*3 } //Set a background color //background { color White } //background { color rgbt <0.1, 0, 0, 0> } // red background { color rgbt <0, 0, 0, 1> } // transparent //Sphere with specified center point and radius sphere { <0,0,0>, 2 texture { pigment{ color rgbt <0,0,1,0.1> } } } object { Ring_Sphere(2.00, 2.02, 0.015, 0.015, 12, 12) texture { pigment{ color<1,1,1> } } rotate <0,${s},0> rotate <-30,0,0> } |]