File indexing completed on 2024-12-01 09:46:09
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2014 Bernhard Beschow <bbeschow@cs.tu-berlin.de> 0004 // 0005 0006 #include "GnomonicProjection.h" 0007 #include "ViewportParams.h" 0008 #include "TestUtils.h" 0009 0010 namespace Marble 0011 { 0012 0013 class GnomonicProjectionTest : public QObject 0014 { 0015 Q_OBJECT 0016 0017 private Q_SLOTS: 0018 void screenCoordinatesOfCenter_data(); 0019 void screenCoordinatesOfCenter(); 0020 }; 0021 0022 void GnomonicProjectionTest::screenCoordinatesOfCenter_data() 0023 { 0024 ViewportParams gnomonic; 0025 gnomonic.setProjection( Gnomonic ); 0026 0027 QTest::addColumn<QPoint>( "screenCoordinates" ); 0028 QTest::addColumn<GeoDataCoordinates>( "expected" ); 0029 0030 addRow() << QPoint( 5, 15 ) << GeoDataCoordinates( -45, 72.5536, 0, GeoDataCoordinates::Degree ); 0031 addRow() << QPoint( 15, 5 ) << GeoDataCoordinates( 135, 72.5536, 0, GeoDataCoordinates::Degree ); 0032 } 0033 0034 void GnomonicProjectionTest::screenCoordinatesOfCenter() 0035 { 0036 QFETCH( QPoint, screenCoordinates ); 0037 QFETCH( GeoDataCoordinates, expected ); 0038 0039 ViewportParams viewport; 0040 viewport.setProjection( Gnomonic ); 0041 viewport.setRadius( 180 / 4 ); // for easy mapping of lon <-> x 0042 viewport.setSize( QSize( 20, 20 ) ); 0043 viewport.centerOn( 0 * DEG2RAD, 90 * DEG2RAD ); 0044 0045 { 0046 qreal lon, lat; 0047 const bool retval = viewport.geoCoordinates( screenCoordinates.x(), screenCoordinates.y(), lon, lat, GeoDataCoordinates::Degree ); 0048 0049 QVERIFY( retval ); // we want valid coordinates 0050 QCOMPARE( lon, expected.longitude( GeoDataCoordinates::Degree ) ); 0051 QFUZZYCOMPARE( lat, expected.latitude( GeoDataCoordinates::Degree ), 0.0001 ); 0052 } 0053 } 0054 0055 } 0056 0057 QTEST_MAIN( Marble::GnomonicProjectionTest ) 0058 0059 #include "GnomonicProjectionTest.moc"