void Shape::test() { // removed initializer list usage for backward compatibility // std::vector< Shape::ScalarType > partition = { 4,3,2,2,2 }; // std::vector< Shape::ScalarType > dualPartition = { 5,5,2,1 }; int ar[]={ 4,3,2,2,2 }; const int TotalItems = sizeof(ar)/sizeof(ar[0]); std::vector< Shape::ScalarType > partition(ar, ar+TotalItems); int dar[]= { 5,5,2,1 }; const int TotalItemsDar = sizeof(dar)/sizeof(dar[0]); std::vector< Shape::ScalarType > dualPartition(dar, dar+TotalItemsDar); Shape shape(partition); Shape::ShapeRepType dual = shape.getDualShapeRep(); Shape::ShapeRepType storedPartition = shape.getShapeRep(); assert(shape.hasNaturalNormalizableFactor() ); assert(shape.conjugate(shape.conjugate(storedPartition))==storedPartition); // copy(dual.begin(), dual.end(), std::ostream_iterator<Shape::ScalarType>(std::cout, "\n")); assert( dualPartition==dual ); assert( partition == storedPartition ); assert( shape.getDegree()==13 ); assert( shape.getMaxFactorDegree()==3 ); Shape reducedShape = shape.removeExponent(2); //Shape refReducedShape = { 4,3,2,2 }; int redar[]={ 4,3,2,2 }; const int TotalItemsRed = sizeof(redar)/sizeof(redar[0]); std::vector< Shape::ScalarType > preRefReducedShape(redar, redar+TotalItemsRed); Shape refReducedShape(preRefReducedShape); assert( refReducedShape==refReducedShape ); //Shape shapeN = { 4,4,3,3,2,2,2 }; //int Nar[]={ 4,3,2,2 }; int Nar[]={ 4,4,3,3,2,2,2 }; const int TotalItemsNar = sizeof(Nar)/sizeof(Nar[0]); std::vector< Shape::ScalarType > preShapeN(Nar, Nar+TotalItemsNar); Shape shapeN(preShapeN); assert(! shapeN.hasNaturalNormalizableFactor() ); MultiplicityDegreeHashType::const_iterator it; assert(shapeN.multiplicityDegreeMap_m[4]==2); assert(shapeN.multiplicityDegreeMap_m[3]==2); assert(shapeN.multiplicityDegreeMap_m[2]==3); for (it=shapeN.multiplicityDegreeMap_m.begin();it!=shapeN.multiplicityDegreeMap_m.end();it++) { std::cerr << (*it).first << "^" << (*it).second << std::endl; } std::cerr << "Shape test succeeded!\n"; }
void proj15::setParamNames( const int projNumber ) { projName m_name; setName( m_name.projectionName( projNumber ) ); setTrueName( m_projName ); switch( projNumber ) { case 0: //"Geographic:" case 2: // "State Plane": break; case 1: //"UTM": setParamName( 0, lonZ( 0 ) ); setParamName( 1, latZ( 1 ) ); break; case 3: //"Albers Equal Area:" case 4: //"Lambert Conformal Conic": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 2, stdPR1() ); setParamName( 3, stdPR2() ); setParamName( 4, centMer() ); setParamName( 5, originLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 5: //"Mercator": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 4, centMer() ); setParamName( 5, trueScale() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 6: //"Polar Stereographic": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 4, longPol() ); setParamName( 5, trueScale() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 7: //"Polyconic": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 4, centMer() ); setParamName( 5, originLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 8: //"Equidistant Conic A\\B": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 4, centMer() ); setParamName( 5, originLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); if( getParamValue( 8 ) == 1 ) { setTrueName( "Equidistant Conic B" ); setParamName( 2, stdPR1() ); setParamName( 3, stdPR2() ); } else { setTrueName( "Equidistant Conic A" ); setParamName( 2, stdPAR() ); } break; case 9: //"Transverse Mercator": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 2, factor() ); setParamName( 4, centMer() ); setParamName( 5, originLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 10: //"Stereographic": setParamName( 0, sphere( 0 ) ); setParamName( 4, centLon() ); setParamName( 5, centerLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 11: //"Lambert Azimuthal": setParamName( 0, sphere( 0 ) ); setParamName( 4, centLon() ); setParamName( 5, centerLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 12: //"Azimuthal": setParamName( 0, sphere( 0 ) ); setParamName( 4, centLon() ); setParamName( 5, centerLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 13: //"Gnomonic": setParamName( 0, sphere( 0 ) ); setParamName( 4, centLon() ); setParamName( 5, centerLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 14: //"Orthographic": setParamName( 0, sphere( 0 ) ); setParamName( 4, centLon() ); setParamName( 5, centerLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 15: //"Gen. Vert. Near Per": setParamName( 0, sphere( 0 ) ); setParamName( 2, height() ); setParamName( 4, centLon() ); setParamName( 5, centerLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 16: //"Sinusiodal": setParamName( 0, sphere( 0 ) ); setParamName( 4, centMer() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 17: //"Equirectangular": setParamName( 0, sphere( 0 ) ); setParamName( 4, centMer() ); setParamName( 5, trueScale() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 18: //"Miller Cylindrical": setParamName( 0, sphere( 0 ) ); setParamName( 4, centMer() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 19: //"Van der Grinten": setParamName( 0, sphere( 0 ) ); setParamName( 4, centMer() ); setParamName( 5, originLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 20: //"Hotine Oblique Merc A\\B": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 2, factor() ); setParamName( 5, originLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); if( getParamValue( 12 ) == 1 ) { setTrueName( "Hotine Oblique Merc B" ); setParamName( 3, aziAng() ); setParamName( 4, azmthPt() ); } else { setTrueName( "Hotine Oblique Merc A" ); setParamName( 8, long1() ); setParamName( 9, lat1() ); setParamName( 10, long2() ); setParamName( 11, lat2() ); } break; case 21: //"Robinson": setParamName( 0, sphere( 0 ) ); setParamName( 4, centMer() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 22: //"Space Oblique Merc A\\B": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 6, FE() ); setParamName( 7, FN() ); if( getParamValue( 12 ) == 1 ) { setTrueName( "Space Oblique Merc B" ); setParamName( 2, satNum() ); setParamName( 3, path( 3 ) ); } else { setTrueName( "Space Oblique Merc A" ); setParamName( 3, incAng() ); setParamName( 4, ascLong() ); setParamName( 8, psRev() ); setParamName( 9, lRat() ); setParamName( 10, pFlag( 10 ) ); } break; case 23: //"Alaska Conformal": setParamName( 0, semiMajor( 0 ) ); setParamName( 1, semiMinor( 1 ) ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 24: //"Interrupted Goode": setParamName( 0, sphere( 0 ) ); break; case 25: //"Mollweide": setParamName( 0, sphere( 0 ) ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 26: //"Interrupted Mollweide": setParamName( 0, sphere( 0 ) ); break; case 27: //"Hammer": setParamName( 0, sphere( 0 ) ); setParamName( 4, centMer() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 28: //"Wagner IV": setParamName( 0, sphere( 0 ) ); setParamName( 4, centMer() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 29: //"Wagner VII": setParamName( 0, sphere( 0 ) ); setParamName( 4, centMer() ); setParamName( 6, FE() ); setParamName( 7, FN() ); break; case 30: //"Oblated Equal Area": setParamName( 0, sphere( 0 ) ); setParamName( 2, shapeM() ); setParamName( 3, shapeN() ); setParamName( 4, centLon() ); setParamName( 5, centerLat() ); setParamName( 6, FE() ); setParamName( 7, FN() ); setParamName( 8, angle() ); break; default: setInvalid(); break; } return; }