Esempio n. 1
0
/////////////////////////////////////////////////////////////////////////////
// Transform
//		aus WGS84 zum eigenen geodätischem Datum, d.h. WBS84-Offsets
//		subtrahieren
HRESULT CTDSThrough7ParameterPositionVector::Transform(long nCoords, LPTCSDBLCOORD pData) 
{
bool fNeedsShift = (0 != m_dx || 0 != m_dy || 0 != m_dz) ? true : false;
bool fNeedsRotation = (0 != m_rx || 0 != m_ry || 0 != m_rz || 0 != m_ds) ? true : false;
double ds = 1. - m_ds;

	for(int i = 0; i < nCoords; i++, pData++) {
		pData->c1 /= m_scaleXIn;
		pData->c2 /= m_scaleYIn;
		if (fNeedsShift || fNeedsRotation) {
			LLH2XYZ(m_DstSys, pData);
			if (fNeedsShift) {
				pData->c1 -= m_dx;
				pData->c2 -= m_dy;
				pData->h -= m_dz;
			}
			if (fNeedsRotation) {
			double x = (ds * pData->c1) + (m_rz * pData->c2) - (m_ry * pData->h);
			double y = -(m_rz * pData->c1) + (ds * pData->c2) + (m_rx * pData->h);
				
				pData->h = (m_ry * pData->c1) - (m_rx * pData->c2) + (ds * pData->h);
				pData->c1 = x;
				pData->c2 = y;
			}
			XYZ2LLH(m_MeSelf, pData);
		}
		pData->c1 *= m_scaleXOut;
		pData->c2 *= m_scaleYOut;
	}
	return S_OK;
}
Esempio n. 2
0
/////////////////////////////////////////////////////////////////////////////
// Transform
//		aus WGS84 zum eigenen geodätischem Datum, d.h. WBS84-Offsets
//		subtrahieren
HRESULT CTDSThroughECEF::Transform(long nCoords, LPTCSDBLCOORD pData) 
{
bool fNeedsShift = (0 != m_dx || 0 != m_dy || 0 != m_dz) ? true : false;

	for(int i = 0; i < nCoords; i++, pData++) {
		pData->c1 /= m_scaleXIn;
		pData->c2 /= m_scaleYIn;
		if (fNeedsShift) {
			LLH2XYZ(m_DstSys, pData);
			pData->c1 -= m_dx;
			pData->c2 -= m_dy;
			pData->h -= m_dz;
			XYZ2LLH(m_MeSelf, pData);
		}
		pData->c1 *= m_scaleXOut;
		pData->c2 *= m_scaleYOut;
	}
	return S_OK;
}