/usr/share/doc/libplplot12/examples/d/x03d.d is in libplplot-dev 5.10.0+dfsg2-0.1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | // $Id: x03d.d 11684 2011-03-31 04:15:32Z airwin $
//
// Polar plot demo.
//
import std.math;
import std.string;
import plplot;
//--------------------------------------------------------------------------
// main
//
// Generates polar plot, with 1-1 scaling.
//--------------------------------------------------------------------------
int main( char[][] args )
{
PLFLT dtr = PI / 180.0;
PLFLT[] x0, y0;
x0.length = y0.length = 361;
for ( size_t i = 0; i < x0.length; i++ )
{
x0[i] = cos( dtr * i );
y0[i] = sin( dtr * i );
}
// Parse and process command line arguments
plparseopts( args, PL_PARSE_FULL );
// Set orientation to portrait - note not all device drivers
// support this, in particular most interactive drivers do not
plsori( 1 );
// Initialize plplot
plinit();
// Set up viewport and window, but do not draw box
plenv( -1.3, 1.3, -1.3, 1.3, 1, -2 );
// Draw circles for polar grid
for ( size_t i = 1; i < 11; i++ )
plarc( 0.0, 0.0, 0.1 * i, 0.1 * i, 0.0, 360.0, 0.0, 0 );
plcol0( 2 );
for ( size_t i = 0; i <= 11; i++ )
{
PLFLT theta = 30.0 * i;
PLFLT dx = cos( dtr * theta );
PLFLT dy = sin( dtr * theta );
// Draw radial spokes for polar grid
pljoin( 0.0, 0.0, dx, dy );
// Write labels for angle
string text = format( "%d", lrint( theta ) );
PLFLT offset;
if ( theta < 9.99 )
offset = 0.45;
else if ( theta < 99.9 )
offset = 0.30;
else
offset = 0.15;
// Slightly off zero to avoid floating point logic flips at 90 and 270 deg.
if ( dx >= -0.00001 )
plptex( dx, dy, dx, dy, -offset, text );
else
plptex( dx, dy, -dx, -dy, 1. + offset, text );
}
// Draw the graph
PLFLT r;
PLFLT[] x, y;
x.length = y.length = 361;
for ( size_t i = 0; i < x.length; i++ )
{
r = sin( dtr * ( 5 * i ) );
x[i] = x0[i] * r;
y[i] = y0[i] * r;
}
plcol0( 3 );
plline( x, y );
plcol0( 4 );
plmtex( "t", 2.0, 0.5, 0.5, "#frPLplot Example 3 - r(#gh)=sin 5#gh" );
// Close the plot at end
plend();
return 0;
}
|