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