@@ -1158,6 +1158,112 @@ void TestQgsGeometry::circularString()
1158
1158
l1.points( pts );
1159
1159
QVERIFY( pts.empty() );
1160
1160
1161
+ // from 3 points
1162
+ QgsCircularString from3Pts( QgsPoint( 1, 2 ), QgsPoint( 21, 22 ), QgsPoint( 31, 2 ) );
1163
+ QCOMPARE( from3Pts.wkbType(), QgsWkbTypes::CircularString );
1164
+ QCOMPARE( from3Pts.numPoints(), 3 );
1165
+ QCOMPARE( from3Pts.xAt( 0 ), 1.0 );
1166
+ QCOMPARE( from3Pts.yAt( 0 ), 2.0 );
1167
+ QCOMPARE( from3Pts.xAt( 1 ), 21.0 );
1168
+ QCOMPARE( from3Pts.yAt( 1 ), 22.0 );
1169
+ QCOMPARE( from3Pts.xAt( 2 ), 31.0 );
1170
+ QCOMPARE( from3Pts.yAt( 2 ), 2.0 );
1171
+ from3Pts = QgsCircularString( QgsPoint( QgsWkbTypes::PointZ, 1, 2, 3 ), QgsPoint( QgsWkbTypes::PointZ, 21, 22, 23 ),
1172
+ QgsPoint( QgsWkbTypes::PointZ, 31, 2, 33 ) );
1173
+ QCOMPARE( from3Pts.wkbType(), QgsWkbTypes::CircularStringZ );
1174
+ QCOMPARE( from3Pts.numPoints(), 3 );
1175
+ QCOMPARE( from3Pts.xAt( 0 ), 1.0 );
1176
+ QCOMPARE( from3Pts.yAt( 0 ), 2.0 );
1177
+ QCOMPARE( from3Pts.pointN( 0 ).z(), 3.0 );
1178
+ QCOMPARE( from3Pts.xAt( 1 ), 21.0 );
1179
+ QCOMPARE( from3Pts.yAt( 1 ), 22.0 );
1180
+ QCOMPARE( from3Pts.pointN( 1 ).z(), 23.0 );
1181
+ QCOMPARE( from3Pts.xAt( 2 ), 31.0 );
1182
+ QCOMPARE( from3Pts.yAt( 2 ), 2.0 );
1183
+ QCOMPARE( from3Pts.pointN( 2 ).z(), 33.0 );
1184
+ from3Pts = QgsCircularString( QgsPoint( QgsWkbTypes::PointM, 1, 2, 0, 3 ), QgsPoint( QgsWkbTypes::PointM, 21, 22, 0, 23 ),
1185
+ QgsPoint( QgsWkbTypes::PointM, 31, 2, 0, 33 ) );
1186
+ QCOMPARE( from3Pts.wkbType(), QgsWkbTypes::CircularStringM );
1187
+ QCOMPARE( from3Pts.numPoints(), 3 );
1188
+ QCOMPARE( from3Pts.xAt( 0 ), 1.0 );
1189
+ QCOMPARE( from3Pts.yAt( 0 ), 2.0 );
1190
+ QCOMPARE( from3Pts.pointN( 0 ).m(), 3.0 );
1191
+ QCOMPARE( from3Pts.xAt( 1 ), 21.0 );
1192
+ QCOMPARE( from3Pts.yAt( 1 ), 22.0 );
1193
+ QCOMPARE( from3Pts.pointN( 1 ).m(), 23.0 );
1194
+ QCOMPARE( from3Pts.xAt( 2 ), 31.0 );
1195
+ QCOMPARE( from3Pts.yAt( 2 ), 2.0 );
1196
+ QCOMPARE( from3Pts.pointN( 2 ).m(), 33.0 );
1197
+ from3Pts = QgsCircularString( QgsPoint( QgsWkbTypes::PointZM, 1, 2, 3, 4 ), QgsPoint( QgsWkbTypes::PointZM, 21, 22, 23, 24 ),
1198
+ QgsPoint( QgsWkbTypes::PointZM, 31, 2, 33, 34 ) );
1199
+ QCOMPARE( from3Pts.wkbType(), QgsWkbTypes::CircularStringZM );
1200
+ QCOMPARE( from3Pts.numPoints(), 3 );
1201
+ QCOMPARE( from3Pts.xAt( 0 ), 1.0 );
1202
+ QCOMPARE( from3Pts.yAt( 0 ), 2.0 );
1203
+ QCOMPARE( from3Pts.pointN( 0 ).z(), 3.0 );
1204
+ QCOMPARE( from3Pts.pointN( 0 ).m(), 4.0 );
1205
+ QCOMPARE( from3Pts.xAt( 1 ), 21.0 );
1206
+ QCOMPARE( from3Pts.yAt( 1 ), 22.0 );
1207
+ QCOMPARE( from3Pts.pointN( 1 ).z(), 23.0 );
1208
+ QCOMPARE( from3Pts.pointN( 1 ).m(), 24.0 );
1209
+ QCOMPARE( from3Pts.xAt( 2 ), 31.0 );
1210
+ QCOMPARE( from3Pts.yAt( 2 ), 2.0 );
1211
+ QCOMPARE( from3Pts.pointN( 2 ).z(), 33.0 );
1212
+ QCOMPARE( from3Pts.pointN( 2 ).m(), 34.0 );
1213
+
1214
+ // from 2 points and center
1215
+ from3Pts = QgsCircularString::fromTwoPointsAndCenter( QgsPoint( 1, 2 ), QgsPoint( 31, 2 ), QgsPoint( 21, 2 ) );
1216
+ QCOMPARE( from3Pts.wkbType(), QgsWkbTypes::CircularString );
1217
+ QCOMPARE( from3Pts.numPoints(), 3 );
1218
+ QCOMPARE( from3Pts.xAt( 0 ), 1.0 );
1219
+ QCOMPARE( from3Pts.yAt( 0 ), 2.0 );
1220
+ QCOMPARE( from3Pts.xAt( 1 ), 21.0 );
1221
+ QCOMPARE( from3Pts.yAt( 1 ), 22.0 );
1222
+ QCOMPARE( from3Pts.xAt( 2 ), 31.0 );
1223
+ QCOMPARE( from3Pts.yAt( 2 ), 2.0 );
1224
+ from3Pts = QgsCircularString::fromTwoPointsAndCenter( QgsPoint( QgsWkbTypes::PointZ, 1, 2, 3 ), QgsPoint( QgsWkbTypes::PointZ, 32, 2, 33 ),
1225
+ QgsPoint( QgsWkbTypes::PointZ, 21, 2, 23 ) );
1226
+ QCOMPARE( from3Pts.wkbType(), QgsWkbTypes::CircularStringZ );
1227
+ QCOMPARE( from3Pts.numPoints(), 3 );
1228
+ QCOMPARE( from3Pts.xAt( 0 ), 1.0 );
1229
+ QCOMPARE( from3Pts.yAt( 0 ), 2.0 );
1230
+ QCOMPARE( from3Pts.pointN( 0 ).z(), 3.0 );
1231
+ QCOMPARE( from3Pts.xAt( 1 ), 21.0 );
1232
+ QCOMPARE( from3Pts.yAt( 1 ), 22.0 );
1233
+ QCOMPARE( from3Pts.pointN( 1 ).z(), 23.0 );
1234
+ QCOMPARE( from3Pts.xAt( 2 ), 32.0 );
1235
+ QCOMPARE( from3Pts.yAt( 2 ), 2.0 );
1236
+ QCOMPARE( from3Pts.pointN( 2 ).z(), 33.0 );
1237
+ from3Pts = QgsCircularString::fromTwoPointsAndCenter( QgsPoint( QgsWkbTypes::PointM, 1, 2, 0, 3 ), QgsPoint( QgsWkbTypes::PointM, 31, 2, 0, 33 ),
1238
+ QgsPoint( QgsWkbTypes::PointM, 21, 2, 0, 23 ) );
1239
+ QCOMPARE( from3Pts.wkbType(), QgsWkbTypes::CircularStringM );
1240
+ QCOMPARE( from3Pts.numPoints(), 3 );
1241
+ QCOMPARE( from3Pts.xAt( 0 ), 1.0 );
1242
+ QCOMPARE( from3Pts.yAt( 0 ), 2.0 );
1243
+ QCOMPARE( from3Pts.pointN( 0 ).m(), 3.0 );
1244
+ QCOMPARE( from3Pts.xAt( 1 ), 21.0 );
1245
+ QCOMPARE( from3Pts.yAt( 1 ), 22.0 );
1246
+ QCOMPARE( from3Pts.pointN( 1 ).m(), 23.0 );
1247
+ QCOMPARE( from3Pts.xAt( 2 ), 31.0 );
1248
+ QCOMPARE( from3Pts.yAt( 2 ), 2.0 );
1249
+ QCOMPARE( from3Pts.pointN( 2 ).m(), 33.0 );
1250
+ from3Pts = QgsCircularString::fromTwoPointsAndCenter( QgsPoint( QgsWkbTypes::PointZM, 1, 2, 3, 4 ), QgsPoint( QgsWkbTypes::PointZM, 31, 2, 33, 34 ),
1251
+ QgsPoint( QgsWkbTypes::PointZM, 21, 2, 23, 24 ) );
1252
+ QCOMPARE( from3Pts.wkbType(), QgsWkbTypes::CircularStringZM );
1253
+ QCOMPARE( from3Pts.numPoints(), 3 );
1254
+ QCOMPARE( from3Pts.xAt( 0 ), 1.0 );
1255
+ QCOMPARE( from3Pts.yAt( 0 ), 2.0 );
1256
+ QCOMPARE( from3Pts.pointN( 0 ).z(), 3.0 );
1257
+ QCOMPARE( from3Pts.pointN( 0 ).m(), 4.0 );
1258
+ QCOMPARE( from3Pts.xAt( 1 ), 21.0 );
1259
+ QCOMPARE( from3Pts.yAt( 1 ), 22.0 );
1260
+ QCOMPARE( from3Pts.pointN( 1 ).z(), 23.0 );
1261
+ QCOMPARE( from3Pts.pointN( 1 ).m(), 24.0 );
1262
+ QCOMPARE( from3Pts.xAt( 2 ), 31.0 );
1263
+ QCOMPARE( from3Pts.yAt( 2 ), 2.0 );
1264
+ QCOMPARE( from3Pts.pointN( 2 ).z(), 33.0 );
1265
+ QCOMPARE( from3Pts.pointN( 2 ).m(), 34.0 );
1266
+
1161
1267
//setPoints
1162
1268
QgsCircularString l2;
1163
1269
l2.setPoints( QgsPointSequence() << QgsPoint( 1.0, 2.0 ) );
0 commit comments