X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=otherlibs%2F_graphics%2Finclude%2FOpenEXR%2FImathLine.h;fp=otherlibs%2F_graphics%2Finclude%2FOpenEXR%2FImathLine.h;h=0000000000000000000000000000000000000000;hb=e4c14cdbdf2fe805e79cd96ded236f57e7b89060;hp=601fc6f977e0f4dd3482fa3a03048ad7cb728c1a;hpb=454138ff8a20f6edb9b65a910101403d8b520643;p=opencv diff --git a/otherlibs/_graphics/include/OpenEXR/ImathLine.h b/otherlibs/_graphics/include/OpenEXR/ImathLine.h deleted file mode 100644 index 601fc6f..0000000 --- a/otherlibs/_graphics/include/OpenEXR/ImathLine.h +++ /dev/null @@ -1,184 +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_IMATHLINE_H -#define INCLUDED_IMATHLINE_H - -//------------------------------------- -// -// A 3D line class template -// -//------------------------------------- - -#include "ImathVec.h" -#include "ImathLimits.h" -#include "ImathMatrix.h" - -namespace Imath { - - -template -class Line3 -{ - public: - - Vec3 pos; - Vec3 dir; - - //------------------------------------------------------------- - // Constructors - default is normalized units along direction - //------------------------------------------------------------- - - Line3() {} - Line3(const Vec3& point1, const Vec3& point2); - - //------------------ - // State Query/Set - //------------------ - - void set(const Vec3& point1, - const Vec3& point2); - - //------- - // F(t) - //------- - - Vec3 operator() (T parameter) const; - - //--------- - // Query - //--------- - - T distanceTo(const Vec3& point) const; - T distanceTo(const Line3& line) const; - Vec3 closestPointTo(const Vec3& point) const; - Vec3 closestPointTo(const Line3& line) const; -}; - - -//-------------------- -// Convenient typedefs -//-------------------- - -typedef Line3 Line3f; -typedef Line3 Line3d; - - -//--------------- -// Implementation -//--------------- - -template -inline Line3::Line3(const Vec3 &p0, const Vec3 &p1) -{ - set(p0,p1); -} - -template -inline void Line3::set(const Vec3 &p0, const Vec3 &p1) -{ - pos = p0; dir = p1-p0; - dir.normalize(); -} - -template -inline Vec3 Line3::operator()(T parameter) const -{ - return pos + dir * parameter; -} - -template -inline T Line3::distanceTo(const Vec3& point) const -{ - return (closestPointTo(point)-point).length(); -} - -template -inline Vec3 Line3::closestPointTo(const Vec3& point) const -{ - return ((point - pos) ^ dir) * dir + pos; -} - -template -inline T Line3::distanceTo(const Line3& line) const -{ - T d = (dir % line.dir) ^ (line.pos - pos); - return (d >= 0)? d: -d; -} - -template -inline Vec3 -Line3::closestPointTo(const Line3& line) const -{ - // Assumes the lines are normalized - - Vec3 posLpos = pos - line.pos ; - T c = dir ^ posLpos; - T a = line.dir ^ dir; - T f = line.dir ^ posLpos ; - T num = c - a * f; - - T denom = a*a - 1; - - T absDenom = ((denom >= 0)? denom: -denom); - - if (absDenom < 1) - { - T absNum = ((num >= 0)? num: -num); - - if (absNum >= absDenom * limits::max()) - return pos; - } - - return pos + dir * (num / denom); -} - -template -std::ostream& operator<< (std::ostream &o, const Line3 &line) -{ - return o << "(" << line.pos << ", " << line.dir << ")"; -} - -template -inline Line3 operator * (const Line3 &line, const Matrix44 &M) -{ - return Line3( line.pos * M, (line.pos + line.dir) * M ); -} - - -} // namespace Imath - -#endif