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.
14 lines
552 B
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
|
|
|