X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=otherlibs%2F_graphics%2Finclude%2FOpenEXR%2FImathSphere.h;fp=otherlibs%2F_graphics%2Finclude%2FOpenEXR%2FImathSphere.h;h=0000000000000000000000000000000000000000;hb=e4c14cdbdf2fe805e79cd96ded236f57e7b89060;hp=3860701d8103eb3649a413f139709f1be09a04ab;hpb=454138ff8a20f6edb9b65a910101403d8b520643;p=opencv diff --git a/otherlibs/_graphics/include/OpenEXR/ImathSphere.h b/otherlibs/_graphics/include/OpenEXR/ImathSphere.h deleted file mode 100644 index 3860701..0000000 --- a/otherlibs/_graphics/include/OpenEXR/ImathSphere.h +++ /dev/null @@ -1,177 +0,0 @@ -/////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas -// Digital Ltd. LLC -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Industrial Light & Magic nor the names of -// its contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////// - - - -#ifndef INCLUDED_IMATHSPHERE_H -#define INCLUDED_IMATHSPHERE_H - -//------------------------------------- -// -// A 3D sphere class template -// -//------------------------------------- - -#include "ImathVec.h" -#include "ImathBox.h" -#include "ImathLine.h" - -namespace Imath { - -template -class Sphere3 -{ - public: - - Vec3 center; - T radius; - - //--------------- - // Constructors - //--------------- - - Sphere3() : center(0,0,0), radius(0) {} - Sphere3(const Vec3 &c, T r) : center(c), radius(r) {} - - //------------------------------------------------------------------- - // Utilities: - // - // s.circumscribe(b) sets center and radius of sphere s - // so that the s tightly encloses box b. - // - // s.intersectT (l, t) If sphere s and line l intersect, then - // intersectT() computes the smallest t, - // t >= 0, so that l(t) is a point on the - // sphere. intersectT() then returns true. - // - // If s and l do not intersect, intersectT() - // returns false. - // - // s.intersect (l, i) If sphere s and line l intersect, then - // intersect() calls s.intersectT(l,t) and - // computes i = l(t). - // - // If s and l do not intersect, intersect() - // returns false. - // - //------------------------------------------------------------------- - - void circumscribe(const Box > &box); - bool intersect(const Line3 &l, Vec3 &intersection) const; - bool intersectT(const Line3 &l, T &t) const; -}; - - -//-------------------- -// Convenient typedefs -//-------------------- - -typedef Sphere3 Sphere3f; -typedef Sphere3 Sphere3d; - - -//--------------- -// Implementation -//--------------- - -template -void Sphere3::circumscribe(const Box > &box) -{ - center = T(0.5) * (box.min + box.max); - radius = (box.max - center).length(); -} - - -template -bool Sphere3::intersectT(const Line3 &line, T &t) const -{ - bool doesIntersect = true; - - Vec3 v = line.pos - center; - T B = 2.0 * (line.dir ^ v); - T C = (v ^ v) - (radius * radius); - - // compute discriminant - // if negative, there is no intersection - - T discr = B*B - 4.0*C; - - if (discr < 0.0) - { - // line and Sphere3 do not intersect - - doesIntersect = false; - } - else - { - // t0: (-B - sqrt(B^2 - 4AC)) / 2A (A = 1) - - T sqroot = Math::sqrt(discr); - t = (-B - sqroot) * 0.5; - - if (t < 0.0) - { - // no intersection, try t1: (-B + sqrt(B^2 - 4AC)) / 2A (A = 1) - - t = (-B + sqroot) * 0.5; - } - - if (t < 0.0) - doesIntersect = false; - } - - return doesIntersect; -} - - -template -bool Sphere3::intersect(const Line3 &line, Vec3 &intersection) const -{ - T t; - - if (intersectT (line, t)) - { - intersection = line(t); - return true; - } - else - { - return false; - } -} - - -} //namespace Imath - -#endif