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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
/*
* Copyright (C) 2005-2020 Centre National d'Etudes Spatiales (CNES)
*
* This file is part of Orfeo Toolbox
*
* https://www.orfeo-toolbox.org/
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef otbCompositeTransform_hxx
#define otbCompositeTransform_hxx
#include "otbCompositeTransform.h"
#include "otbGenericMapProjection.h"
#include "otbForwardSensorModel.h"
#include "otbInverseSensorModel.h"
#include "itkIdentityTransform.h"
namespace otb
{
template <class TFirstTransform, class TSecondTransform, class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>::CompositeTransform() : Superclass(ParametersDimension)
{
m_FirstTransform = nullptr;
m_SecondTransform = nullptr;
}
template <class TFirstTransform, class TSecondTransform, class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>::~CompositeTransform()
{
}
template <class TFirstTransform, class TSecondTransform, class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
typename CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>::SecondTransformOutputPointType
CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>::TransformPoint(
const FirstTransformInputPointType& point1) const
{
FirstTransformOutputPointType geoPoint;
geoPoint = m_FirstTransform->TransformPoint(point1);
SecondTransformOutputPointType outputPoint;
outputPoint = m_SecondTransform->TransformPoint(geoPoint);
// otbMsgDevMacro(<< std::setprecision(15) << "Converting: " << point1 << " -> " << geoPoint<< " -> " << outputPoint);
return outputPoint;
}
/*template<class TFirstTransform, class TSecondTransform, class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
typename CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>::OutputVectorType
CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>
::TransformVector(const InputVectorType &vector1) const
{
InputVectorType vectorTmp;
OutputVectorType vector2;
vectorTmp=m_FirstTransform->TransformVector(vector1);
vector2=m_SecondTransform->TransformVector(vectorTmp);
return vector2;
}
template<class TFirstTransform, class TSecondTransform, class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
typename CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>::OutputVnlVectorType
CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>
::TransformVector(const InputVnlVectorType &vnlVector1) const
{
InputVnlVectorType vnlVectorTmp;
OutputVnlVectorType vnlVector2;
vnlVectorTmp=m_FirstTransform->TransformVector(vnlVector1);
vnlVector2=m_SecondTransform->TransformVector(vnlVectorTmp);
return vnlVector2;
}
template<class TFirstTransform, class TSecondTransform, class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
typename CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>::OutputCovariantVectorType
CompositeTransform<TFirstTransform, TSecondTransform, TScalarType, NInputDimensions, NOutputDimensions>
::TransformCovariantVector(const InputCovariantVectorType &covariantVector1) const
{
InputCovariantVectorType covariantVectorTmp;
OutputCovariantVectorType covariantVector2;
covariantVectorTmp=m_FirstTransform->TransformCovariantVector(covariantVector1);
covariantVector2=m_SecondTransform->TransformCovariantVector(covariantVectorTmp);
return covariantVector2;
}*/
} // namespace otb
#endif
|