Пример #1
0
    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";
    }
Пример #2
0
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;
}