OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Protected Attributes | List of all members
ossimQuadrilateralMap Class Reference

#include <ossimQuadrilateralMap.h>

Public Member Functions

 ossimQuadrilateralMap (const ossimDpt &sourceP1, const ossimDpt &sourceP2, const ossimDpt &sourceP3, const ossimDpt &sourceP4, const ossimDpt &destP1, const ossimDpt &destP2, const ossimDpt &destP3, const ossimDpt &destP4)
 
 ossimQuadrilateralMap ()
 
 ossimQuadrilateralMap (const ossimQuadrilateralMap &rhs)
 
void map (const ossimDpt &source, ossimDpt &dest) const
 
void solveCoefficients (const ossimDpt &sourceP1, const ossimDpt &sourceP2, const ossimDpt &sourceP3, const ossimDpt &sourceP4, const ossimDpt &destP1, const ossimDpt &destP2, const ossimDpt &destP3, const ossimDpt &destP4)
 

Protected Attributes

double a
 
double b
 
double c
 
double d
 
double e
 
double f
 
double g
 
double h
 

Detailed Description

Definition at line 5 of file ossimQuadrilateralMap.h.

Constructor & Destructor Documentation

◆ ossimQuadrilateralMap() [1/3]

ossimQuadrilateralMap::ossimQuadrilateralMap ( const ossimDpt sourceP1,
const ossimDpt sourceP2,
const ossimDpt sourceP3,
const ossimDpt sourceP4,
const ossimDpt destP1,
const ossimDpt destP2,
const ossimDpt destP3,
const ossimDpt destP4 
)

Definition at line 20 of file ossimQuadrilateralMap.cpp.

References solveCoefficients().

28 {
29  solveCoefficients(sourceP1, sourceP2, sourceP3, sourceP4,
30  destP1, destP2, destP3, destP4);
31 }
void solveCoefficients(const ossimDpt &sourceP1, const ossimDpt &sourceP2, const ossimDpt &sourceP3, const ossimDpt &sourceP4, const ossimDpt &destP1, const ossimDpt &destP2, const ossimDpt &destP3, const ossimDpt &destP4)

◆ ossimQuadrilateralMap() [2/3]

ossimQuadrilateralMap::ossimQuadrilateralMap ( )

Definition at line 9 of file ossimQuadrilateralMap.cpp.

10  : a(0.0),
11  b(0.0),
12  c(0.0),
13  d(0.0),
14  e(0.0),
15  f(0.0),
16  g(0.0),
17  h(0.0)
18 {
19 }

◆ ossimQuadrilateralMap() [3/3]

ossimQuadrilateralMap::ossimQuadrilateralMap ( const ossimQuadrilateralMap rhs)

Definition at line 33 of file ossimQuadrilateralMap.cpp.

34  :a(rhs.a),
35  b(rhs.b),
36  c(rhs.c),
37  d(rhs.d),
38  e(rhs.e),
39  f(rhs.f),
40  g(rhs.g)
41 {
42 }

Member Function Documentation

◆ map()

void ossimQuadrilateralMap::map ( const ossimDpt source,
ossimDpt dest 
) const

Uses a standard form of quadrilateral to quadrilateral mapping:

X = (a*U + b*V + c) / (g*U + h*V + 1) Y = (d*U + e*V+f)/(g*U + h*V + 1)

where: X and Y are the mapped destination point. U and V are the source point to warp a, b, c, d, e, f, g, h are coefficients sovled by the points passed to the constructor.

Definition at line 79 of file ossimQuadrilateralMap.cpp.

References a, b, c, d, e, f, g, h, ossimDpt::x, and ossimDpt::y.

80 {
81  double numerator;
82  double denominator;
83 
84  //solve x first
85  numerator = a*source.x + b*source.y + c;
86  denominator = g*source.x + h*source.y + 1;
87 
88  dest.x = numerator/denominator;
89 
90  //solve y
91  numerator = d*source.x + e*source.y + f;
92  denominator = g*source.x + h*source.y + 1;
93 
94  dest.y = numerator/denominator;
95 }
double y
Definition: ossimDpt.h:165
double x
Definition: ossimDpt.h:164

◆ solveCoefficients()

