/usr/include/ossim/base/ossimLine.h is in libossim-dev 1.8.16-3+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | //*******************************************************************
// Copyright (C) 2000 ImageLinks Inc.
//
// License: See top level LICENSE.txt file.
//
// Author: Garrett Potts
//*******************************************************************
// $Id: ossimLine.h 9094 2006-06-13 19:12:40Z dburken $
#ifndef ossimLine_HEADER
#define ossimLine_HEADER
#include <ossim/base/ossimDpt.h>
#include <iosfwd>
class OSSIMDLLEXPORT ossimLine
{
public:
friend std::ostream& operator <<(std::ostream& out,
const ossimLine& rhs);
ossimLine(const ossimDpt& p1=ossimDpt(0,0),
const ossimDpt& p2=ossimDpt(0,0))
:theP1(p1),
theP2(p2)
{
}
ossimDpt getVector()const
{
return (theP2-theP1);
}
/*!
* Computes the following equation:
*
* Note: this object will be line a and the passed
* in object will be line b;
* and
* P1 and P2 coorespond to this object and
* P3 and P4 will coorespond to the passed in object.
*
* Now find point formed at the intersection of line a and b:
*
* Pa = P1 + ua ( P2 - P1 )
* Pb = P3 + ub ( P4 - P3 )
*const ossimDpt& ul_corner,
const ossimDpt& lr_corner,
ossimCoordSysOrientMode mode=OSSIM_LEFT_HANDED);
* x1 + ua (x2 - x1) = x3 + ub (x4 - x3)
* and
* y1 + ua (y2 - y1) = y3 + ub (y4 - y3)
*
* Solve:
* ua = ((x4-x3)(y1-y3) - (y4-y3)(x1-x3))/
* ((y4-y3)(x2-x1) - (x4-x3)(y2-y1))
* ub = ((x2-x1)(y1-y3) - (y2-y1)(x1-x3))/
* ((y4-y3)(x2-x1) - (x4-x3)(y2-y1))
* substitute:
*
* x = x1 + ua (x2 - x1)
* y = y1 + ua (y2 - y1)
*
*/
ossimDpt intersectInfinite(const ossimLine& line)const;
ossimDpt intersectSegment(const ossimLine& line)const;
ossimDpt midPoint()const;
double length()const;
ossimDpt normal()const;
/*!
* Will return true if the point is on the line.
*/
bool isPointWithin(const ossimDpt& point, double delta=FLT_EPSILON)const;
bool isPointOnInfiniteLine(const ossimDpt& point, double delta=FLT_EPSILON)const;
ossimDpt theP1;
ossimDpt theP2;
};
#endif
|