Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

icamera.cpp

Go to the documentation of this file.
00001 /*
00002     toxic - A Global Illumination Renderer
00003     Copyright (C) 2003-2004 Francois Beaune
00004     Contact: http://toxicengine.sourceforge.net/
00005 
00006     This file is part of toxic.
00007 
00008     toxic is free software; you can redistribute it and/or modify
00009     it under the terms of the GNU General Public License as published by
00010     the Free Software Foundation; either version 2 of the License, or
00011     (at your option) any later version.
00012 
00013     toxic is distributed in the hope that it will be useful,
00014     but WITHOUT ANY WARRANTY; without even the implied warranty of
00015     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016     GNU General Public License for more details.
00017 
00018     You should have received a copy of the GNU General Public License
00019     along with toxic; if not, write to the Free Software
00020     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021 */
00022 
00023 #include "icamera.h"    // include first
00024 
00025 #include <cassert>
00026 #include <cmath>
00027 
00028 using namespace sheep;
00029 using namespace toxic;
00030 
00031 ICamera::ICamera(const Matrix4 &m, Real hfov, Real aspect_ratio) :
00032     Basis(m),
00033     m_location(TransformToWorld(Point3(0.0))),
00034     m_ex(TransformToWorld(Vector3(1.0, 0.0, 0.0))),
00035     m_ey(TransformToWorld(Vector3(0.0, 1.0, 0.0))),
00036     m_ez(TransformToWorld(Vector3(0.0, 0.0, 1.0))),
00037     m_hfov(hfov),
00038     m_aspect_ratio(aspect_ratio)
00039 {
00040     assert(m_hfov > -PI && m_hfov < PI);
00041 
00042     m_focal_length = m_aspect_ratio / tan(0.5 * m_hfov);
00043 
00044     m_u = m_ex * m_aspect_ratio;
00045     m_w = m_ez * (-m_focal_length);
00046 }

Generated on Tue May 11 01:31:50 2004 for toxic by doxygen 1.3.6