void ossimQuadrilateralMap::solveCoefficients ( const ossimDpt sourceP1,
const ossimDpt sourceP2,
const ossimDpt sourceP3,
const ossimDpt sourceP4,
const ossimDpt destP1,
const ossimDpt destP2,
const ossimDpt destP3,
const ossimDpt destP4 
)

Definition at line 44 of file ossimQuadrilateralMap.cpp.

References a, A, b, c, d, e, f, g, h, ossimDpt::x, ossimDpt::y, and y.

Referenced by ossimQuadrilateralMap().

52 {
53  NEWMAT::Matrix m(8,8);
54 
55  m << sourceP1.x << sourceP1.y << 1.0 << 0.0 << 0.0 << 0.0 << -sourceP1.x*destP1.x << -sourceP1.y*destP1.x
56  << sourceP2.x << sourceP2.y << 1.0 << 0.0 << 0.0 << 0.0 << -sourceP2.x*destP2.x << -sourceP2.y*destP2.x
57  << sourceP3.x << sourceP3.y << 1.0 << 0.0 << 0.0 << 0.0 << -sourceP3.x*destP3.x << -sourceP3.y*destP3.x
58  << sourceP4.x << sourceP4.y << 1.0 << 0.0 << 0.0 << 0.0 << -sourceP4.x*destP4.x << -sourceP4.y*destP4.x
59  << 0.0 << 0.0 << 0.0 << sourceP1.x << sourceP1.y << 1.0 << -sourceP1.x*destP1.y << -sourceP1.y*destP1.y
60  << 0.0 << 0.0 << 0.0 << sourceP2.x << sourceP2.y << 1.0 << -sourceP2.x*destP2.y << -sourceP2.y*destP2.y
61  << 0.0 << 0.0 << 0.0 << sourceP3.x << sourceP3.y << 1.0 << -sourceP3.x*destP3.y << -sourceP3.y*destP3.y
62  << 0.0 << 0.0 << 0.0 << sourceP4.x << sourceP4.y << 1.0 << -sourceP4.x*destP4.y << -sourceP4.y*destP4.y;
63 
64  NEWMAT::Matrix A = m.i();
65  NEWMAT::ColumnVector b(8);
66  b << destP1.x << destP2.x << destP3.x << destP4.x << destP1.y << destP2.y << destP3.y << destP4.y;
67  NEWMAT::ColumnVector y = A * b;
68 
69  a = y[0];
70  b = y[1];
71  c = y[2];
72  d = y[3];
73  e = y[4];
74  f = y[5];
75  g = y[6];
76  h = y[7];
77 }
ossim_uint32 y
double y
Definition: ossimDpt.h:165
#define A(r, c)
double x
Definition: ossimDpt.h:164

Member Data Documentation

◆ a

double ossimQuadrilateralMap::a
protected

Definition at line 44 of file ossimQuadrilateralMap.h.

Referenced by map(), and solveCoefficients().

◆ b

double ossimQuadrilateralMap::b
protected

Definition at line 45 of file ossimQuadrilateralMap.h.

Referenced by map(), and solveCoefficients().

◆ c

double ossimQuadrilateralMap::c
protected

Definition at line 46 of file ossimQuadrilateralMap.h.

Referenced by map(), and solveCoefficients().

◆ d

double ossimQuadrilateralMap::d
protected

Definition at line 47 of file ossimQuadrilateralMap.h.

Referenced by map(), and solveCoefficients().

◆ e

double ossimQuadrilateralMap::e
protected

Definition at line 48 of file ossimQuadrilateralMap.h.

Referenced by map(), and solveCoefficients().

◆ f

double ossimQuadrilateralMap::f
protected

Definition at line 49 of file ossimQuadrilateralMap.h.

Referenced by map(), and solveCoefficients().

◆ g

double ossimQuadrilateralMap::g
protected

Definition at line 50 of file ossimQuadrilateralMap.h.

Referenced by map(), and solveCoefficients().

◆ h

double ossimQuadrilateralMap::h
protected

Definition at line 51 of file ossimQuadrilateralMap.h.

Referenced by map(), and solveCoefficients().


The documentation for this class was generated from the following files: