示例#1
0
void DumpSvg( int n, char *Time ){

    double      a, b, r, S[36], K[36], Mu[36];
    double      x, y, px, py, Min, Max;
    int         i, j, nK, nMu;
    int         tspan_n = 0;
    int         path_n  = 0;
    char        Line[512], Filename[1024], FilenameBase[1024];
    FILE        *fp, *fp_info;
    CoordInfo   *g = Create_CoordInfo();

    nK = 36;
    a = 0.01; b = 10.0;
    r = pow( b/a, 1.0/((double)(nK-1)));
printf("r = %g\n", r);
    S[0] = a;
    K[0] = a;
//    for (j=1; j<nK; j++) S[j] = S[j-1]*r;
//    for (j=0; j<nK; j++) K[j] = S[nK-1-j];
    for (j=1; j<nK; j++) K[j] = K[j-1]*r;

    nMu = 36;
    a = 1.0; b = 2000.0;
    r = pow( b/a, 1.0/((double)(nMu-1)));
    S[0] = a;
    for (j=1; j<nMu; j++) S[j] = S[j-1]*r;
    for (j=0; j<nMu; j++) Mu[j] = S[j];


    double E[10], A[18];
    E[0] = 0.050000; E[1] = 0.075000; E[2] = 0.10500; E[3] = 0.15000; E[4] = 0.22500; E[5] = 0.31500; E[6] = 0.50000; E[7] = 0.75000; E[8] = 1.1000; E[9] = 1.5000;
    for (i=0; i<18; i++) A[i] = 5.0+i*5.0;




    fp = fopen("mike.svg", "w");

    fprintf( fp, "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
                 "<!-- Created with Inkscape (http://www.inkscape.org/) -->\n"
                 "\n"
                 "<svg\n"
                 "    xmlns:ns0=\"http://www.iki.fi/pav/software/textext/\""
                 "    xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n"
                 "    xmlns:cc=\"http://creativecommons.org/ns#\"\n"
                 "    xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n"
                 "    xmlns:svg=\"http://www.w3.org/2000/svg\"\n"
                 "    xmlns=\"http://www.w3.org/2000/svg\"\n"
                 "    xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\""
                 "    xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\""
                 "    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n"
                 "    id=\"svg2\">\n"
                 "    width=\"744.09448\"\n"
                 "    height=\"1052.3622\"\n"
                 "    version=\"1.1\"\n"
                 "    inkscape:version=\"0.48.1 r9760\"\n"
                 "    sodipodi:docname=\"New document 1\">\n"
                 "\n"
                 "    <defs id=\"defs4\" />\n"
                 "\n"
                 "    <metadata id=\"metadata7\">\n"
                 "        <rdf:RDF>\n"
                 "            <cc:Work rdf:about=\"\">\n"
                 "                <dc:format>image/svg+xml</dc:format>\n"
                 "                <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n"
                 "                <dc:title></dc:title>\n"
                 "            </cc:Work>\n"
                 "        </rdf:RDF>\n"
                 "    </metadata>\n"
                 "\n");



    // start graphics (layer1)
    fprintf( fp, "    <g id=\"layer1\">\n" );

    // Page Background (black filled rectangle)
    fprintf( fp, "        <rect\n"
                 "           width=\"744.09448\"\n"
                 "           height=\"1052.1366\"\n"
                 "           x=\"0\"\n"
                 "           y=\"0\"\n"
                 "           id=\"Background\"\n"
                 "           style=\"fill:#000000;fill-opacity:1;stroke:none\"\n"
                 "        />\n" );


    /*
     *  Title
     */
    SvgTitle( fp, 32, 744.09448/2.0, 50.0, "Flux to Phase Space Density Conversion", g ); // Plot title
    sprintf( Line, "LANL-97A:  %s", Time );
    SvgTitle( fp, 28, 744.09448/2.0, 100.0, Line, g ); // Plot title








    /********************
     * Original FLUX 
     ********************/
    strcpy( FilenameBase, "/home/mgh/git/LanlGeoMag/Examples/FluxToPSD/Lgm_FluxToPsd_FLUX_EA" );
    sprintf( Filename, "file://%s_%03d.gif", FilenameBase, n );
    SvgImage( fp, 90, 200, 200, 200, Filename, g );
    SetupCoords( -0.5, 17.5, g->ImageX, g->ImageX+g->ImageWidth, -0.5, 9.5, g->ImageY+g->ImageHeight, g->ImageY, g );
    SvgXticks( fp, 0.0, 17.0, 2.0, g ); // X-ticks
    SvgYticks( fp, 0.0, 9.0, 1.0, g ); // Y-ticks
    SvgXnumbers( fp, 0.0, 17.0, 2.0, A, "\u03b1, Degrees", g ); // X-Numbers
    SvgYnumbers( fp, 0.0, 9.0, 1.0, E, "Energy, MeV", g );  // Y-numbers

    // Color Bar
    sprintf( Filename, "%s_%03d.info", FilenameBase, n );
    fp_info = fopen( Filename, "r" );
    fscanf( fp_info, "%*[^:]:%lf", &Min );
    fscanf( fp_info, "%*[^:]:%lf", &Max );
    fclose( fp_info );
    sprintf( Filename, "file://%s_Bar.gif", FilenameBase );
    SvgImage( fp, 90+200+10, 200, 10, 200, Filename, g );
    SetupCoords( -0.5, 9.5, g->ImageX, g->ImageX+g->ImageWidth, Min, Max, g->ImageY+g->ImageHeight, g->ImageY, g );
    SvgBarLabels( fp, Min, Max, "#/cm\u00b2/s/sr/MeV", g );




    /********************
     * Computed PSD 
     ********************/
    strcpy( FilenameBase, "/home/mgh/git/LanlGeoMag/Examples/FluxToPSD/Lgm_FluxToPsd_PSD_MK" );
    sprintf( Filename, "file://%s_%03d.gif", FilenameBase, n );
    SvgImage( fp, 460, 200, 200, 200, Filename, g );
    SetupCoords( -0.5, 35.5, g->ImageX, g->ImageX+g->ImageWidth, -0.5, 35.5, g->ImageY+g->ImageHeight, g->ImageY, g );
    SvgXticks( fp, 0.0, 35.0, 5.0, g ); // X-ticks
    SvgYticks( fp, 0.0, 35.0, 5.0, g ); // Y-ticks
    SvgXnumbers( fp, 0.0, 35.0, 5.0, K, "K, Re \u221AG", g );  // X-numbers
    SvgYnumbers( fp, 0.0, 35.0, 5.0, Mu, "\u00B5, MeV/G", g );  // Y-numbers

    
    // Color Bar
    sprintf( Filename, "%s_%03d.info", FilenameBase, n );
    if ( (fp_info = fopen( Filename, "r" )) != NULL  ) {;
        fp_info = fopen( Filename, "r" );
        fscanf( fp_info, "%*[^:]:%lf", &Min );
        fscanf( fp_info, "%*[^:]:%lf", &Max );
        fclose( fp_info );
    } else {
        printf("Could not open file: %s\n", Filename);
    }
    sprintf( Filename, "file://%s_Bar.gif", FilenameBase );
    SvgImage( fp, 460+200+10, 200, 10, 200, Filename, g );
    SetupCoords( -0.5, 9.5, g->ImageX, g->ImageX+g->ImageWidth, Min, Max, g->ImageY+g->ImageHeight, g->ImageY, g );
    SvgBarLabels( fp, Min, Max, "(c/cm/MeV)\u00b3", g );



    /********************
     * Re-derived  FLUX 
     ********************/
    strcpy( FilenameBase, "/home/mgh/git/LanlGeoMag/Examples/FluxToPSD/Lgm_PsdToFlux_FLUX_EA" );
    sprintf( Filename, "file://%s_%03d.gif", FilenameBase, n );
    SvgImage( fp, 90, 550, 200, 200, Filename, g );
    SetupCoords( -0.5, 17.5, g->ImageX, g->ImageX+g->ImageWidth, -0.5, 9.5, g->ImageY+g->ImageHeight, g->ImageY, g );
    SvgXticks( fp, 0.0, 17.0, 2.0, g ); // X-ticks
    SvgYticks( fp, 0.0, 9.0, 1.0, g ); // Y-ticks
    SvgXnumbers( fp, 0.0, 17.0, 2.0, A, "\u03b1, Degrees", g ); // X-Numbers
    SvgYnumbers( fp, 0.0, 9.0, 1.0, E, "Energy, MeV", g );  // Y-numbers

    // Color Bar
    sprintf( Filename, "%s_%03d.info", FilenameBase, n );
    if ( (fp_info = fopen( Filename, "r" )) != NULL  ) {;
        fscanf( fp_info, "%*[^:]:%lf", &Min );
        fscanf( fp_info, "%*[^:]:%lf", &Max );
        fclose( fp_info );
    } else {
        printf("Could not open file: %s\n", Filename);
    }
    sprintf( Filename, "file://%s_Bar.gif", FilenameBase );
    SvgImage( fp, 90+200+10, 550, 10, 200, Filename, g );
    SetupCoords( -0.5, 9.5, g->ImageX, g->ImageX+g->ImageWidth, Min, Max, g->ImageY+g->ImageHeight, g->ImageY, g );
    SvgBarLabels( fp, Min, Max, "#/cm\u00b2/s/sr/MeV", g );



    /********************
     * Difference FLUX 
     ********************/
    strcpy( FilenameBase, "/home/mgh/git/LanlGeoMag/Examples/FluxToPSD/J_DIFF" );
    sprintf( Filename, "file://%s_%03d.gif", FilenameBase, n );
    SvgImage( fp, 460, 550, 200, 200, Filename, g );
    SetupCoords( -0.5, 17.5, g->ImageX, g->ImageX+g->ImageWidth, -0.5, 9.5, g->ImageY+g->ImageHeight, g->ImageY, g );
    SvgXticks( fp, 0.0, 17.0, 2.0, g ); // X-ticks
    SvgYticks( fp, 0.0, 9.0, 1.0, g ); // Y-ticks
    SvgXnumbers( fp, 0.0, 17.0, 2.0, A, "\u03b1, Degrees", g ); // X-Numbers
    SvgYnumbers( fp, 0.0, 9.0, 1.0, E, "Energy, MeV", g );  // Y-numbers

    // Color Bar
    sprintf( Filename, "%s_%03d.info", FilenameBase, n );
    if ( (fp_info = fopen( Filename, "r" )) != NULL  ) {;
        fscanf( fp_info, "%*[^:]:%lf", &Min );
        fscanf( fp_info, "%*[^:]:%lf", &Max );
        fclose( fp_info );
    } else {
        printf("Could not open file: %s\n", Filename);
    }
    sprintf( Filename, "file://%s_Bar.gif", FilenameBase );
    SvgImage( fp, 460+200+10, 550, 10, 200, Filename, g );
    SetupCoords( -0.5, 9.5, g->ImageX, g->ImageX+g->ImageWidth, Min, Max, g->ImageY+g->ImageHeight, g->ImageY, g );
    SvgBarLabels( fp, Min, Max, "#/cm\u00b2/s/sr/MeV", g );








    // end graphics (layer 1)
    fprintf( fp, "    </g>\n" );

    fprintf( fp, "</svg>\n" );




    fclose(fp);

}
TerrainTexCoordCalc::TerrainTexCoordCalc(double XMin, double XMax, double YMin, double YMax)
{
SetupCoords(XMin, XMax, YMin, YMax);
} // TerrainTexCoordCalc::TerrainTexCoordCalc