Panda3D
Public Member Functions | Static Public Member Functions | Protected Member Functions

FisheyeLens Class Reference

A fisheye lens. More...

#include "fisheyeLens.h"

Inheritance diagram for FisheyeLens:
Lens TypedWritableReferenceCount TypedWritable ReferenceCount TypedObject MemoryBase MemoryBase

List of all members.

Public Member Functions

 FisheyeLens (const FisheyeLens &copy)
virtual TypeHandle force_init_type ()
virtual TypeHandle get_type () const
void operator= (const FisheyeLens &copy)
virtual PT (Lens) make_copy() const

Static Public Member Functions

static TypeHandle get_class_type ()
static void init_type ()

Protected Member Functions

virtual bool extrude_impl (const LPoint3f &point2d, LPoint3f &near_point, LPoint3f &far_point) const
 Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is the center of the lens and (-1,-1) is the lower-left corner, compute the corresponding vector in space that maps to this point, if such a vector can be determined.
virtual bool extrude_vec_impl (const LPoint3f &point2d, LVector3f &vec) const
 Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is the center of the lens and (-1,-1) is the lower-left corner, compute the vector that corresponds to the view direction.
virtual float film_to_fov (float film_size, float focal_length, bool horiz) const
 Given a width (or height) on the film and a focal length, compute the field of view in degrees.
virtual float fov_to_film (float fov, float focal_length, bool horiz) const
 Given a field of view in degrees and a focal length, compute the correspdonding width (or height) on the film.
virtual float fov_to_focal_length (float fov, float film_size, bool horiz) const
 Given a field of view in degrees and a width (or height) on the film, compute the focal length of the lens.
virtual bool project_impl (const LPoint3f &point3d, LPoint3f &point2d) const
 Given a 3-d point in space, determine the 2-d point this maps to, in the range (-1,1) in both dimensions, where (0,0) is the center of the lens and (-1,-1) is the lower-left corner.

Detailed Description

A fisheye lens.

This nonlinear lens introduces a spherical distortion to the image, which is minimal at small angles from the lens, and increases at larger angles from the lens. The field of view may extend to 360 degrees.

Definition at line 30 of file fisheyeLens.h.


Member Function Documentation

bool FisheyeLens::extrude_impl ( const LPoint3f point2d,
LPoint3f near_point,
LPoint3f far_point 
) const [protected, virtual]

Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is the center of the lens and (-1,-1) is the lower-left corner, compute the corresponding vector in space that maps to this point, if such a vector can be determined.

The vector is returned by indicating the points on the near plane and far plane that both map to the indicated 2-d point.

The z coordinate of the 2-d point is ignored.

Returns true if the vector is defined, or false otherwise.

Reimplemented from Lens.

Definition at line 67 of file fisheyeLens.cxx.

References Lens::get_far(), Lens::get_film_mat_inv(), Lens::get_focal_length(), Lens::get_lens_mat(), Lens::get_near(), and LVecBase2f::length().

Referenced by extrude_vec_impl().

bool FisheyeLens::extrude_vec_impl ( const LPoint3f point2d,
LVector3f vec 
) const [protected, virtual]

Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is the center of the lens and (-1,-1) is the lower-left corner, compute the vector that corresponds to the view direction.

This will be parallel to the normal on the surface (the far plane) corresponding to the lens shape at this point.

See the comment block on Lens::extrude_vec_impl() for a more in-depth comment on the meaning of this vector.

The z coordinate of the 2-d point is ignored.

Returns true if the vector is defined, or false otherwise.

Reimplemented from Lens.

Definition at line 130 of file fisheyeLens.cxx.

References extrude_impl().

float FisheyeLens::film_to_fov ( float  film_size,
float  focal_length,
bool  horiz 
) const [protected, virtual]

Given a width (or height) on the film and a focal length, compute the field of view in degrees.

If horiz is true, this is in the horizontal direction; otherwise, it is in the vertical direction (some lenses behave differently in each direction).

Reimplemented from Lens.

Definition at line 253 of file fisheyeLens.cxx.

float FisheyeLens::fov_to_film ( float  fov,
float  focal_length,
bool  horiz 
) const [protected, virtual]

Given a field of view in degrees and a focal length, compute the correspdonding width (or height) on the film.

If horiz is true, this is in the horizontal direction; otherwise, it is in the vertical direction (some lenses behave differently in each direction).

Reimplemented from Lens.

Definition at line 225 of file fisheyeLens.cxx.

float FisheyeLens::fov_to_focal_length ( float  fov,
float  film_size,
bool  horiz 
) const [protected, virtual]

Given a field of view in degrees and a width (or height) on the film, compute the focal length of the lens.

If horiz is true, this is in the horizontal direction; otherwise, it is in the vertical direction (some lenses behave differently in each direction).

Reimplemented from Lens.

Definition at line 239 of file fisheyeLens.cxx.

bool FisheyeLens::project_impl ( const LPoint3f point3d,
LPoint3f point2d 
) const [protected, virtual]

Given a 3-d point in space, determine the 2-d point this maps to, in the range (-1,1) in both dimensions, where (0,0) is the center of the lens and (-1,-1) is the lower-left corner.

Some lens types also set the z coordinate of the 2-d point to a value in the range (-1, 1), where 1 represents a point on the near plane, and -1 represents a point on the far plane.

Returns true if the 3-d point is in front of the lens and within the viewing frustum (in which case point2d is filled in), or false otherwise.

Reimplemented from Lens.

Definition at line 159 of file fisheyeLens.cxx.

References Lens::get_far(), Lens::get_film_mat(), Lens::get_focal_length(), Lens::get_lens_mat_inv(), Lens::get_near(), LVecBase3f::length(), and LVecBase2f::normalize().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations