You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
haskell-raytracer/src/Camera.hs

14 lines
552 B

module Camera (Camera (..), makeCamera) where
import Linear.V3
import Linear.Vector
data Camera = Camera {origin :: V3 Double, lowerLeft :: V3 Double, horizontal :: V3 Double, vertical :: V3 Double}
makeCamera :: V3 Double -> Double -> Double -> Double -> Camera
makeCamera o viewWidth viewHeight focalLength = do
let horizontal = V3 viewWidth 0.0 0.0
let vertical = V3 0.0 viewHeight 0.0
let focalVec = V3 0.0 0.0 focalLength
let lowerLeft = o ^-^ (horizontal ^/ 2) ^-^ (vertical ^/ 2) ^-^ focalVec
Camera o lowerLeft horizontal vertical