27 Camera(
const SDim &dims,
Vector3D lookFrom,
Vector3D lookAt =
Vector3D(0),
Vector3D viewUp =
Vector3D(0, 1, 0),
double aperture = 0.1,
double Fov = 40) :
m_vOrigin(lookFrom),
m_dAperture(aperture),
m_vViewUp(viewUp),
m_vLookAt(lookAt),
m_dFov(Fov) {
29 double dHalfHeight = tan(Fov*M_PI / 360);
30 double dHalfWidth = (dims.
m_iX / dims.
m_iY) * dHalfHeight;
31 double dFocusDist = (lookFrom - lookAt).Length();
32 m_vW = UnitVector(lookFrom - lookAt);
33 m_vU = UnitVector(viewUp.Cross(
m_vW));
51 }
while (vP.
Dot(vP) >= 1.0);
static Vector3D RandomInUnitDisk()
Definition: camera.h:47
double m_dAperture
Aperture of camera lens.
Definition: camera.h:64
Camera(const SDim &dims, Vector3D lookFrom, Vector3D lookAt=Vector3D(0), Vector3D viewUp=Vector3D(0, 1, 0), double aperture=0.1, double Fov=40)
Definition: camera.h:27
double Dot(const Vector3D &v2)
Return dot product (double) of two Vector3D.
Definition: vector.h:60
int m_iX
Width in pixels.
Definition: camera.h:11
Vector3D m_vOrigin
Vector3D center of grid.
Definition: camera.h:61
Vector3D m_vW
Vector3D cross product of distance and viewUp.
Definition: camera.h:57
Vector3D m_vU
Vector3D distance from camera origin to target.
Definition: camera.h:55
Vector3D Cross(const Vector3D &v2)
Definition: vector.h:63
Vector3D m_vLookAt
Vector3D center of grid.
Definition: camera.h:62
int m_iY
Height in pixels.
Definition: camera.h:12
double m_dFov
Aperture of camera lens.
Definition: camera.h:65
Vector3D m_vViewUp
Vector3D center of grid.
Definition: camera.h:63
Vector3D m_vV
Vector3D distance adjusted for viewup.
Definition: camera.h:56
Vector3D m_vLowerLeftCorner
Vector3D lower left corner of grid.
Definition: camera.h:58
Vector3D m_vHorizontal
Vector3D width of grid.
Definition: camera.h:59
Vector3D m_vVertical
Vector3D height of grid.
Definition: camera.h:60
virtual Ray GetRay(double s, double t)
Definition: camera.cpp:9