@@ -181,40 +181,40 @@ void QgsLeastSquares::affine( std::vector<QgsPoint> mapCoords,
181
181
* Also returns 3x3 homogenous matrices which can be used to normalize and de-normalize coordinates.
182
182
*/
183
183
void normalizeCoordinates ( const std::vector<QgsPoint> coords, std::vector<QgsPoint> &normalizedCoords,
184
- double normalizeMatrix[9 ], double denormalizeMatrix[9 ])
184
+ double normalizeMatrix[9 ], double denormalizeMatrix[9 ] )
185
185
{
186
186
// Calculate center of gravity
187
187
double cogX = 0.0 , cogY = 0.0 ;
188
188
for ( uint i = 0 ; i < coords.size (); i++ )
189
189
{
190
- cogX+= coords[i].x ();
191
- cogY+= coords[i].y ();
190
+ cogX += coords[i].x ();
191
+ cogY += coords[i].y ();
192
192
}
193
- cogX*= 1.0 / coords.size ();
194
- cogY*= 1.0 / coords.size ();
193
+ cogX *= 1.0 / coords.size ();
194
+ cogY *= 1.0 / coords.size ();
195
195
196
196
// Calculate mean distance to origin
197
197
double meanDist = 0.0 ;
198
198
for ( uint i = 0 ; i < coords.size (); i++ )
199
199
{
200
- double X = (coords[i].x () - cogX);
201
- double Y = (coords[i].y () - cogY);
202
- meanDist+= sqrt ( X* X + Y* Y );
200
+ double X = ( coords[i].x () - cogX );
201
+ double Y = ( coords[i].y () - cogY );
202
+ meanDist += sqrt ( X * X + Y * Y );
203
203
}
204
- meanDist*= 1.0 / coords.size ();
204
+ meanDist *= 1.0 / coords.size ();
205
205
206
- double OOD = meanDist/ sqrt (2 );
207
- double D = 1.0 / OOD;
208
- normalizedCoords.resize (coords.size ());
206
+ double OOD = meanDist / sqrt ( 2.0 );
207
+ double D = 1.0 / OOD;
208
+ normalizedCoords.resize ( coords.size () );
209
209
for ( uint i = 0 ; i < coords.size (); i++ )
210
210
{
211
- normalizedCoords[i] = QgsPoint ( ( coords[i].x () - cogX)* D, (coords[i].y () - cogY)* D );
211
+ normalizedCoords[i] = QgsPoint (( coords[i].x () - cogX ) * D, ( coords[i].y () - cogY ) * D );
212
212
}
213
213
214
- normalizeMatrix[0 ] = D; normalizeMatrix[1 ] = 0.0 ; normalizeMatrix[2 ] = -cogX* D;
215
- normalizeMatrix[3 ] = 0.0 ; normalizeMatrix[4 ] = D; normalizeMatrix[5 ] = -cogY* D;
214
+ normalizeMatrix[0 ] = D; normalizeMatrix[1 ] = 0.0 ; normalizeMatrix[2 ] = -cogX * D;
215
+ normalizeMatrix[3 ] = 0.0 ; normalizeMatrix[4 ] = D; normalizeMatrix[5 ] = -cogY * D;
216
216
normalizeMatrix[6 ] = 0.0 ; normalizeMatrix[7 ] = 0.0 ; normalizeMatrix[8 ] = 1.0 ;
217
-
217
+
218
218
denormalizeMatrix[0 ] = OOD; denormalizeMatrix[1 ] = 0.0 ; denormalizeMatrix[2 ] = cogX;
219
219
denormalizeMatrix[3 ] = 0.0 ; denormalizeMatrix[4 ] = OOD; denormalizeMatrix[5 ] = cogY;
220
220
denormalizeMatrix[6 ] = 0.0 ; denormalizeMatrix[7 ] = 0.0 ; denormalizeMatrix[8 ] = 1.0 ;
@@ -235,14 +235,14 @@ void QgsLeastSquares::projective( std::vector<QgsPoint> mapCoords,
235
235
236
236
std::vector<QgsPoint> mapCoordsNormalized;
237
237
std::vector<QgsPoint> pixelCoordsNormalized;
238
-
238
+
239
239
double normMap[9 ], denormMap[9 ];
240
240
double normPixel[9 ], denormPixel[9 ];
241
241
normalizeCoordinates ( mapCoords, mapCoordsNormalized, normMap, denormMap );
242
242
normalizeCoordinates ( pixelCoords, pixelCoordsNormalized, normPixel, denormPixel );
243
243
mapCoords = mapCoordsNormalized;
244
244
pixelCoords = pixelCoordsNormalized;
245
-
245
+
246
246
// GSL does not support a full SVD, so we artificially add a linear dependent row
247
247
// to the matrix in case the system is underconstrained.
248
248
uint m = std::max ( 9u , ( uint )mapCoords.size () * 2u );
0 commit comments