From: <sm...@us...> - 2009-01-20 08:00:12
|
Revision: 9351 http://plplot.svn.sourceforge.net/plplot/?rev=9351&view=rev Author: smekal Date: 2009-01-20 08:00:07 +0000 (Tue, 20 Jan 2009) Log Message: ----------- Added new (working) example x02.lua. pl.parseopt() is now supported. All commands are now in the "pl" namespace by default and the "pl" is ripped off from the default names, so e.g. pllab() in Lua is pl.lab(), except end, which is still called via pl.plend() Modified Paths: -------------- trunk/examples/lua/x05.lua trunk/examples/lua/x10.lua trunk/examples/lua/x12.lua trunk/examples/lua/x13.lua trunk/examples/lua/x19.lua trunk/examples/lua/x24.lua trunk/examples/lua/x25.lua trunk/examples/lua/x30.lua Added Paths: ----------- trunk/examples/lua/x02.lua Added: trunk/examples/lua/x02.lua =================================================================== --- trunk/examples/lua/x02.lua (rev 0) +++ trunk/examples/lua/x02.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -0,0 +1,139 @@ +-- $Id: $ + +-- Multipl.e window and color map 0 demo. + +-- initialise Lua bindings to pl.pl.ot +if string.sub(_VERSION,1,7)=='Lua 5.0' then + lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') + assert(lib)() +else + require('plplotluac') +end + + +---------------------------------------------------------------------------- +-- draw_windows +-- +-- Draws a set of numbered boxes with colors according to cmap0 entry. +---------------------------------------------------------------------------- + +function draw_windows(nw, cmap0_offset) + pl.schr(0, 3.5) + pl.font(4) + + for i = 0, nw-1 do + pl.col0(i+cmap0_offset) + pl.adv(0) + vmin = 0.1 + vmax = 0.9 + for j = 0, 2 do + pl.wid(j + 1) + pl.vpor(vmin, vmax, vmin, vmax) + pl.wind(0, 1, 0, 1) + pl.box("bc", 0, 0, "bc", 0, 0) + vmin = vmin + 0.1 + vmax = vmax - 0.1 + end + pl.wid(1) + pl.ptex(0.5, 0.5, 1, 0, 0.5, tostring(i)) + end +end + + +---------------------------------------------------------------------------- +-- demo1 +-- +-- Demonstrates multipl.e windows and default color map 0 palette. +---------------------------------------------------------------------------- + +function demo1() + pl.bop() + + -- Divide screen into 16 regions + pl.ssub(4, 4) + + draw_windows(16, 0) + + pl.eop() +end + + +---------------------------------------------------------------------------- +-- demo2 +-- +-- Demonstrates multipl.e windows, user-modified color map 0 palette, and +-- HLS -> RGB translation. +---------------------------------------------------------------------------- + +function demo2() + -- Set up cmap0 + -- Use 100 custom colors in addition to base 16 + r = {} + g = {} + b = {} + + -- Min & max lightness values + lmin = 0.15 + lmax = 0.85 + + pl.bop() + + -- Divide screen into 100 regions + + pl.ssub(10, 10) + + for i = 0, 99 do + -- Bounds on HLS, from pl.hlsrgb() commentary -- + -- hue [0., 360.] degrees + -- lightness [0., 1.] magnitude + -- saturation [0., 1.] magnitude + + -- Vary hue uniformly from left to right + h = (360/10) * math.mod(i, 10) + + -- Vary lightness uniformly from top to bottom, between min & max + l = lmin + (lmax - lmin) * math.floor(i/10)/9 + + -- Use max saturation + s = 1 + + r1, g1, b1 = pl.hlsrgb(h, l, s) + + -- Use 255.001 to avoid close truncation decisions in this example. + r[i+1+16] = r1 * 255.001 + g[i+1+16] = g1 * 255.001 + b[i+1+16] = b1 * 255.001 + end + + -- Load default cmap0 colors into our custom set + for i = 0, 15 do + r[i+1], g[i+1], b[i+1] = pl.gcol0(i) + end + + -- Now set cmap0 all at once (faster, since fewer driver calls) + pl.scmap0(r, g, b) + + draw_windows(100, 16) + + pl.eop() +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Demonstrates multipl.e windows and color map 0 palette, both default and +-- user-modified. +---------------------------------------------------------------------------- + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Initialize pl.pl.ot +pl.init() + +-- Run demos +demo1() +demo2() + +pl.plend() Property changes on: trunk/examples/lua/x02.lua ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/examples/lua/x05.lua =================================================================== --- trunk/examples/lua/x05.lua 2009-01-20 07:45:17 UTC (rev 9350) +++ trunk/examples/lua/x05.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -9,7 +9,6 @@ else require('plplotluac') end -pl=plplotluac -------------------------------------------------------------------------- -- main @@ -21,10 +20,10 @@ data = {} -- Parse and process command line arguments --- (void) plparseopts(&argc, argv, PL_PARSE_FULL); +pl.parseopts(arg, pl.PL_PARSE_FULL); -- Initialize plplot -pl.plinit() +pl.init() -- Fill up data points delta = 2.0*math.pi/NPTS @@ -32,10 +31,10 @@ data[i] = math.sin((i-1)*delta) end -pl.plcol0(1) -pl.plhist(data, -1.1, 1.1, 44, 0) -pl.plcol0(2) -pl.pllab("#frValue", "#frFrequency", +pl.col0(1) +pl.hist(data, -1.1, 1.1, 44, 0) +pl.col0(2) +pl.lab("#frValue", "#frFrequency", "#frPLplot Example 5 - Probability function of Oscillator") pl.plend() Modified: trunk/examples/lua/x10.lua =================================================================== --- trunk/examples/lua/x10.lua 2009-01-20 07:45:17 UTC (rev 9350) +++ trunk/examples/lua/x10.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -9,7 +9,6 @@ else require('plplotluac') end -pl=plplotluac ---------------------------------------------------------------------------- -- main @@ -18,18 +17,18 @@ ---------------------------------------------------------------------------- -- Parse and process command line arguments --- (void) plparseopts(&argc, argv, PL_PARSE_FULL); +pl.parseopts(arg, pl.PL_PARSE_FULL); -- Initialize plplot -pl.plinit() +pl.init() -pl.pladv(0) -pl.plvpor(0.0, 1.0, 0.0, 1.0) -pl.plwind(0.0, 1.0, 0.0, 1.0) -pl.plbox("bc", 0.0, 0, "bc", 0.0, 0) +pl.adv(0) +pl.vpor(0.0, 1.0, 0.0, 1.0) +pl.wind(0.0, 1.0, 0.0, 1.0) +pl.box("bc", 0.0, 0, "bc", 0.0, 0) -pl.plsvpa(50.0, 150.0, 50.0, 100.0) -pl.plwind(0.0, 1.0, 0.0, 1.0) -pl.plbox("bc", 0.0, 0, "bc", 0.0, 0) -pl.plptex(0.5, 0.5, 1.0, 0.0, 0.5, "BOX at (50,150,50,100)") +pl.svpa(50.0, 150.0, 50.0, 100.0) +pl.wind(0.0, 1.0, 0.0, 1.0) +pl.box("bc", 0.0, 0, "bc", 0.0, 0) +pl.ptex(0.5, 0.5, 1.0, 0.0, 0.5, "BOX at (50,150,50,100)") pl.plend() Modified: trunk/examples/lua/x12.lua =================================================================== --- trunk/examples/lua/x12.lua 2009-01-20 07:45:17 UTC (rev 9350) +++ trunk/examples/lua/x12.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -9,9 +9,8 @@ else require('plplotluac') end -pl=plplotluac -function plfbox(x0, y0) +function pl.fbox(x0, y0) x = {} y = {} @@ -23,10 +22,10 @@ y[3] = y0; x[4] = x0 + 1.; y[4] = 0.; - pl.plfill(x, y); - pl.plcol0(1); - pl.pllsty(1); - pl.plline(x, y); + pl.fill(x, y); + pl.col0(1); + pl.lsty(1); + pl.line(x, y); end -------------------------------------------------------------------------- @@ -40,17 +39,17 @@ -- Parse and process command line arguments --- (void) plparseopts(&argc, argv, PL_PARSE_FULL); +pl.parseopts(arg, pl.PL_PARSE_FULL); -- Initialize plplot -pl.plinit() +pl.init() -pl.pladv(0) -pl.plvsta() -pl.plwind(1980.0, 1990.0, 0.0, 35.0) -pl.plbox("bc", 1.0, 0, "bcnv", 10.0, 0) -pl.plcol0(2) -pl.pllab("Year", "Widget Sales (millions)", "#frPLplot Example 12") +pl.adv(0) +pl.vsta() +pl.wind(1980.0, 1990.0, 0.0, 35.0) +pl.box("bc", 1.0, 0, "bcnv", 10.0, 0) +pl.col0(2) +pl.lab("Year", "Widget Sales (millions)", "#frPLplot Example 12") y0[1] = 5 y0[2] = 15 @@ -64,11 +63,11 @@ y0[10] = 3 for i=1, 10 do - pl.plcol0(i); - pl.plpsty(0); - plfbox((1980. + i - 1), y0[i]); - pl.plptex((1980. + i - .5), (y0[i] + 1.), 1.0, 0.0, .5, tostring(y0[i])); - pl.plmtex("b", 1.0, (i * .1 - .05), 0.5, tostring(1980+i-1)); + pl.col0(i); + pl.psty(0); + pl.fbox((1980. + i - 1), y0[i]); + pl.ptex((1980. + i - .5), (y0[i] + 1.), 1.0, 0.0, .5, tostring(y0[i])); + pl.mtex("b", 1.0, (i * .1 - .05), 0.5, tostring(1980+i-1)); end pl.plend(); Modified: trunk/examples/lua/x13.lua =================================================================== --- trunk/examples/lua/x13.lua 2009-01-20 07:45:17 UTC (rev 9350) +++ trunk/examples/lua/x13.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -9,7 +9,6 @@ else require('plplotluac') end -pl=plplotluac text = { "Maurice", "Geoffrey", "Alan", "Rafael", "Vince" } @@ -24,19 +23,19 @@ -- Parse and process command line arguments --- (void) plparseopts(&argc, argv, PL_PARSE_FULL); +pl.parseopts(arg, pl.PL_PARSE_FULL); -- Initialize plplot -pl.plinit() +pl.init() -pl.pladv(0) +pl.adv(0) -- Ensure window has aspect ratio of one so circle is -- plotted as a circle. -pl.plvasp(1) -pl.plwind(0, 10, 0, 10) -pl.plcol0(2) +pl.vasp(1) +pl.wind(0, 10, 0, 10) +pl.col0(2) -- n.b. all theta quantities scaled by 2*M_PI/500 to be integers to avoid --floating point logic problems. @@ -56,11 +55,11 @@ y[j] = 5 + 3 * math.sin((2*math.pi/500)*theta) j = j + 1 end - pl.plcol0(i) - pl.plpsty(math.mod((i + 2), 8) + 1) - pl.plfill(x, y) - pl.plcol0(1) - pl.plline(x, y) + pl.col0(i) + pl.psty(math.mod((i + 2), 8) + 1) + pl.fill(x, y) + pl.col0(1) + pl.line(x, y) just = (2*math.pi/500)*(theta0 + theta1)/2 dx = .25 * math.cos(just) dy = .25 * math.sin(just) @@ -70,13 +69,13 @@ just = 1 end - pl.plptex((x[(j-1) / 2] + dx), (y[(j-1) / 2] + dy), 1.0, 0.0, just, text[i]); + pl.ptex((x[(j-1) / 2] + dx), (y[(j-1) / 2] + dy), 1.0, 0.0, just, text[i]); theta0 = theta1 - dthet end -pl.plfont(2) -pl.plschr(0, 1.3) -pl.plptex(5, 9, 1, 0, 0.5, "Percentage of Sales") +pl.font(2) +pl.schr(0, 1.3) +pl.ptex(5, 9, 1, 0, 0.5, "Percentage of Sales") pl.plend() Modified: trunk/examples/lua/x19.lua =================================================================== --- trunk/examples/lua/x19.lua 2009-01-20 07:45:17 UTC (rev 9350) +++ trunk/examples/lua/x19.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -11,7 +11,6 @@ else require('plplotluac') end -pl=plplotluac -------------------------------------------------------------------------- -- mapform19 @@ -39,14 +38,14 @@ -- Parse and process command line arguments --- (void) plparseopts(&argc, argv, PL_PARSE_FULL) +pl.parseopts(arg, pl.PL_PARSE_FULL) -- Longitude (x) and latitude (y) miny = -70 maxy = 80 -pl.plinit() +pl.init() -- Cartesian plots -- Most of world @@ -54,27 +53,27 @@ minx = 190 maxx = 190+360 -pl.plcol0(1) -pl.plenv(minx, maxx, miny, maxy, 1, -1) -pl.plmap(NULL, "usaglobe", minx, maxx, miny, maxy) +pl.col0(1) +pl.env(minx, maxx, miny, maxy, 1, -1) +pl.map(NULL, "usaglobe", minx, maxx, miny, maxy) -- The Americas minx = 190 maxx = 340 -pl.plcol0(1) -pl.plenv(minx, maxx, miny, maxy, 1, -1) -pl.plmap(NULL, "usaglobe", minx, maxx, miny, maxy) +pl.col0(1) +pl.env(minx, maxx, miny, maxy, 1, -1) +pl.map(NULL, "usaglobe", minx, maxx, miny, maxy) -- Polar, Northern hemisphere minx = 0 maxx = 360 -pl.plenv(-75., 75., -75., 75., 1, -1) -pl.plmap(mapform19,"globe", minx, maxx, miny, maxy) +pl.env(-75., 75., -75., 75., 1, -1) +pl.map(mapform19,"globe", minx, maxx, miny, maxy) -pl.pllsty(2) -pl.plmeridians(mapform19, 10, 10, 0, 360, -10, 80) +pl.lsty(2) +pl.meridians(mapform19, 10, 10, 0, 360, -10, 80) pl.plend() Modified: trunk/examples/lua/x24.lua =================================================================== --- trunk/examples/lua/x24.lua 2009-01-20 07:45:17 UTC (rev 9350) +++ trunk/examples/lua/x24.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -117,35 +117,34 @@ "#<0x10>Hasîtî", } -n=pl.parseopts(arg, pl.PL_PARSE_FULL) -print(n) +pl.parseopts(arg, pl.PL_PARSE_FULL) -pl.plinit() +pl.init() -pl.pladv(0) -pl.plvpor(0, 1, 0, 1) -pl.plwind(0, 1, 0, 1) -pl.plcol0(0) -pl.plbox("", 1, 0, "", 1, 0) +pl.adv(0) +pl.vpor(0, 1, 0, 1) +pl.wind(0, 1, 0, 1) +pl.col0(0) +pl.box("", 1, 0, "", 1, 0) -pl.plscmap0n(7) -pl.plscmap0(red, green, blue) +pl.scmap0n(7) +pl.scmap0(red, green, blue) -pl.plschr(0, 4) -pl.plfont(1) +pl.schr(0, 4) +pl.font(1) for i = 1, 4 do - pl.plcol0(i) - pl.plfill(px, py) + pl.col0(i) + pl.fill(px, py) for j = 1, 4 do py[j] = py[j] + 1/4 end end -pl.plcol0(0) +pl.col0(0) for i = 1, 12 do - pl.plptex(sx[i], sy[i], 1, 0, 0.5, peace[i]) + pl.ptex(sx[i], sy[i], 1, 0, 0.5, peace[i]) end pl.plend() Modified: trunk/examples/lua/x25.lua =================================================================== --- trunk/examples/lua/x25.lua 2009-01-20 07:45:17 UTC (rev 9350) +++ trunk/examples/lua/x25.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -9,7 +9,6 @@ else require('plplotluac') end -pl=plplotluac -------------------------------------------------------------------------- -- main @@ -24,12 +23,12 @@ -- Parse and process command line arguments --- (void) plparseopts(&argc, argv, PL_PARSE_FULL) +pl.parseopts(arg, pl.PL_PARSE_FULL) -- Initialize plplot -pl.plssub(3,3) -pl.plinit() +pl.ssub(3,3) +pl.init() xextreme[0][0] = -120.0 xextreme[0][1] = 120.0 yextreme[0][0] = -120.0 yextreme[0][1] = 120.0 xextreme[1][0] = -120.0 xextreme[1][1] = 120.0 yextreme[1][0] = 20.0 yextreme[1][1] = 120.0 Modified: trunk/examples/lua/x30.lua =================================================================== --- trunk/examples/lua/x30.lua 2009-01-20 07:45:17 UTC (rev 9350) +++ trunk/examples/lua/x30.lua 2009-01-20 08:00:07 UTC (rev 9351) @@ -32,7 +32,6 @@ else require('plplotluac') end -pl=plplotluac red = { 0, 255, 0, 0 } green = { 0, 0, 255, 0 } @@ -51,11 +50,11 @@ clevel = {} --- plparseopts (&argc, argv, PL_PARSE_FULL); +pl.parseopts (arg, pl.PL_PARSE_FULL); -pl.plinit() -pl.plscmap0n(4) -pl.plscmap0a(red, green, blue, alpha, 4) +pl.init() +pl.scmap0n(4) +pl.scmap0a(red, green, blue, alpha) -- Page 1: -- @@ -63,11 +62,11 @@ -- on each other with gradually increasing transparency. -- Set up the window -pl.pladv(0) -pl.plvpor(0, 1, 0, 1) -pl.plwind(0, 1, 0, 1) -pl.plcol0(0) -pl.plbox("", 1, 0, "", 1, 0) +pl.adv(0) +pl.vpor(0, 1, 0, 1) +pl.wind(0, 1, 0, 1) +pl.col0(0) +pl.box("", 1, 0, "", 1, 0) -- Draw the boxes for i = 0, 8 do @@ -75,12 +74,12 @@ -- Get a color, change its transparency and -- set it as the current color. - r, g, b, a = pl.plgcol0a(icol) - pl.plscol0a(icol, r, g, b, 1-i/9) - pl.plcol0(icol) + r, g, b, a = pl.gcol0a(icol) + pl.scol0a(icol, r, g, b, 1-i/9) + pl.col0(icol) -- Draw the rectangle - plfill(px, py) + pl.fill(px, py) -- Shift the rectangles coordinates for j = 1, 4 do @@ -97,9 +96,9 @@ -- opaque at the top. -- Set up the window -pladv(0) -plvpor(0.1, 0.9, 0.1, 0.9) -plwind(0.0, 1.0, 0.0, 1.0) +pl.adv(0) +pl.vpor(0.1, 0.9, 0.1, 0.9) +pl.wind(0.0, 1.0, 0.0, 1.0) -- Draw the boxes. There are 25 of them drawn on a 5 x 5 grid. for i = 0, 4 do @@ -112,10 +111,10 @@ -- We don't want the boxes to be transparent, so since we changed -- the colors transparencies in the first example we have to change -- the transparencies back to completely opaque. - icol = mod(i, 3) + 1 - r, g, b, a = plgcol0a(icol) - plscol0a(icol, r, g, b, 1) - plcol0(icol) + icol = math.mod(i, 3) + 1 + r, g, b, a = pl.gcol0a(icol) + pl.scol0a(icol, r, g, b, 1) + pl.col0(icol) for j = 0, 4 do -- Set box y position and draw the box. @@ -123,7 +122,7 @@ py[2] = py[1] py[3] = py[1] + 0.1 py[4] = py[3] - plfill(px, py) + pl.fill(px, py) end end @@ -132,8 +131,8 @@ -- Create the color map with 128 colors and use plscmap1la to initialize -- the color values with a linear varying transparency (or alpha) -plscmap1n(128) -plscmap1la(1, 2, pos, rcoord, gcoord, bcoord, acoord, rev) +pl.scmap1n(128) +pl.scmap1la(1, 2, pos, rcoord, gcoord, bcoord, acoord, rev) -- Create a 2 x 2 array that contains the z values (0.0 to 1.0) that will -- used for the shade plot. plshades will use linear interpolation to @@ -155,5 +154,5 @@ plFree2dGrid(z,2,2);--]] -plend() +pl.plend() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-21 08:11:04
|
Revision: 9363 http://plplot.svn.sourceforge.net/plplot/?rev=9363&view=rev Author: smekal Date: 2009-01-21 08:10:58 +0000 (Wed, 21 Jan 2009) Log Message: ----------- Add lua examples 3 and 4. Added Paths: ----------- trunk/examples/lua/x03.lua trunk/examples/lua/x04.lua Added: trunk/examples/lua/x03.lua =================================================================== --- trunk/examples/lua/x03.lua (rev 0) +++ trunk/examples/lua/x03.lua 2009-01-21 08:10:58 UTC (rev 9363) @@ -0,0 +1,98 @@ +-- $Id$ + +-- Polar plot demo. + + +-- initialise Lua bindings to pl.pl.ot +if string.sub(_VERSION,1,7)=='Lua 5.0' then + lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') + assert(lib)() +else + require('plplotluac') +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Generates polar plot, with 1-1 scaling. +---------------------------------------------------------------------------- + +x0 = {} +y0 = {} +x = {} +y = {} + +dtr = math.pi/180 +for i = 1, 361 do + x0[i] = math.cos(dtr * (i-1)) + y0[i] = math.sin(dtr * (i-1)) +end + +-- Parse and process command line arguments + +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Set orientation to landscape - note not all device drivers +-- support this, in particular most interactive drivers do not +pl.sori(1) + +-- Initialize plplot +pl.init() + +-- Set up viewport and window, but do not draw box +pl.env(-1.3, 1.3, -1.3, 1.3, 1, -2) +for i = 1, 10 do + for j = 1, 361 do + x[j] = 0.1 * i * x0[j] + y[j] = 0.1 * i * y0[j] + end + + -- Draw circles for polar grid + pl.line(x, y) +end + + +pl.col0(2) +for i=0, 11 do + theta = 30 * i + dx = math.cos(dtr * theta) + dy = math.sin(dtr * theta) + + -- Draw radial spokes for polar grid + + pl.join(0, 0, dx, dy) + + -- Write labels for angle + if theta < 9.99 then + offset = 0.45 + else + if theta < 99.9 then + offset = 0.30 + else + offset = 0.15 + end + end + + -- Slightly off zero to avoid floating point logic flips at 90 and 270 deg. + if dx >= -0.00001 then + pl.ptex(dx, dy, dx, dy, -offset, tostring(math.floor(theta))) + else + pl.ptex(dx, dy, -dx, -dy, 1.+offset, tostring(math.floor(theta))) + end +end + +-- Draw the graph +for i=1, 361 do + r = math.sin(dtr * (5 * i-1)) + x[i] = x0[i] * r + y[i] = y0[i] * r +end +pl.col0(3) +pl.line(x, y) + +pl.col0(4) +pl.mtex("t", 2, 0.5, 0.5, "#frPLplot Example 3 - r(#gh)=sin 5#gh") + +-- Close the plot at end +pl.plend() Property changes on: trunk/examples/lua/x03.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/lua/x04.lua =================================================================== --- trunk/examples/lua/x04.lua (rev 0) +++ trunk/examples/lua/x04.lua 2009-01-21 08:10:58 UTC (rev 9363) @@ -0,0 +1,93 @@ +-- $Id$ + +-- Log plot demo. + + +-- initialise Lua bindings to pl.pl.ot +if string.sub(_VERSION,1,7)=='Lua 5.0' then + lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') + assert(lib)() +else + require('plplotluac') +end + + +---------------------------------------------------------------------------- +-- plot1 +-- +-- Log-linear plot. +---------------------------------------------------------------------------- + +function plot1(type) + freql = {} + ampl = {} + phase = {} + + pl.adv(0) + + -- Set up data for log plot + f0 = 1 + for i=1, 101 do + freql[i] = -2 + (i-1) / 20 + freq = 10^freql[i] + ampl[i] = 20 * math.log10(1 / math.sqrt(1 + (freq / f0)^2)) + phase[i] = -(180 / math.pi) * math.atan(freq / f0) + end + + pl.vpor(0.15, 0.85, 0.1, 0.9) + pl.wind(-2, 3, -80, 0) + + -- Try different axis and labelling styles. + pl.col0(1) + if type == 0 then + pl.box("bclnst", 0, 0, "bnstv", 0, 0) + end + + if type == 1 then + pl.box("bcfghlnst", 0, 0, "bcghnstv", 0, 0) + end + + -- Plot ampl vs freq + pl.col0(2) + pl.line(freql, ampl) + pl.col0(1) + pl.ptex(1.6, -30, 1, -20, 0.5, "-20 dB/decade") + + -- Put labels on + pl.col0(1) + pl.mtex("b", 3.2, 0.5, 0.5, "Frequency") + pl.mtex("t", 2, 0.5, 0.5, "Single Pole Low-Pass Filter") + pl.col0(2) + pl.mtex("l", 5, 0.5, 0.5, "Amplitude (dB)") + + -- For the gridless case, put phase vs freq on same plot + if type == 0 then + pl.col0(1) + pl.wind(-2, 3, -100, 0) + pl.box("", 0, 0, "cmstv", 30, 3) + pl.col0(3) + pl.line(freql, phase) + pl.col0(3) + pl.mtex("r", 5, 0.5, 0.5, "Phase shift (degrees)") + end +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Illustration of logarithmic axes, and redefinition of window. +---------------------------------------------------------------------------- + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Initialize plplot +pl.init() +pl.font(2) + +-- Make log plots using two different styles. +plot1(0) +plot1(1) + +pl.plend() Property changes on: trunk/examples/lua/x04.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-26 22:57:12
|
Revision: 9400 http://plplot.svn.sourceforge.net/plplot/?rev=9400&view=rev Author: smekal Date: 2009-01-26 22:57:00 +0000 (Mon, 26 Jan 2009) Log Message: ----------- Added svn property. Implemented example 8 in lua. Modified Paths: -------------- trunk/examples/lua/x07.lua trunk/examples/lua/x08.lua Property Changed: ---------------- trunk/examples/lua/x07.lua trunk/examples/lua/x08.lua Modified: trunk/examples/lua/x07.lua =================================================================== --- trunk/examples/lua/x07.lua 2009-01-26 22:55:34 UTC (rev 9399) +++ trunk/examples/lua/x07.lua 2009-01-26 22:57:00 UTC (rev 9400) @@ -1,4 +1,4 @@ --- $Id: $ +-- $Id$ -- Font demo. Property changes on: trunk/examples/lua/x07.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Modified: trunk/examples/lua/x08.lua =================================================================== --- trunk/examples/lua/x08.lua 2009-01-26 22:55:34 UTC (rev 9399) +++ trunk/examples/lua/x08.lua 2009-01-26 22:57:00 UTC (rev 9400) @@ -1,4 +1,4 @@ ---[[ $Id: $ +--[[ $Id$ 3-d plot demo. @@ -22,7 +22,6 @@ --]] - -- initialise Lua bindings to PLplot if string.sub(_VERSION,1,7)=='Lua 5.0' then lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') @@ -56,8 +55,8 @@ end pl.scmap1n(256) - pl.scmap1l(0, i, h, l, s) -} + pl.scmap1l(0, i, h, l, s, {0} ) +end ---------------------------------------------------------------------------- -- main @@ -73,17 +72,15 @@ alt = { 60, 20 } az = { 30, 60 } -title[] = { +title = { "#frPLplot Example 8 - Alt=60, Az=30", - "#frPLplot Example 8 - Alt=20, Az=60", + "#frPLplot Example 8 - Alt=20, Az=60" } - -PLFLT *x, *y, **z -PLFLT xx, yy, r clevel = {} -nlevel = {} -rosen=1 +nlevel = LEVELS +rosen = 1 +sombrero = 0 -- Parse and process command line arguments pl.parseopts(arg, pl.PL_PARSE_FULL) @@ -93,91 +90,88 @@ pl.init() -- Allocate data structures +x = {} +y = {} +z = {} - x = (PLFLT *) calloc(XPTS, sizeof(PLFLT)) - y = (PLFLT *) calloc(YPTS, sizeof(PLFLT)) +for i=1, XPTS do + x[i] = (i-1-math.floor(XPTS/2)) / math.floor(XPTS/2) + if rosen~=0 then x[i]=x[i]*1.5 end +end - plAlloc2dGrid(&z, XPTS, YPTS) +for i=1, YPTS do + y[i] = (i-1-math.floor(YPTS/2)) / math.floor(YPTS/2) + if rosen~=0 then y[i]=y[i]+0.5 end +end - for (i = 0 i < XPTS i++) { - x[i] = ((double) (i - (XPTS / 2)) / (double) (XPTS / 2)) - if (rosen) - x[i] *= 1.5 - } - - for (i = 0 i < YPTS i++) { - y[i] = (double) (i - (YPTS / 2)) / (double) (YPTS / 2) - if (rosen) - y[i] += 0.5 - } - - for (i = 0 i < XPTS i++) { - xx = x[i] - for (j = 0 j < YPTS j++) { - yy = y[j] - if (rosen) { - z[i][j] = pow(1. - xx, 2.) + 100. * pow(yy - pow(xx, 2.), 2.) - -- The log argument may be zero for just the right grid. - if (z[i][j] > 0.) - z[i][j] = log(z[i][j]) - else - z[i][j] = -5. -- -MAXFLOAT would mess-up up the scale - } - else { - r = sqrt(xx * xx + yy * yy) - z[i][j] = exp(-r * r) * cos(2.0 * M_PI * r) - } - } - } - - plMinMax2dGrid(z, XPTS, YPTS, &zmax, &zmin) - step = (zmax-zmin)/(nlevel+1) - for (i=0 i<nlevel i++) - clevel[i] = zmin + step + step*i - - pllightsource(1.,1.,1.) - - for (k = 0 k < 2 k++) { - for (ifshade = 0 ifshade < 4 ifshade++) { - pladv(0) - plvpor(0.0, 1.0, 0.0, 0.9) - plwind(-1.0, 1.0, -0.9, 1.1) - plcol0(3) - plmtex("t", 1.0, 0.5, 0.5, title[k]) - plcol0(1) - if (rosen) - plw3d(1.0, 1.0, 1.0, -1.5, 1.5, -0.5, 1.5, zmin, zmax, alt[k], az[k]) +for i=1, XPTS do + xx = x[i] + z[i]= {} + for j=1, YPTS do + yy = y[j] + if rosen~=0 then + z[i][j] = (1-xx)^2 + 100*(yy-xx^2)^2 + -- The log argument may be zero for just the right grid. + if z[i][j] > 0 then + z[i][j] = math.log(z[i][j]) else - plw3d(1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, zmin, zmax, alt[k], az[k]) + z[i][j] = -5 -- MAXFLOAT would mess-up up the scale + end + else + r = math.sqrt(xx^2 + yy^2) + z[i][j] = math.exp(-r^2) * math.cos(2*math.pi*r) + end + end +end - plbox3("bnstu", "x axis", 0.0, 0, - "bnstu", "y axis", 0.0, 0, - "bcdmnstuv", "z axis", 0.0, 0) - plcol0(2) +zmax, zmin = pl.MinMax2dGrid(z) +step = (zmax-zmin)/(nlevel+1) +for i=1, nlevel do + clevel[i] = zmin + step + step*(i-1) +end - if (ifshade == 0) { -- diffuse light surface plot - cmap1_init(1) - plsurf3d(x, y, z, XPTS, YPTS, 0, NULL, 0) - } else if (ifshade == 1) { -- magnitude colored plot - cmap1_init(0) - plsurf3d(x, y, z, XPTS, YPTS, MAG_COLOR, NULL, 0) - } else if (ifshade == 2) { -- magnitude colored plot with faceted squares - cmap1_init(0) - plsurf3d(x, y, z, XPTS, YPTS, MAG_COLOR | FACETED, NULL, 0) - } else { -- magnitude colored plot with contours - cmap1_init(0) - plsurf3d(x, y, z, XPTS, YPTS, MAG_COLOR | SURF_CONT | BASE_CONT, clevel, nlevel) - } - } - } +pl.lightsource(1, 1, 1) --- Clean up +for k=1, 2 do + for ifshade = 1, 4 do + pl.adv(0) + pl.vpor(0, 1, 0, 0.9) + pl.wind(-1, 1, -0.9, 1.1) + pl.col0(3) + pl.mtex("t", 1, 0.5, 0.5, title[k]) + pl.col0(1) + if rosen~=0 then + pl.w3d(1, 1, 1, -1.5, 1.5, -0.5, 1.5, zmin, zmax, alt[k], az[k]) + else + pl.w3d(1, 1, 1, -1, 1, -1, 1, zmin, zmax, alt[k], az[k]) + end - free((void *) x) - free((void *) y) - plFree2dGrid(z, XPTS, YPTS) + pl.box3("bnstu", "x axis", 0, 0, + "bnstu", "y axis", 0, 0, + "bcdmnstuv", "z axis", 0, 0) + pl.col0(2) - plend() + if ifshade==1 then -- diffuse light surface plot + cmap1_init(1) + pl.surf3d(x, y, z, 0, clevel) + end + + if ifshade==2 then -- magnitude colored plot + cmap1_init(0) + pl.surf3d(x, y, z, pl.MAG_COLOR, {}) + end + + if ifshade==3 then -- magnitude colored plot with faceted squares + cmap1_init(0) + pl.surf3d(x, y, z, pl.MAG_COLOR or pl.FACETED, {}) + end + + if ifshade==4 then -- magnitude colored plot with contours + cmap1_init(0) + pl.surf3d(x, y, z, pl.MAG_COLOR or pl.SURF_CONT or pl.BASE_CONT, clevel) + end + end +end - exit(0) -} +-- Clean up +pl.plend() Property changes on: trunk/examples/lua/x08.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-27 08:21:38
|
Revision: 9406 http://plplot.svn.sourceforge.net/plplot/?rev=9406&view=rev Author: smekal Date: 2009-01-27 08:21:33 +0000 (Tue, 27 Jan 2009) Log Message: ----------- Added partly implement Lua example 22. Some more work on Lua example 9. Modified Paths: -------------- trunk/examples/lua/x09.lua Added Paths: ----------- trunk/examples/lua/x22.lua Modified: trunk/examples/lua/x09.lua =================================================================== --- trunk/examples/lua/x09.lua 2009-01-27 01:56:15 UTC (rev 9405) +++ trunk/examples/lua/x09.lua 2009-01-27 08:21:33 UTC (rev 9406) @@ -1,24 +1,24 @@ -/* $Id$ +--[[ $Id$ Contour plot demo. This file is part of PLplot. - PLplot is free software; you can redistribute it and/or modify + PLplot is free software you can redistribute it and/or modify it under the terms of the GNU General Library Public License as published - by the Free Software Foundation; either version 2 of the License, or + by the Free Software Foundation either version 2 of the License, or (at your option) any later version. PLplot is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of + but WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License - along with PLplot; if not, write to the Free Software + along with PLplot if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] -*/ -- initialise Lua bindings to PLplot if string.sub(_VERSION,1,7)=='Lua 5.0' then @@ -27,425 +27,392 @@ else require('example') end -pl=plplotluac -#define XPTS 35 /* Data points in x */ -#define YPTS 46 /* Data points in y */ -#define XSPA 2./(XPTS-1) -#define YSPA 2./(YPTS-1) +XPTS = 35 -- Data points in x +YPTS = 46 -- Data points in y -/* polar plot data */ -#define PERIMETERPTS 100 -#define RPTS 40 -#define THETAPTS 40 +XSPA = 2/(XPTS-1) +YSPA = 2/(YPTS-1) -/* potential plot data */ -#define PPERIMETERPTS 100 -#define PRPTS 40 -#define PTHETAPTS 64 -#define PNLEVEL 20 +-- polar plot data +PERIMETERPTS = 100 +RPTS = 40 +THETAPTS = 40 -static PLFLT clevel[11] = -{-1., -.8, -.6, -.4, -.2, 0, .2, .4, .6, .8, 1.}; +-- potential plot data +PPERIMETERPTS = 100 +PRPTS = 40 +PTHETAPTS = 64 +PNLEVEL = 20 -/* Transformation function */ +clevel = { -1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1} -PLFLT tr[6] = -{XSPA, 0.0, -1.0, 0.0, YSPA, -1.0}; +-- Transformation function +tr = { XSPA, 0, -1, 0, YSPA, -1 } -static void -mypltr(PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, void *pltr_data) -{ - *tx = tr[0] * x + tr[1] * y + tr[2]; - *ty = tr[3] * x + tr[4] * y + tr[5]; -} +function mypltr(x, y, pltr_data) + tx = tr[1] * x + tr[2] * y + tr[3] + ty = tr[4] * x + tr[5] * y + tr[6] + + return tx, ty +end -static void polar() -/*polar contour plot example.*/ -{ - int i,j; - PLcGrid2 cgrid2; - PLFLT **z; - PLFLT px[PERIMETERPTS], py[PERIMETERPTS]; - PLFLT t, r, theta; - PLFLT lev[10]; +--polar contour plot example. +function polar() + px = {} + py = {} + lev = {} - plenv(-1., 1., -1., 1., 0, -2); - plcol0(1); - -/*Perimeter*/ - for (i = 0; i < PERIMETERPTS; i++) { - t = (2.*M_PI/(PERIMETERPTS-1))*(double)i; - px[i] = cos(t); - py[i] = sin(t); - } - plline(PERIMETERPTS, px, py); + pl.env(-1, 1, -1, 1, 0, -2) + pl.col0(1) + + --Perimeter + for i=1, PERIMETERPTS do + t = (2*math.pi/(PERIMETERPTS-1))*(i-1) + px[i] = math.cos(t) + py[i] = math.sin(t) + end + pl.line(px, py) -/*create data to be contoured.*/ - plAlloc2dGrid(&cgrid2.xg, RPTS, THETAPTS); - plAlloc2dGrid(&cgrid2.yg, RPTS, THETAPTS); - plAlloc2dGrid(&z, RPTS, THETAPTS); - cgrid2.nx = RPTS; - cgrid2.ny = THETAPTS; + --create data to be contoured. + plAlloc2dGrid(&cgrid2.xg, RPTS, THETAPTS) + plAlloc2dGrid(&cgrid2.yg, RPTS, THETAPTS) + plAlloc2dGrid(&z, RPTS, THETAPTS) + cgrid2.nx = RPTS + cgrid2.ny = THETAPTS - for (i = 0; i < RPTS; i++) { - r = i/(double)(RPTS-1); - for (j = 0; j < THETAPTS; j++) { - theta = (2.*M_PI/(double)(THETAPTS-1))*(double)j; - cgrid2.xg[i][j] = r*cos(theta); - cgrid2.yg[i][j] = r*sin(theta); - z[i][j] = r; + for (i = 0 i < RPTS i++) { + r = i/(double)(RPTS-1) + for (j = 0 j < THETAPTS j++) { + theta = (2.*M_PI/(double)(THETAPTS-1))*(double)j + cgrid2.xg[i][j] = r*cos(theta) + cgrid2.yg[i][j] = r*sin(theta) + z[i][j] = r } } - for (i = 0; i < 10; i++) { - lev[i] = 0.05 + 0.10*(double) i; + for (i = 0 i < 10 i++) { + lev[i] = 0.05 + 0.10*(double) i } - plcol0(2); - plcont(z, RPTS, THETAPTS, 1, RPTS, 1, THETAPTS, lev, 10, - pltr2, (void *) &cgrid2); - plcol0(1); - pllab("", "", "Polar Contour Plot"); - plFree2dGrid(z, RPTS, THETAPTS); - plFree2dGrid(cgrid2.xg, RPTS, THETAPTS); - plFree2dGrid(cgrid2.yg, RPTS, THETAPTS); -} + pl.col0(2) + pl.cont(z, RPTS, THETAPTS, 1, RPTS, 1, THETAPTS, lev, 10, + pltr2, (void *) &cgrid2) + pl.col0(1) + pl.lab("", "", "Polar Contour Plot") +end -/*--------------------------------------------------------------------------*\ - * f2mnmx - * - * Returns min & max of input 2d array. -\*--------------------------------------------------------------------------*/ -static void -f2mnmx(PLFLT **f, PLINT nx, PLINT ny, PLFLT *fmin, PLFLT *fmax) -{ - int i, j; +---------------------------------------------------------------------------- +-- f2mnmx +-- +-- Returns min & max of input 2d array. +---------------------------------------------------------------------------- +function f2mnmx(f, nx, ny) + fmax = f[1][1] + fmin = fmax - *fmax = f[0][0]; - *fmin = *fmax; - - for (i = 0; i < nx; i++) { - for (j = 0; j < ny; j++) { - *fmax = MAX(*fmax, f[i][j]); - *fmin = MIN(*fmin, f[i][j]); - } - } + for i=1, nx do + for j=1, ny do + fmax = math.max(fmax, f[i][j]) + fmin = math.min(fmin, f[i][j]) + end + end + + return fmin, fmax } -static void potential() -/*shielded potential contour plot example.*/ -{ - int i,j; - PLcGrid2 cgrid2; - PLFLT rmax, xmin, xmax, x0, ymin, ymax, y0, zmin, zmax; - PLFLT peps, xpmin, xpmax, ypmin, ypmax; - PLFLT eps, q1, d1, q1i, d1i, q2, d2, q2i, d2i; - PLFLT div1, div1i, div2, div2i; - PLFLT **z; - PLINT nlevelneg, nlevelpos; - PLFLT dz, clevel, clevelneg[PNLEVEL], clevelpos[PNLEVEL]; - PLINT ncollin, ncolbox, ncollab; - PLFLT px[PPERIMETERPTS], py[PPERIMETERPTS]; - PLFLT t, r, theta; -/*create data to be contoured.*/ - plAlloc2dGrid(&cgrid2.xg, PRPTS, PTHETAPTS); - plAlloc2dGrid(&cgrid2.yg, PRPTS, PTHETAPTS); - plAlloc2dGrid(&z, PRPTS, PTHETAPTS); - cgrid2.nx = PRPTS; - cgrid2.ny = PTHETAPTS; +--shielded potential contour plot example. +function potential() + PLFLT dz, clevel, clevelneg[PNLEVEL], clevelpos[PNLEVEL] + PLFLT px[PPERIMETERPTS], py[PPERIMETERPTS] - for (i = 0; i < PRPTS; i++) { - r = 0.5 + (double) i; - for (j = 0; j < PTHETAPTS; j++) { - theta = (2.*M_PI/(double)(PTHETAPTS-1))*(0.5 + (double) j); - cgrid2.xg[i][j] = r*cos(theta); - cgrid2.yg[i][j] = r*sin(theta); + --create data to be contoured. + plAlloc2dGrid(&cgrid2.xg, PRPTS, PTHETAPTS) + plAlloc2dGrid(&cgrid2.yg, PRPTS, PTHETAPTS) + plAlloc2dGrid(&z, PRPTS, PTHETAPTS) + cgrid2.nx = PRPTS + cgrid2.ny = PTHETAPTS + + for (i = 0 i < PRPTS i++) { + r = 0.5 + (double) i + for (j = 0 j < PTHETAPTS j++) { + theta = (2.*M_PI/(double)(PTHETAPTS-1))*(0.5 + (double) j) + cgrid2.xg[i][j] = r*cos(theta) + cgrid2.yg[i][j] = r*sin(theta) } } - rmax = r; - f2mnmx(cgrid2.xg, PRPTS, PTHETAPTS, &xmin, &xmax); - f2mnmx(cgrid2.yg, PRPTS, PTHETAPTS, &ymin, &ymax); - x0 = (xmin + xmax)/2.; - y0 = (ymin + ymax)/2.; + rmax = r + f2mnmx(cgrid2.xg, PRPTS, PTHETAPTS, &xmin, &xmax) + f2mnmx(cgrid2.yg, PRPTS, PTHETAPTS, &ymin, &ymax) + x0 = (xmin + xmax)/2. + y0 = (ymin + ymax)/2. - /* Expanded limits */ - peps = 0.05; - xpmin = xmin - fabs(xmin)*peps; - xpmax = xmax + fabs(xmax)*peps; - ypmin = ymin - fabs(ymin)*peps; - ypmax = ymax + fabs(ymax)*peps; + -- Expanded limits + peps = 0.05 + xpmin = xmin - fabs(xmin)*peps + xpmax = xmax + fabs(xmax)*peps + ypmin = ymin - fabs(ymin)*peps + ypmax = ymax + fabs(ymax)*peps - /* Potential inside a conducting cylinder (or sphere) by method of images. + -- Potential inside a conducting cylinder (or sphere) by method of images. Charge 1 is placed at (d1, d1), with image charge at (d2, d2). Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). Also put in smoothing term at small distances. - */ + - eps = 2.; + eps = 2. - q1 = 1.; - d1 = rmax/4.; + q1 = 1. + d1 = rmax/4. - q1i = - q1*rmax/d1; - d1i = pow(rmax, 2.)/d1; + q1i = - q1*rmax/d1 + d1i = pow(rmax, 2.)/d1 - q2 = -1.; - d2 = rmax/4.; + q2 = -1. + d2 = rmax/4. - q2i = - q2*rmax/d2; - d2i = pow(rmax, 2.)/d2; + q2i = - q2*rmax/d2 + d2i = pow(rmax, 2.)/d2 - for (i = 0; i < PRPTS; i++) { - for (j = 0; j < PTHETAPTS; j++) { - div1 = sqrt(pow(cgrid2.xg[i][j]-d1, 2.) + pow(cgrid2.yg[i][j]-d1, 2.) + pow(eps, 2.)); - div1i = sqrt(pow(cgrid2.xg[i][j]-d1i, 2.) + pow(cgrid2.yg[i][j]-d1i, 2.) + pow(eps, 2.)); - div2 = sqrt(pow(cgrid2.xg[i][j]-d2, 2.) + pow(cgrid2.yg[i][j]+d2, 2.) + pow(eps, 2.)); - div2i = sqrt(pow(cgrid2.xg[i][j]-d2i, 2.) + pow(cgrid2.yg[i][j]+d2i, 2.) + pow(eps, 2.)); - z[i][j] = q1/div1 + q1i/div1i + q2/div2 + q2i/div2i; + for (i = 0 i < PRPTS i++) { + for (j = 0 j < PTHETAPTS j++) { + div1 = sqrt(pow(cgrid2.xg[i][j]-d1, 2.) + pow(cgrid2.yg[i][j]-d1, 2.) + pow(eps, 2.)) + div1i = sqrt(pow(cgrid2.xg[i][j]-d1i, 2.) + pow(cgrid2.yg[i][j]-d1i, 2.) + pow(eps, 2.)) + div2 = sqrt(pow(cgrid2.xg[i][j]-d2, 2.) + pow(cgrid2.yg[i][j]+d2, 2.) + pow(eps, 2.)) + div2i = sqrt(pow(cgrid2.xg[i][j]-d2i, 2.) + pow(cgrid2.yg[i][j]+d2i, 2.) + pow(eps, 2.)) + z[i][j] = q1/div1 + q1i/div1i + q2/div2 + q2i/div2i } } - f2mnmx(z, PRPTS, PTHETAPTS, &zmin, &zmax); -/* printf("%.15g %.15g %.15g %.15g %.15g %.15g %.15g %.15g \n", - q1, d1, q1i, d1i, q2, d2, q2i, d2i); + f2mnmx(z, PRPTS, PTHETAPTS, &zmin, &zmax) +-- printf("%.15g %.15g %.15g %.15g %.15g %.15g %.15g %.15g \n", + q1, d1, q1i, d1i, q2, d2, q2i, d2i) printf("%.15g %.15g %.15g %.15g %.15g %.15g \n", - xmin, xmax, ymin, ymax, zmin, zmax); */ + xmin, xmax, ymin, ymax, zmin, zmax) - /* Positive and negative contour levels.*/ - dz = (zmax-zmin)/(double) PNLEVEL; - nlevelneg = 0; - nlevelpos = 0; - for (i = 0; i < PNLEVEL; i++) { - clevel = zmin + ((double) i + 0.5)*dz; + -- Positive and negative contour levels. + dz = (zmax-zmin)/(double) PNLEVEL + nlevelneg = 0 + nlevelpos = 0 + for (i = 0 i < PNLEVEL i++) { + clevel = zmin + ((double) i + 0.5)*dz if (clevel <= 0.) - clevelneg[nlevelneg++] = clevel; + clevelneg[nlevelneg++] = clevel else - clevelpos[nlevelpos++] = clevel; + clevelpos[nlevelpos++] = clevel } - /* Colours! */ - ncollin = 11; - ncolbox = 1; - ncollab = 2; + -- Colours! + ncollin = 11 + ncolbox = 1 + ncollab = 2 - /* Finally start plotting this page! */ - pladv(0); - plcol0(ncolbox); + -- Finally start plotting this page! + pladv(0) + plcol0(ncolbox) - plvpas(0.1, 0.9, 0.1, 0.9, 1.0); - plwind(xpmin, xpmax, ypmin, ypmax); - plbox("", 0., 0, "", 0., 0); + plvpas(0.1, 0.9, 0.1, 0.9, 1.0) + plwind(xpmin, xpmax, ypmin, ypmax) + plbox("", 0., 0, "", 0., 0) - plcol0(ncollin); + plcol0(ncollin) if(nlevelneg >0) { - /* Negative contours */ - pllsty(2); + -- Negative contours + pllsty(2) plcont(z, PRPTS, PTHETAPTS, 1, PRPTS, 1, PTHETAPTS, - clevelneg, nlevelneg, pltr2, (void *) &cgrid2); + clevelneg, nlevelneg, pltr2, (void *) &cgrid2) } if(nlevelpos >0) { - /* Positive contours */ - pllsty(1); + -- Positive contours + pllsty(1) plcont(z, PRPTS, PTHETAPTS, 1, PRPTS, 1, PTHETAPTS, - clevelpos, nlevelpos, pltr2, (void *) &cgrid2); + clevelpos, nlevelpos, pltr2, (void *) &cgrid2) } - /* Draw outer boundary */ - for (i = 0; i < PPERIMETERPTS; i++) { - t = (2.*M_PI/(PPERIMETERPTS-1))*(double)i; - px[i] = x0 + rmax*cos(t); - py[i] = y0 + rmax*sin(t); + -- Draw outer boundary + for (i = 0 i < PPERIMETERPTS i++) { + t = (2.*M_PI/(PPERIMETERPTS-1))*(double)i + px[i] = x0 + rmax*cos(t) + py[i] = y0 + rmax*sin(t) } - plcol0(ncolbox); - plline(PPERIMETERPTS, px, py); + plcol0(ncolbox) + plline(PPERIMETERPTS, px, py) - plcol0(ncollab); - pllab("", "", "Shielded potential of charges in a conducting sphere"); + plcol0(ncollab) + pllab("", "", "Shielded potential of charges in a conducting sphere") - plFree2dGrid(z, PRPTS, PTHETAPTS); - plFree2dGrid(cgrid2.xg, PRPTS, PTHETAPTS); - plFree2dGrid(cgrid2.yg, PRPTS, PTHETAPTS); + plFree2dGrid(z, PRPTS, PTHETAPTS) + plFree2dGrid(cgrid2.xg, PRPTS, PTHETAPTS) + plFree2dGrid(cgrid2.yg, PRPTS, PTHETAPTS) } -/*--------------------------------------------------------------------------*\ - * main - * - * Does several contour plots using different coordinate mappings. -\*--------------------------------------------------------------------------*/ +---------------------------------------------------------------------------- +-- main +-- +-- Does several contour plots using different coordinate mappings. +---------------------------------------------------------------------------- +mark = 1500 +space = 1500 +xg1 = {} +yg1 = {} -int -main(int argc, const char *argv[]) -{ - int i, j; - PLFLT xx, yy, argx, argy, distort; - static PLINT mark = 1500, space = 1500; +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) - PLFLT **z, **w; - PLFLT xg1[XPTS], yg1[YPTS]; - PLcGrid cgrid1; - PLcGrid2 cgrid2; +-- Initialize plplot +pl.init() -/* Parse and process command line arguments */ +-- Set up function arrays +z = {} +w = {} - (void) plparseopts(&argc, argv, PL_PARSE_FULL); - -/* Initialize plplot */ - - plinit(); - -/* Set up function arrays */ - - plAlloc2dGrid(&z, XPTS, YPTS); - plAlloc2dGrid(&w, XPTS, YPTS); - - for (i = 0; i < XPTS; i++) { - xx = (double) (i - (XPTS / 2)) / (double) (XPTS / 2); - for (j = 0; j < YPTS; j++) { - yy = (double) (j - (YPTS / 2)) / (double) (YPTS / 2) - 1.0; - z[i][j] = xx * xx - yy * yy; - w[i][j] = 2 * xx * yy; +for (i = 0 i < XPTS i++) { + xx = (double) (i - (XPTS / 2)) / (double) (XPTS / 2) + for (j = 0 j < YPTS j++) { + yy = (double) (j - (YPTS / 2)) / (double) (YPTS / 2) - 1.0 + z[i][j] = xx * xx - yy * yy + w[i][j] = 2 * xx * yy } } -/* Set up grids */ +-- Set up grids - cgrid1.xg = xg1; - cgrid1.yg = yg1; - cgrid1.nx = XPTS; - cgrid1.ny = YPTS; + cgrid1.xg = xg1 + cgrid1.yg = yg1 + cgrid1.nx = XPTS + cgrid1.ny = YPTS - plAlloc2dGrid(&cgrid2.xg, XPTS, YPTS); - plAlloc2dGrid(&cgrid2.yg, XPTS, YPTS); - cgrid2.nx = XPTS; - cgrid2.ny = YPTS; + plAlloc2dGrid(&cgrid2.xg, XPTS, YPTS) + plAlloc2dGrid(&cgrid2.yg, XPTS, YPTS) + cgrid2.nx = XPTS + cgrid2.ny = YPTS - for (i = 0; i < XPTS; i++) { - for (j = 0; j < YPTS; j++) { - mypltr((PLFLT) i, (PLFLT) j, &xx, &yy, NULL); + for (i = 0 i < XPTS i++) { + for (j = 0 j < YPTS j++) { + mypltr((PLFLT) i, (PLFLT) j, &xx, &yy, NULL) - argx = xx * M_PI/2; - argy = yy * M_PI/2; - distort = 0.4; + argx = xx * M_PI/2 + argy = yy * M_PI/2 + distort = 0.4 - cgrid1.xg[i] = xx + distort * cos(argx); - cgrid1.yg[j] = yy - distort * cos(argy); + cgrid1.xg[i] = xx + distort * cos(argx) + cgrid1.yg[j] = yy - distort * cos(argy) - cgrid2.xg[i][j] = xx + distort * cos(argx) * cos(argy); - cgrid2.yg[i][j] = yy - distort * cos(argx) * cos(argy); + cgrid2.xg[i][j] = xx + distort * cos(argx) * cos(argy) + cgrid2.yg[i][j] = yy - distort * cos(argx) * cos(argy) } } -/* Plot using identity transform */ -/* - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0); - plcol0(2); - plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL); - plstyl(1, &mark, &space); - plcol0(3); - plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL); - plstyl(0, &mark, &space); - plcol0(1); - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow"); -*/ - pl_setcontlabelformat(4,3); - pl_setcontlabelparam(0.006, 0.3, 0.1, 1); - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0); - plcol0(2); - plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL); - plstyl(1, &mark, &space); - plcol0(3); - plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL); - plstyl(0, &mark, &space); - plcol0(1); - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow"); - pl_setcontlabelparam(0.006, 0.3, 0.1, 0); +-- Plot using identity transform +-- + plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) + plcol0(2) + plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL) + plstyl(1, &mark, &space) + plcol0(3) + plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL) + plstyl(0, &mark, &space) + plcol0(1) + pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") + + pl_setcontlabelformat(4,3) + pl_setcontlabelparam(0.006, 0.3, 0.1, 1) + plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) + plcol0(2) + plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL) + plstyl(1, &mark, &space) + plcol0(3) + plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL) + plstyl(0, &mark, &space) + plcol0(1) + pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") + pl_setcontlabelparam(0.006, 0.3, 0.1, 0) -/* Plot using 1d coordinate transform */ +-- Plot using 1d coordinate transform - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0); - plcol0(2); + plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) + plcol0(2) plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr1, (void *) &cgrid1); + pltr1, (void *) &cgrid1) - plstyl(1, &mark, &space); - plcol0(3); + plstyl(1, &mark, &space) + plcol0(3) plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr1, (void *) &cgrid1); - plstyl(0, &mark, &space); - plcol0(1); - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow"); - /* - pl_setcontlabelparam(0.006, 0.3, 0.1, 1); - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0); - plcol0(2); + pltr1, (void *) &cgrid1) + plstyl(0, &mark, &space) + plcol0(1) + pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") + -- + pl_setcontlabelparam(0.006, 0.3, 0.1, 1) + plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) + plcol0(2) plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr1, (void *) &cgrid1); + pltr1, (void *) &cgrid1) - plstyl(1, &mark, &space); - plcol0(3); + plstyl(1, &mark, &space) + plcol0(3) plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr1, (void *) &cgrid1); - plstyl(0, &mark, &space); - plcol0(1); - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow"); - pl_setcontlabelparam(0.006, 0.3, 0.1, 0); - */ -/* Plot using 2d coordinate transform */ + pltr1, (void *) &cgrid1) + plstyl(0, &mark, &space) + plcol0(1) + pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") + pl_setcontlabelparam(0.006, 0.3, 0.1, 0) + +-- Plot using 2d coordinate transform - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0); - plcol0(2); + plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) + plcol0(2) plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr2, (void *) &cgrid2); + pltr2, (void *) &cgrid2) - plstyl(1, &mark, &space); - plcol0(3); + plstyl(1, &mark, &space) + plcol0(3) plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr2, (void *) &cgrid2); - plstyl(0, &mark, &space); - plcol0(1); - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow"); - /* - pl_setcontlabelparam(0.006, 0.3, 0.1, 1); - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0); - plcol0(2); + pltr2, (void *) &cgrid2) + plstyl(0, &mark, &space) + plcol0(1) + pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") + -- + pl_setcontlabelparam(0.006, 0.3, 0.1, 1) + plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) + plcol0(2) plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr2, (void *) &cgrid2); + pltr2, (void *) &cgrid2) - plstyl(1, &mark, &space); - plcol0(3); + plstyl(1, &mark, &space) + plcol0(3) plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr2, (void *) &cgrid2); - plstyl(0, &mark, &space); - plcol0(1); - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow"); - */ - pl_setcontlabelparam(0.006, 0.3, 0.1, 0); - polar(); - /* - pl_setcontlabelparam(0.006, 0.3, 0.1, 1); - polar(); - */ - pl_setcontlabelparam(0.006, 0.3, 0.1, 0); - potential(); - /* - pl_setcontlabelparam(0.006, 0.3, 0.1, 1); - potential(); - */ + pltr2, (void *) &cgrid2) + plstyl(0, &mark, &space) + plcol0(1) + pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") + + pl_setcontlabelparam(0.006, 0.3, 0.1, 0) + polar() + -- + pl_setcontlabelparam(0.006, 0.3, 0.1, 1) + polar() + + pl_setcontlabelparam(0.006, 0.3, 0.1, 0) + potential() + -- + pl_setcontlabelparam(0.006, 0.3, 0.1, 1) + potential() + -/* Clean up */ +-- Clean up - plFree2dGrid(z, XPTS, YPTS); - plFree2dGrid(w, XPTS, YPTS); - plFree2dGrid(cgrid2.xg, XPTS, YPTS); - plFree2dGrid(cgrid2.yg, XPTS, YPTS); + plFree2dGrid(z, XPTS, YPTS) + plFree2dGrid(w, XPTS, YPTS) + plFree2dGrid(cgrid2.xg, XPTS, YPTS) + plFree2dGrid(cgrid2.yg, XPTS, YPTS) - plend(); + plend() - exit(0); + exit(0) } Added: trunk/examples/lua/x22.lua =================================================================== --- trunk/examples/lua/x22.lua (rev 0) +++ trunk/examples/lua/x22.lua 2009-01-27 08:21:33 UTC (rev 9406) @@ -0,0 +1,296 @@ +--[[ $Id: x22c.c 8033 2007-11-23 15:28:09Z andrewross $ + + Simple vector plot example + Copyright (C) 2004 Andrew Ross <and...@us...> + Copyright (C) 2004 Rafael Laboissiere + + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + + +-- initialise Lua bindings to PLplot +if string.sub(_VERSION,1,7)=='Lua 5.0' then + lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') + assert(lib)() +else + require('plplotluac') +end + + +-- Pairs of points making the line segments used to plot the user defined arrow +arrow_x = { -0.5, 0.5, 0.3, 0.5, 0.3, 0.5 } +arrow_y = { 0, 0, 0.2, 0, -0.2, 0 } +arrow2_x = { -0.5, 0.3, 0.3, 0.5, 0.3, 0.3 } +arrow2_y = { 0, 0, 0.2, 0, -0.2, 0 } + + +-- Vector plot of the circulation about the origin +function circulation() + nx = 20 + ny = 20 + dx = 1 + dy = 1 + + xmin = -nx/2*dx + xmax = nx/2*dx + ymin = -ny/2*dy + ymax = ny/2*dy + + cgrid2["xg"] = {} + cgrid2["yg"] = {} + cgrid2["nx"] = nx + cgrid2["ny"] = ny + u = {} + v = {} + + -- Create data - circulation around the origin. + for i=1, nx do + x = (i-1-nx/2+0.5)*dx + cgrid2["xg"][i] = {} + cgrid2["yg"][i] = {} + u[i] = {} + v[i] = {} + for j=1, ny do + y = (j-1-ny/2+0.5)*dy + cgrid2xg[i][j] = x + cgrid2yg[i][j] = y + u[i][j] = y + v[i][j] = -x + end + end + + -- Plot vectors with default arrows + pl.env(xmin, xmax, ymin, ymax, 0, 0) + pl.lab("(x)", "(y)", "#frPLplot Example 22 - circulation") + pl.col0(2) + pl.vect(u, v, nx, ny, 0.0, pltr2, (void *)&cgrid2 ) + pl.col0(1) +end + + +-- Vector plot of flow through a constricted pipe +function constriction() + nx = 20 + ny = 20 + dx = 1 + dy = 1 + + xmin = -nx/2*dx + xmax = nx/2*dx + ymin = -ny/2*dy + ymax = ny/2*dy + + cgrid2["xg"] = {} + cgrid2["yg"] = {} + cgrid2["nx"] = nx + cgrid2["ny"] = ny + u = {} + v = {} + + Q = 2.0 + for i=1, nx do + x = (i-1-nx/2+0.5)*dx + cgrid2["xg"][i] = {} + cgrid2["yg"][i] = {} + u[i] = {} + v[i] = {} + for j=1, ny do + y = (j-1-ny/2+0.5)*dy + cgrid2["xg"][i][j] = x + cgrid2["yg"][i][j] = y + b = ymax/4*(3-math.cos(math.pi*x/xmax)) + if math.abs(y)<b then + dbdx = ymax/4*math.sin(math.pi*x/xmax)*y/b + u[i][j] = Q*ymax/b + v[i][j] = dbdx*u[i][j] + else + u[i][j] = 0 + v[i][j] = 0 + end + end + end + + pl.env(xmin, xmax, ymin, ymax, 0, 0) + pl.lab("(x)", "(y)", "#frPLplot Example 22 - constriction") + pl.col0(2) + pl.vect(u, v, nx, ny, -0.5, pltr2, cgrid2) + pl.col0(1) +end + + +function f2mnmx(f, nx, ny) + fmax = f[1][1] + fmin = fmax + + for i=1, nx do + for j=1, ny do + fmax = math.max(fmax, f[i][j]) + fmin = math.min(fmin, f[i][j]) + end + end + + return fmin, fmax +} + +-- Vector plot of the gradient of a shielded potential (see example 9) + +void potential() { +#if !defined(WIN32) + const int nper = 100 + const int nlevel = 10 + const int nr = 20 + const int ntheta = 20 +#else +#define nper 100 +#define nlevel 10 +#define nr 20 +#define ntheta 20 +#endif + + int i,j + PLFLT eps, q1, d1, q1i, d1i, q2, d2, q2i, d2i + PLFLT div1, div1i, div2, div2i + PLFLT **u, **v, **z, r, theta, x, y, dz + PLFLT xmin, xmax, ymin, ymax, rmax, zmax, zmin + PLFLT px[nper], py[nper], clevel[nlevel] + PLcGrid2 cgrid2 + + + -- Create data to be plotted + plAlloc2dGrid(&cgrid2.xg,nr,ntheta) + plAlloc2dGrid(&cgrid2.yg,nr,ntheta) + plAlloc2dGrid(&u,nr,ntheta) + plAlloc2dGrid(&v,nr,ntheta) + plAlloc2dGrid(&z,nr,ntheta) + + cgrid2.nx = nr + cgrid2.ny = ntheta + + -- Potential inside a conducting cylinder (or sphere) by method of images. + * Charge 1 is placed at (d1, d1), with image charge at (d2, d2). + * Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). + * Also put in smoothing term at small distances. + + + rmax = (double) nr + + eps = 2. + + q1 = 1. + d1 = rmax/4. + + q1i = - q1*rmax/d1 + d1i = pow(rmax, 2.)/d1 + + q2 = -1. + d2 = rmax/4. + + q2i = - q2*rmax/d2 + d2i = pow(rmax, 2.)/d2 + + for (i = 0 i < nr i++) { + r = 0.5 + (double) i + for (j = 0 j < ntheta j++) { + theta = 2.*M_PI/(ntheta-1)*(0.5+(double)j) + x = r*cos(theta) + y = r*sin(theta) + cgrid2.xg[i][j] = x + cgrid2.yg[i][j] = y + div1 = sqrt(pow(x-d1, 2.) + pow(y-d1, 2.) + pow(eps, 2.)) + div1i = sqrt(pow(x-d1i, 2.) + pow(y-d1i, 2.) + pow(eps, 2.)) + div2 = sqrt(pow(x-d2, 2.) + pow(y+d2, 2.) + pow(eps, 2.)) + div2i = sqrt(pow(x-d2i, 2.) + pow(y+d2i, 2.) + pow(eps, 2.)) + z[i][j] = q1/div1 + q1i/div1i + q2/div2 + q2i/div2i + u[i][j] = -q1*(x-d1)/pow(div1,3.) - q1i*(x-d1i)/pow(div1i,3.0) + - q2*(x-d2)/pow(div2,3.) - q2i*(x-d2i)/pow(div2i,3.) + v[i][j] = -q1*(y-d1)/pow(div1,3.) - q1i*(y-d1i)/pow(div1i,3.0) + - q2*(y+d2)/pow(div2,3.) - q2i*(y+d2i)/pow(div2i,3.) + } + } + + f2mnmx(cgrid2.xg, nr, ntheta, &xmin, &xmax) + f2mnmx(cgrid2.yg, nr, ntheta, &ymin, &ymax) + f2mnmx(z, nr, ntheta, &zmin, &zmax) + + plenv(xmin, xmax, ymin, ymax, 0, 0) + pllab("(x)", "(y)", "#frPLplot Example 22 - potential gradient vector plot") + -- Plot contours of the potential + dz = (zmax-zmin)/(double) nlevel + for (i = 0 i < nlevel i++) { + clevel[i] = zmin + ((double) i + 0.5)*dz + } + plcol0(3) + pllsty(2) + plcont(z,nr,ntheta,1,nr,1,ntheta,clevel,nlevel,pltr2,(void *) &cgrid2) + pllsty(1) + plcol0(1) + + -- Plot the vectors of the gradient of the potential + plcol0(2) + plvect(u,v,nr,ntheta,25.0,pltr2,(void *)&cgrid2) + plcol0(1) + + -- Plot the perimeter of the cylinder + for (i=0i<nperi++) { + theta = (2.*M_PI/(nper-1))*(double)i + px[i] = rmax*cos(theta) + py[i] = rmax*sin(theta) + } + plline(nper,px,py) + + plFree2dGrid(z,nr,ntheta) + plFree2dGrid(cgrid2.xg,nr,ntheta) + plFree2dGrid(cgrid2.yg,nr,ntheta) + plFree2dGrid(u,nr,ntheta) + plFree2dGrid(v,nr,ntheta) + + +} + + +---------------------------------------------------------------------------- +-- main +-- +-- Generates several simple vector plots. +---------------------------------------------------------------------------- + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Initialize plplot +pl.init() + +circulation() + +narr = 6 +fill = 0 + +-- Set arrow style using arrow_x and arrow_y then +-- plot using these arrows. +pl.svect(arrow_x, arrow_y, narr, fill) +constriction() + +-- Set arrow style using arrow2_x and arrow2_y then +-- plot using these filled arrows. +fill = 1 +pl.svect(arrow2_x, arrow2_y, narr, fill) +constriction() + +potential() + +pl.plend() Property changes on: trunk/examples/lua/x22.lua ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-27 08:37:09
|
Revision: 9407 http://plplot.svn.sourceforge.net/plplot/?rev=9407&view=rev Author: smekal Date: 2009-01-27 08:37:04 +0000 (Tue, 27 Jan 2009) Log Message: ----------- Added svn properties. Lua example 1, 8 and 18 are working now. Added partly implemented example 15. Further work on example 22 (still not working). Modified Paths: -------------- trunk/examples/lua/x01.lua trunk/examples/lua/x08.lua trunk/examples/lua/x22.lua Added Paths: ----------- trunk/examples/lua/x15.lua trunk/examples/lua/x18.lua Property Changed: ---------------- trunk/examples/lua/x22.lua Modified: trunk/examples/lua/x01.lua =================================================================== --- trunk/examples/lua/x01.lua 2009-01-27 08:21:33 UTC (rev 9406) +++ trunk/examples/lua/x01.lua 2009-01-27 08:37:04 UTC (rev 9407) @@ -2,7 +2,7 @@ Simple line plot and multiple windows demo. - Copyright (C) 2004 Rafael Laboissiere + Copyright (C) 2008 Werner Smekal This file is part of PLplot. @@ -21,6 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA --]] + -- initialise Lua bindings to PLplot if string.sub(_VERSION,1,7)=='Lua 5.0' then lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') @@ -29,68 +30,115 @@ require('plplotluac') end --- Variables and data arrays used by plot generators +-- Variables and data arrays used by plot generators x = {} y = {} xs = {} ys = {} ---PLGraphicsIn gin fontset = 1 --- Options data structure definition. +f_name = "" -static PLOptionTable options[] = { -{ - "locate", -- Turns on test of API locate function - NULL, - NULL, - &locate_mode, - PL_OPT_BOOL, - "-locate", - "Turns on test of API locate function" }, -{ - "xor", -- Turns on test of xor function - NULL, - NULL, - &test_xor, - PL_OPT_BOOL, - "-xor", - "Turns on test of XOR" }, -{ - "font", -- For switching between font set 1 & 2 - NULL, - NULL, - &fontset, - PL_OPT_INT, - "-font number", - "Selects stroke font set (0 or 1, def:1)" }, -{ - "save", -- For saving in postscript - NULL, - NULL, - &f_name, - PL_OPT_STRING, - "-save filename", - "Save plot in color postscript `file'" }, -{ - NULL, -- option - NULL, -- handler - NULL, -- client data - NULL, -- address of variable to set - 0, -- mode flag - NULL, -- short syntax - NULL } -- long syntax -} -const char *notes[] = {"Make sure you get it right!", NULL} +function plot1(do_test) + for i = 1, 60 do + x[i] = xoff + xscale * (i) / 60 + y[i] = yoff + yscale * x[i]^2 + end --- Function prototypes + xmin = x[1] + xmax = x[60] + ymin = y[1] + ymax = y[60] -void plot1(int) -void plot2(void) -void plot3(void) + for i = 1, 6 do + xs[i] = x[(i-1) * 10 + 4] + ys[i] = y[(i-1) * 10 + 4] + end + -- Set up the viewport and window using PLENV. The range in X is + -- 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are + -- scaled separately (just = 0), and we just draw a labelled + -- box (axis = 0). + pl.col0(1) + pl.env(xmin, xmax, ymin, ymax, 0, 0) + pl.col0(2) + pl.lab("(x)", "(y)", "#frPLplot Example 1 - y=x#u2") + + -- Plot the data points + pl.col0(4) + pl.poin(xs, ys, 9) + + -- Draw the line through the data + pl.col0(3) + pl.line(x, y) +end + + +function plot2() + -- Set up the viewport and window using PLENV. The range in X is -2.0 to + -- 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately + --(just = 0), and we draw a box with axes (axis = 1). + pl.col0(1) + pl.env(-2, 10, -0.4, 1.2, 0, 1) + pl.col0(2) + pl.lab("(x)", "sin(x)/x", "#frPLplot Example 1 - Sinc Function") + + -- Fill up the arrays + for i=1, 100 do + x[i] = (i - 20) / 6 + y[i] = 1 + if x[i] ~= 0 then y[i] = math.sin(x[i])/x[i] end + end + + -- Draw the line + pl.col0(3) + pl.wid(2) + pl.line(x, y) + pl.wid(1) +end + + +function plot3() + space0 = { } + mark0 = { } + space1 = { 1500 } + mark1 = { 1500 } + + -- For the final graph we wish to override the default tick intervals, and + --so do not use plenv(). + pl.adv(0) + + -- Use standard viewport, and define X range from 0 to 360 degrees, Y range + --from -1.2 to 1.2. + pl.vsta() + pl.wind(0, 360, -1.2, 1.2) + + -- Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. + pl.col0(1) + pl.box("bcnst", 60, 2, "bcnstv", 0.2, 2) + + -- Superimpose a dashed line grid, with 1.5 mm marks and spaces. + -- plstyl expects a pointer! + pl.styl(mark1, space1) + pl.col0(2) + pl.box("g", 30, 0, "g", 0.2, 0) + pl.styl(mark0, space0) + + pl.col0(3) + pl.lab("Angle (degrees)", "sine", "#frPLplot Example 1 - Sine function") + + for i=1, 101 do + x[i] = 3.6*(i-1) + y[i] = math.sin(x[i]*math.pi/180) + end + + pl.col0(4) + pl.line(x, y) +end + + ---------------------------------------------------------------------------- -- main -- @@ -106,244 +154,64 @@ -- plplot initialization -- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) --- plMergeOpts(options, "x01c options", notes) --- plparseopts(&argc, argv, PL_PARSE_FULL) - -- Get version number, just for kicks - -pl.plgver(ver) +ver=pl.gver() print("PLplot library version: " .. ver) -- Initialize plplot -- Divide page into 2x2 plots -- Note: calling plstar replaces separate calls to plssub and plinit -pl.plstar(2,2) +pl.star(2,2) -- Select font set as per input flag - -if fontset != 0 then - pl.plfontld(1) +if fontset ~= 0 then + pl.fontld(1) else - pl.plfontld(0) + pl.fontld(0) end -- Set up the data -- Original case +xscale = 6 +yscale = 1 +xoff = 0 +yoff = 0 - xscale = 6. - yscale = 1. - xoff = 0. - yoff = 0. - -- Do a plot +plot1(0) - plot1(0) - -- Set up the data +xscale = 1 +yscale = 0.0014 +yoff = 0.0185 - xscale = 1. - yscale = 0.0014 - yoff = 0.0185 - -- Do a plot +digmax = 5 +pl.syax(digmax, 0) - digmax = 5 - plsyax(digmax, 0) +plot1(1) +plot2() +plot3() - plot1(1) +-- Show how to save a plot: +-- Open a new device, make it current, copy parameters, +-- and replay the plot buffer +if f_name~="" then -- command line option '-save filename' + print("The current plot was saved in color Postscript under the name " .. f_name .. ".\n") + cur_strm = pl.gstrm() -- get current stream + new_strm = pl.mkstrm() -- create a new one - plot2() + pl.sfnam(f_name) -- file name + pl.sdev("psc") -- device type - plot3() + pl.cpstrm(cur_strm, 0) -- copy old stream parameters to new stream + pl.replot() -- do the save by replaying the plot buffer + pl.plend1() -- finish the device - -- - * Show how to save a plot: - * Open a new device, make it current, copy parameters, - * and replay the plot buffer - + pl.sstrm(cur_strm) -- return to previous stream +end - if (f_name) { -- command line option '-save filename' - - printf("The current plot was saved in color Postscript under the name `%s'.\n", f_name) - plgstrm(&cur_strm) -- get current stream - plmkstrm(&new_strm) -- create a new one - - plsfnam(f_name) -- file name - plsdev("psc") -- device type - - plcpstrm(cur_strm, 0) -- copy old stream parameters to new stream - plreplot() -- do the save by replaying the plot buffer - plend1() -- finish the device - - plsstrm(cur_strm) -- return to previous stream - } - --- Let's get some user input - - if (locate_mode) { - for () { - if (! plGetCursor(&gin)) break - if (gin.keysym == PLK_Escape) break - - pltext() - if (gin.keysym < 0xFF && isprint(gin.keysym)) - printf("subwin = %d, wx = %f, wy = %f, dx = %f, dy = %f, c = '%c'\n", - gin.subwindow, gin.wX, gin.wY, gin.dX, gin.dY, gin.keysym) - else - printf("subwin = %d, wx = %f, wy = %f, dx = %f, dy = %f, c = 0x%02x\n", - gin.subwindow, gin.wX, gin.wY, gin.dX, gin.dY, gin.keysym) - - plgra() - } - } - - plclear() -- Don't forget to call plend() to finish off! - - plend() - exit(0) -} - - -- =============================================================== - -void -plot1(int do_test) -{ - int i - PLFLT xmin, xmax, ymin, ymax - - for (i = 0 i < 60 i++) { - x[i] = xoff + xscale * (i + 1) / 60.0 - y[i] = yoff + yscale * pow(x[i], 2.) - } - - xmin = x[0] - xmax = x[59] - ymin = y[0] - ymax = y[59] - - for (i = 0 i < 6 i++) { - xs[i] = x[i * 10 + 3] - ys[i] = y[i * 10 + 3] - } - --- Set up the viewport and window using PLENV. The range in X is - * 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are - * scaled separately (just = 0), and we just draw a labelled - * box (axis = 0). - - plcol0(1) - plenv(xmin, xmax, ymin, ymax, 0, 0) - plcol0(2) - pllab("(x)", "(y)", "#frPLplot Example 1 - y=x#u2") - --- Plot the data points - - plcol0(4) - plpoin(6, xs, ys, 9) - --- Draw the line through the data - - plcol0(3) - plline(60, x, y) - --- xor mode enable erasing a line/point/text by replotting it again --- it does not work in double buffering mode, however - - if (do_test && test_xor) { -#ifdef PL_HAVE_USLEEP - PLINT st - plxormod(1, &st) -- enter xor mode - if (st) { - for (i=0 i<60 i++) { - plpoin(1, x+i, y+i,9) -- draw a point - usleep(50000) -- wait a little - plflush() -- force an update of the tk driver - plpoin(1, x+i, y+i,9) -- erase point - } - plxormod(0, &st) -- leave xor mode - } -#else - printf("The -xor command line option can only be exercised if your " - "system\nhas usleep(), which does not seem to happen.\n") -#endif - } -} - - -- =============================================================== - -void -plot2(void) -{ - int i - --- Set up the viewport and window using PLENV. The range in X is -2.0 to - * 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately - * (just = 0), and we draw a box with axes (axis = 1). - - plcol0(1) - plenv(-2.0, 10.0, -0.4, 1.2, 0, 1) - plcol0(2) - pllab("(x)", "sin(x)/x", "#frPLplot Example 1 - Sinc Function") - --- Fill up the arrays - - for (i = 0 i < 100 i++) { - x[i] = (i - 19.0) / 6.0 - y[i] = 1.0 - if (x[i] != 0.0) - y[i] = sin(x[i]) / x[i] - } - --- Draw the line - - plcol0(3) - plwid(2) - plline(100, x, y) - plwid(1) -} - - -- =============================================================== - -void -plot3(void) -{ - PLINT space0 = 0, mark0 = 0, space1 = 1500, mark1 = 1500 - int i - --- For the final graph we wish to override the default tick intervals, and - * so do not use plenv(). - - pladv(0) - --- Use standard viewport, and define X range from 0 to 360 degrees, Y range - * from -1.2 to 1.2. - - plvsta() - plwind(0.0, 360.0, -1.2, 1.2) - --- Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. - - plcol0(1) - plbox("bcnst", 60.0, 2, "bcnstv", 0.2, 2) - --- Superimpose a dashed line grid, with 1.5 mm marks and spaces. - * plstyl expects a pointer! - - plstyl(1, &mark1, &space1) - plcol0(2) - plbox("g", 30.0, 0, "g", 0.2, 0) - plstyl(0, &mark0, &space0) - - plcol0(3) - pllab("Angle (degrees)", "sine", "#frPLplot Example 1 - Sine function") - - for (i = 0 i < 101 i++) { - x[i] = 3.6 * i - y[i] = sin(x[i] * M_PI / 180.0) - } - - plcol0(4) - plline(101, x, y) -} +pl.plend() Modified: trunk/examples/lua/x08.lua =================================================================== --- trunk/examples/lua/x08.lua 2009-01-27 08:21:33 UTC (rev 9406) +++ trunk/examples/lua/x08.lua 2009-01-27 08:37:04 UTC (rev 9407) @@ -55,7 +55,7 @@ end pl.scmap1n(256) - pl.scmap1l(0, i, h, l, s, {0} ) + pl.scmap1l(0, i, h, l, s, { 0 } ) -- TODO: last table should actually be empty end ---------------------------------------------------------------------------- Added: trunk/examples/lua/x15.lua =================================================================== --- trunk/examples/lua/x15.lua (rev 0) +++ trunk/examples/lua/x15.lua 2009-01-27 08:37:04 UTC (rev 9407) @@ -0,0 +1,281 @@ +-- $Id$ + +-- Shade plot demo. + +-- initialise Lua bindings to PLplot +if string.sub(_VERSION,1,7)=='Lua 5.0' then + lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') + assert(lib)() +else + require('plplotluac') +end + + +XPTS = 35 -- Data points in x +YPTS = 46 -- Data points in y + +z = {} + +-- Function prototypes + +----------------------------------------------------------------------------*\ + * cmap1_init1 + * + * Initializes color map 1 in HLS space. +\*-------------------------------------------------------------------------- + +static void +cmap1_init1(void) +{ + PLFLT i[4], h[4], l[4], s[4] + + i[0] = 0 -- left boundary + i[1] = 0.45 -- just before center + i[2] = 0.55 -- just after center + i[3] = 1 -- right boundary + + h[0] = 260 -- hue -- low: blue-violet + h[1] = 260 -- only change as we go over vertex + h[2] = 20 -- hue -- high: red + h[3] = 20 -- keep fixed + +#if 1 + l[0] = 0.5 -- lightness -- low + l[1] = 0.0 -- lightness -- center + l[2] = 0.0 -- lightness -- center + l[3] = 0.5 -- lightness -- high +#else + plscolbg(255,255,255) + l[0] = 0.5 -- lightness -- low + l[1] = 1.0 -- lightness -- center + l[2] = 1.0 -- lightness -- center + l[3] = 0.5 -- lightness -- high +#endif + s[0] = 1 -- maximum saturation + s[1] = 1 -- maximum saturation + s[2] = 1 -- maximum saturation + s[3] = 1 -- maximum saturation + + c_plscmap1l(0, 4, i, h, l, s, NULL) +} + +----------------------------------------------------------------------------*\ + * cmap1_init2 + * + * Initializes color map 1 in HLS space. +\*-------------------------------------------------------------------------- + +static void +cmap1_init2(void) +{ + PLFLT i[4], h[4], l[4], s[4] + + i[0] = 0 -- left boundary + i[1] = 0.45 -- just before center + i[2] = 0.55 -- just after center + i[3] = 1 -- right boundary + + h[0] = 260 -- hue -- low: blue-violet + h[1] = 260 -- only change as we go over vertex + h[2] = 20 -- hue -- high: red + h[3] = 20 -- keep fixed + +#if 1 + l[0] = 0.6 -- lightness -- low + l[1] = 0.0 -- lightness -- center + l[2] = 0.0 -- lightness -- center + l[3] = 0.6 -- lightness -- high +#else + plscolbg(255,255,255) + l[0] = 0.5 -- lightness -- low + l[1] = 1.0 -- lightness -- center + l[2] = 1.0 -- lightness -- center + l[3] = 0.5 -- lightness -- high +#endif + s[0] = 1 -- saturation -- low + s[1] = 0.5 -- saturation -- center + s[2] = 0.5 -- saturation -- center + s[3] = 1 -- saturation -- high + + c_plscmap1l(0, 4, i, h, l, s, NULL) +} + +----------------------------------------------------------------------------*\ + * plot1 + * + * Illustrates a single shaded region. +\*-------------------------------------------------------------------------- + +static void +plot1(void) +{ + PLFLT shade_min, shade_max, sh_color + PLINT sh_cmap = 0, sh_width + PLINT min_color = 0, min_width = 0, max_color = 0, max_width = 0 + + pladv(0) + plvpor(0.1, 0.9, 0.1, 0.9) + plwind(-1, 1, -1, 1.0) + +-- Plot using identity transform + + shade_min = zmin + (zmax-zmin)*0.4 + shade_max = zmin + (zmax-zmin)*0.6 + sh_color = 7 + sh_width = 2 + min_color = 9 + max_color = 2 + min_width = 2 + max_width = 2 + + plpsty(8) + plshade1(&z[0][0], XPTS, YPTS, NULL, -1., 1., -1., 1., + shade_min, shade_max, + sh_cmap, sh_color, sh_width, + min_color, min_width, max_color, max_width, + plfill, 1, NULL, NULL) + + plcol0(1) + plbox("bcnst", 0, 0, "bcnstv", 0, 0) + plcol0(2) + pllab("distance", "altitude", "Bogon flux") +} + +----------------------------------------------------------------------------*\ + * plot2 + * + * Illustrates multiple adjacent shaded regions, using different fill + * patterns for each region. +\*-------------------------------------------------------------------------- + +static void +plot2(void) +{ + PLFLT shade_min, shade_max, sh_color + PLINT sh_cmap = 0, sh_width + PLINT min_color = 0, min_width = 0, max_color = 0, max_width = 0 + int i + static PLINT nlin[10] = {1, 1, 1, 1, 1, 2, 2, 2, 2, 2} + static PLINT inc[10][2] = { {450, 0}, {-450, 0}, {0, 0}, {900, 0}, + {300, 0}, {450,-450}, {0, 900}, {0, 450}, + {450, -450}, {0, 900} } + static PLINT del[10][2] = { {2000, 2000}, {2000, 2000}, {2000, 2000}, + {2000, 2000}, {2000, 2000}, {2000, 2000}, + {2000, 2000}, {2000, 2000}, {4000, 4000}, + {4000, 2000} } + + sh_width = 2 + + pladv(0) + plvpor(0.1, 0.9, 0.1, 0.9) + plwind(-1, 1, -1, 1.0) + +-- Plot using identity transform + + for (i = 0 i < 10 i++) { + shade_min = zmin + (zmax - zmin) * i / 10.0 + shade_max = zmin + (zmax - zmin) * (i +1) / 10.0 + sh_color = i+6 + plpat(nlin[i],inc[i],del[i]) + + plshade1(&z[0][0], XPTS, YPTS, NULL, -1., 1., -1., 1., + shade_min, shade_max, + sh_cmap, sh_color, sh_width, + min_color, min_width, max_color, max_width, + plfill, 1, NULL, NULL) + } + + plcol0(1) + plbox("bcnst", 0, 0, "bcnstv", 0, 0) + plcol0(2) + pllab("distance", "altitude", "Bogon flux") +} + +---------------------------------------------------------------------------- +-- plot3 +-- +-- Illustrates shaded regions in 3d, using a different fill pattern for +-- each region. +---------------------------------------------------------------------------- + +function plot3() + xx = { {-1, 1, 1, -1, -1}, {-1, 1, 1, -1, -1} } + yy = { {1, 1, 0, 0, 1}, {-1, -1, 0, 0, -1} } + zz = { {0, 0, 1, 1, 0}, {0, 0, 1, 1, 0} } + + pl.adv(0) + pl.vpor(0.1, 0.9, 0.1, 0.9) + pl.wind(-1, 1, -1, 1.) + pl.w3d(1., 1., 1., -1, 1, -1, 1, 0, 1.5, 30, -40) + + -- Plot using identity transform + pl.col0(1) + pl.box3("bntu", "X", 0, 0, "bntu", "Y", 0, 0, "bcdfntu", "Z", 0.5, 0) + pl.col0(2) + pl.lab("","","3-d polygon filling") + + pl.col0(3) + pl.psty(1) + pl.line3(xx[1], yy[1], zz[1]) + pl.fill3(xx[1], yy[1], zz[1]) + pl.psty(2) + pl.line3(xx[2], yy[2], zz[2]) + pl.fill3(xx[2], yy[2], zz[2]) +end + +---------------------------------------------------------------------------- +-- f2mnmx +-- +-- Returns min & max of input 2d array. +---------------------------------------------------------------------------- + +function F(a,b) (f[a*ny+b]) + +function f2mnmx(PLFLT *f, PLINT nx, PLINT ny, PLFLT *fmin, PLFLT *fmax) + fmax = f[0] + fmin = fmax + + for i = 1, nx do + for j = 1,ny do + fmax = MAX(*fmax, F(i, j)) + fmin = MIN(*fmin, F(i, j)) + end + end +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Does a variety of shade plots. +---------------------------------------------------------------------------- + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Set up color map 0 +pl.scmap0n(3) + +-- Set up color map 1 +cmap1_init2() + +-- Initialize plplot +pl.init() + +-- Set up data array +for i=1, XPTS do + xx = ((i-1) - math.floor(XPTS/2)) / math.floor(XPTS/2) + z[i] = {} + for j=1, YPTS do + yy = ((j-1) - math.floor(YPTS/2)) / math.floor(YPTS/2) - 1 + + z[i][j] = xx*xx - yy*yy + (xx - yy)/(xx*xx+yy*yy + 0.1) + end +end +zmin, zmax = f2mnmx(z, XPTS, YPTS) + +plot1() +plot2() +plot3() + +pl.plend() Property changes on: trunk/examples/lua/x15.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/lua/x18.lua =================================================================== --- trunk/examples/lua/x18.lua (rev 0) +++ trunk/examples/lua/x18.lua 2009-01-27 08:37:04 UTC (rev 9407) @@ -0,0 +1,133 @@ +-- $Id$ + +-- 3-d line and point plot demo. Adapted from x08c.c. + + +-- initialise Lua bindings to PLplot +if string.sub(_VERSION,1,7)=='Lua 5.0' then + lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') + assert(lib)() +else + require('plplotluac') +end + + +function test_poly(k) + draw= { { 1, 1, 1, 1 }, + { 1, 0, 1, 0 }, + { 0, 1, 0, 1 }, + { 1, 1, 0, 0 } } + + x = {} + y = {} + z = {} + + pl.adv(0) + pl.vpor(0, 1, 0, 0.9) + pl.wind(-1, 1, -0.9, 1.1) + pl.col0(1) + pl.w3d(1, 1, 1, -1, 1, -1, 1, -1, 1, alt[k], az[k]) + pl.box3("bnstu", "x axis", 0.0, 0, + "bnstu", "y axis", 0.0, 0, + "bcdmnstuv", "z axis", 0.0, 0) + + pl.col0(2) + + -- x = r math.sin(phi) math.cos(theta) + -- y = r math.sin(phi) math.sin(theta) + -- z = r math.cos(phi) + -- r = 1 :=) + + for i=0, 19 do + for j=0, 19 do + x[0] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*i/20 ) + y[0] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*i/20 ) + z[0] = math.cos( math.pi*j/20.1 ) + + x[1] = math.sin( math.pi*(j+1)/20.1 ) * math.cos( 2*math.pi*i/20 ) + y[1] = math.sin( math.pi*(j+1)/20.1 ) * math.sin( 2*math.pi*i/20 ) + z[1] = math.cos( math.pi*(j+1)/20.1 ) + + x[2] = math.sin( math.pi*(j+1)/20.1 ) * math.cos( 2*math.pi*(i+1)/20 ) + y[2] = math.sin( math.pi*(j+1)/20.1 ) * math.sin( 2*math.pi*(i+1)/20 ) + z[2] = math.cos( math.pi*(j+1)/20.1 ) + + x[3] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*(i+1)/20 ) + y[3] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*(i+1)/20 ) + z[3] = math.cos( math.pi*j/20.1 ) + + x[4] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*i/20 ) + y[4] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*i/20 ) + z[4] = math.cos( math.pi*j/20.1 ) + + pl.poly3( x, y, z, draw[k], 1 ) + end + end + + pl.col0(3) + pl.mtex("t", 1, 0.5, 0.5, "unit radius sphere" ) +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Does a series of 3-d plots for a given data set, with different +-- viewing options in each plot. +---------------------------------------------------------------------------- + +NPTS = 1000 +opt = { 1, 0, 1, 0 } +alt = { 20, 35, 50, 65 } +az = { 30, 40, 50, 60 } + + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Initialize plplot +pl.init() + +for k=1, 4 do + test_poly(k) +end + +x = {} +y = {} +z = {} + +-- From the mind of a sick and twisted physicist... +for i=1, NPTS do + z[i] = -1 + 2 * (i-1) / NPTS + + -- Pick one ... + -- r = 1 - (i-1) / NPTS + r = z[i] + + x[i] = r * math.cos( 2 * math.pi * 6 * (i-1) / NPTS ) + y[i] = r * math.sin( 2 * math.pi * 6 * (i-1) / NPTS ) +end + +for k=1, 4 do + pl.adv(0) + pl.vpor(0, 1, 0, 0.9) + pl.wind(-1, 1, -0.9, 1.1) + pl.col0(1) + pl.w3d(1, 1, 1, -1, 1, -1, 1, -1, 1, alt[k], az[k]) + pl.box3("bnstu", "x axis", 0, 0, + "bnstu", "y axis", 0, 0, + "bcdmnstuv", "z axis", 0, 0) + + pl.col0(2) + + if opt[k]~=0 then + pl.line3( x, y, z ) + else + pl.poin3( x, y, z, 1 ) + end + + pl.col0(3) + pl.mtex("t", 1.0, 0.5, 0.5, "#frPLplot Example 18 - Alt=" .. alt[k] .. ", Az=" .. az[k]) +end + +pl.plend() Property changes on: trunk/examples/lua/x18.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/examples/lua/x22.lua =================================================================== --- trunk/examples/lua/x22.lua 2009-01-27 08:21:33 UTC (rev 9406) +++ trunk/examples/lua/x22.lua 2009-01-27 08:37:04 UTC (rev 9407) @@ -1,4 +1,4 @@ ---[[ $Id: x22c.c 8033 2007-11-23 15:28:09Z andrewross $ +--[[ $Id$ Simple vector plot example Copyright (C) 2004 Andrew Ross <and...@us...> Property changes on: trunk/examples/lua/x22.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-28 20:34:27
|
Revision: 9411 http://plplot.svn.sourceforge.net/plplot/?rev=9411&view=rev Author: smekal Date: 2009-01-28 20:34:17 +0000 (Wed, 28 Jan 2009) Log Message: ----------- Lua example 9 practially finished porting but doesn't work, since lua bindings are missing functionality. Lua example 16 added, but not finished yet. Modified Paths: -------------- trunk/examples/lua/x09.lua Added Paths: ----------- trunk/examples/lua/x16.lua Modified: trunk/examples/lua/x09.lua =================================================================== --- trunk/examples/lua/x09.lua 2009-01-27 22:35:39 UTC (rev 9410) +++ trunk/examples/lua/x09.lua 2009-01-28 20:34:17 UTC (rev 9411) @@ -76,31 +76,33 @@ pl.line(px, py) --create data to be contoured. - plAlloc2dGrid(&cgrid2.xg, RPTS, THETAPTS) - plAlloc2dGrid(&cgrid2.yg, RPTS, THETAPTS) - plAlloc2dGrid(&z, RPTS, THETAPTS) - cgrid2.nx = RPTS - cgrid2.ny = THETAPTS + cgrid2["xg"] = {} + cgrid2["yg"] = {} + cgrid2["nx"] = RPTS + cgrid2["ny"] = THETAPTS + z = {} - for (i = 0 i < RPTS i++) { - r = i/(double)(RPTS-1) - for (j = 0 j < THETAPTS j++) { - theta = (2.*M_PI/(double)(THETAPTS-1))*(double)j - cgrid2.xg[i][j] = r*cos(theta) - cgrid2.yg[i][j] = r*sin(theta) - z[i][j] = r - } - } + for i = 1, RPTS do + r = (i-1)/(RPTS-1) + cgrid2["xg"][i] = {} + cgrid2["yg"][i] = {} + z = {} + for j = 1, THETAPTS do + theta = (2*math.pi/(THETAPTS-1))*(j-1) + cgrid2["xg"][i][j] = r*math.cos(theta) + cgrid2["yg"][i][j] = r*math.sin(theta) + z[i][j] = r + end + end - for (i = 0 i < 10 i++) { - lev[i] = 0.05 + 0.10*(double) i - } + for i = 1, 10 do + lev[i] = 0.05 + 0.10*(i-1) + end - pl.col0(2) - pl.cont(z, RPTS, THETAPTS, 1, RPTS, 1, THETAPTS, lev, 10, - pltr2, (void *) &cgrid2) - pl.col0(1) - pl.lab("", "", "Polar Contour Plot") + pl.col0(2) + pl.cont(z, 1, RPTS, 1, THETAPTS, lev, cgrid2) + pl.col0(1) + pl.lab("", "", "Polar Contour Plot") end @@ -121,134 +123,131 @@ end return fmin, fmax -} +end --shielded potential contour plot example. function potential() - PLFLT dz, clevel, clevelneg[PNLEVEL], clevelpos[PNLEVEL] - PLFLT px[PPERIMETERPTS], py[PPERIMETERPTS] + clevelneg = {} + clevelpos = {} + px = {} + py = {} - --create data to be contoured. - plAlloc2dGrid(&cgrid2.xg, PRPTS, PTHETAPTS) - plAlloc2dGrid(&cgrid2.yg, PRPTS, PTHETAPTS) - plAlloc2dGrid(&z, PRPTS, PTHETAPTS) - cgrid2.nx = PRPTS - cgrid2.ny = PTHETAPTS + --create data to be contoured. + cgrid2["xg"] = {} + cgrid2["yg"] = {} + cgrid2["nx"] = PRPTS + cgrid2["ny"] = PTHETAPTS + z = {} - for (i = 0 i < PRPTS i++) { - r = 0.5 + (double) i - for (j = 0 j < PTHETAPTS j++) { - theta = (2.*M_PI/(double)(PTHETAPTS-1))*(0.5 + (double) j) - cgrid2.xg[i][j] = r*cos(theta) - cgrid2.yg[i][j] = r*sin(theta) - } - } + for i = 1, PRPTS do + r = 0.5 + (i-1) + cgrid2["xg"][i] = {} + cgrid2["yg"][i] = {} + for j = 1, PTHETAPTS do + theta = 2*math.pi/(PTHETAPTS-1)*(j-0.5) + cgrid2["xg"][i][j] = r*cos(theta) + cgrid2["yg"][i][j] = r*sin(theta) + end + end - rmax = r - f2mnmx(cgrid2.xg, PRPTS, PTHETAPTS, &xmin, &xmax) - f2mnmx(cgrid2.yg, PRPTS, PTHETAPTS, &ymin, &ymax) - x0 = (xmin + xmax)/2. - y0 = (ymin + ymax)/2. + rmax = PRPTS-0.5 + xmin, xmax = f2mnmx(cgrid2["xg"], PRPTS, PTHETAPTS) + ymin, ymax = f2mnmx(cgrid2["yg"], PRPTS, PTHETAPTS) + x0 = (xmin + xmax)/2 + y0 = (ymin + ymax)/2 - -- Expanded limits - peps = 0.05 - xpmin = xmin - fabs(xmin)*peps - xpmax = xmax + fabs(xmax)*peps - ypmin = ymin - fabs(ymin)*peps - ypmax = ymax + fabs(ymax)*peps + -- Expanded limits + peps = 0.05 + xpmin = xmin - math.abs(xmin)*peps + xpmax = xmax + math.abs(xmax)*peps + ypmin = ymin - math.abs(ymin)*peps + ypmax = ymax + math.abs(ymax)*peps - -- Potential inside a conducting cylinder (or sphere) by method of images. - Charge 1 is placed at (d1, d1), with image charge at (d2, d2). - Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). - Also put in smoothing term at small distances. - + -- Potential inside a conducting cylinder (or sphere) by method of images. + -- Charge 1 is placed at (d1, d1), with image charge at (d2, d2). + -- Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). + -- Also put in smoothing term at small distances. + + eps = 2 + q1 = 1 + d1 = rmax/4 - eps = 2. + q1i = - q1*rmax/d1 + d1i = rmax^2/d1 - q1 = 1. - d1 = rmax/4. + q2 = -1 + d2 = rmax/4 - q1i = - q1*rmax/d1 - d1i = pow(rmax, 2.)/d1 + q2i = - q2*rmax/d2 + d2i = rmax^2/d2 - q2 = -1. - d2 = rmax/4. + for i = 1, PRPTS do + z[i] = {} + for j = 1, PTHETAPTS do + div1 = math.sqrt((cgrid2.xg[i][j]-d1)^2 + (cgrid2.yg[i][j]-d1)^2 + eps^2) + div1i = math.sqrt((cgrid2.xg[i][j]-d1i)^2 + (cgrid2.yg[i][j]-d1i)^2 + eps^2) + div2 = math.sqrt((cgrid2.xg[i][j]-d2)^2 + (cgrid2.yg[i][j]+d2)^2 + eps^2) + div2i = math.sqrt((cgrid2.xg[i][j]-d2i)^2 + (cgrid2.yg[i][j]+d2i)^2 + eps^2) + z[i][j] = q1/div1 + q1i/div1i + q2/div2 + q2i/div2i + end + end + zmin, zmax = f2mnmx(z, PRPTS, PTHETAPTS) - q2i = - q2*rmax/d2 - d2i = pow(rmax, 2.)/d2 + -- Positive and negative contour levels. + dz = (zmax-zmin)/PNLEVEL + nlevelneg = 1 + nlevelpos = 1 + for i = 1, PNLEVEL do + clevel = zmin + (i-0.5)*dz + if clevel <= 0 then + clevelneg[nlevelneg] = clevel + nlevelneg = nlevelneg + 1 + else + clevelpos[nlevelpos] = clevel + nlevelpos = nlevelpos + 1 + end + end + + -- Colours! + ncollin = 11 + ncolbox = 1 + ncollab = 2 - for (i = 0 i < PRPTS i++) { - for (j = 0 j < PTHETAPTS j++) { - div1 = sqrt(pow(cgrid2.xg[i][j]-d1, 2.) + pow(cgrid2.yg[i][j]-d1, 2.) + pow(eps, 2.)) - div1i = sqrt(pow(cgrid2.xg[i][j]-d1i, 2.) + pow(cgrid2.yg[i][j]-d1i, 2.) + pow(eps, 2.)) - div2 = sqrt(pow(cgrid2.xg[i][j]-d2, 2.) + pow(cgrid2.yg[i][j]+d2, 2.) + pow(eps, 2.)) - div2i = sqrt(pow(cgrid2.xg[i][j]-d2i, 2.) + pow(cgrid2.yg[i][j]+d2i, 2.) + pow(eps, 2.)) - z[i][j] = q1/div1 + q1i/div1i + q2/div2 + q2i/div2i - } - } - f2mnmx(z, PRPTS, PTHETAPTS, &zmin, &zmax) --- printf("%.15g %.15g %.15g %.15g %.15g %.15g %.15g %.15g \n", - q1, d1, q1i, d1i, q2, d2, q2i, d2i) - printf("%.15g %.15g %.15g %.15g %.15g %.15g \n", - xmin, xmax, ymin, ymax, zmin, zmax) + -- Finally start plotting this page! + pl.adv(0) + pl.col0(ncolbox) - -- Positive and negative contour levels. - dz = (zmax-zmin)/(double) PNLEVEL - nlevelneg = 0 - nlevelpos = 0 - for (i = 0 i < PNLEVEL i++) { - clevel = zmin + ((double) i + 0.5)*dz - if (clevel <= 0.) - clevelneg[nlevelneg++] = clevel - else - clevelpos[nlevelpos++] = clevel - } - -- Colours! - ncollin = 11 - ncolbox = 1 - ncollab = 2 + pl.vpas(0.1, 0.9, 0.1, 0.9, 1) + pl.wind(xpmin, xpmax, ypmin, ypmax) + pl.box("", 0, 0, "", 0, 0) - -- Finally start plotting this page! - pladv(0) - plcol0(ncolbox) + pl.col0(ncollin) + if nlevelneg>1 then + -- Negative contours + pl.lsty(2) + pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelneg, pltr2, cgrid2) + end - plvpas(0.1, 0.9, 0.1, 0.9, 1.0) - plwind(xpmin, xpmax, ypmin, ypmax) - plbox("", 0., 0, "", 0., 0) + if nlevelpos>1 then + -- Positive contours + pl.lsty(1) + pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelpos, pltr2, cgrid2) + end + + -- Draw outer boundary + for i = 1, PPERIMETERPTS do + t = (2*math.pi/(PPERIMETERPTS-1))*(i-1) + px[i] = x0 + rmax*math.cos(t) + py[i] = y0 + rmax*math.sin(t) + end - plcol0(ncollin) - if(nlevelneg >0) { - -- Negative contours - pllsty(2) - plcont(z, PRPTS, PTHETAPTS, 1, PRPTS, 1, PTHETAPTS, - clevelneg, nlevelneg, pltr2, (void *) &cgrid2) - } - - if(nlevelpos >0) { - -- Positive contours - pllsty(1) - plcont(z, PRPTS, PTHETAPTS, 1, PRPTS, 1, PTHETAPTS, - clevelpos, nlevelpos, pltr2, (void *) &cgrid2) - } - - -- Draw outer boundary - for (i = 0 i < PPERIMETERPTS i++) { - t = (2.*M_PI/(PPERIMETERPTS-1))*(double)i - px[i] = x0 + rmax*cos(t) - py[i] = y0 + rmax*sin(t) - } - - plcol0(ncolbox) - plline(PPERIMETERPTS, px, py) - - plcol0(ncollab) - pllab("", "", "Shielded potential of charges in a conducting sphere") - - plFree2dGrid(z, PRPTS, PTHETAPTS) - plFree2dGrid(cgrid2.xg, PRPTS, PTHETAPTS) - plFree2dGrid(cgrid2.yg, PRPTS, PTHETAPTS) -} + pl.col0(ncolbox) + pl.line(px, py) + + pl.col0(ncollab) + pl.lab("", "", "Shielded potential of charges in a conducting sphere") +end ---------------------------------------------------------------------------- @@ -256,10 +255,8 @@ -- -- Does several contour plots using different coordinate mappings. ---------------------------------------------------------------------------- -mark = 1500 -space = 1500 -xg1 = {} -yg1 = {} +mark = { 1500 } +space = { 1500 } -- Parse and process command line arguments pl.parseopts(arg, pl.PL_PARSE_FULL) @@ -271,148 +268,89 @@ z = {} w = {} -for (i = 0 i < XPTS i++) { - xx = (double) (i - (XPTS / 2)) / (double) (XPTS / 2) - for (j = 0 j < YPTS j++) { - yy = (double) (j - (YPTS / 2)) / (double) (YPTS / 2) - 1.0 - z[i][j] = xx * xx - yy * yy +for i = 1, XPTS do + xx = (i-1 - math.floor(XPTS/2)) / math.floor(XPTS/2) + z[i] = {} + w[i] = {} + for j = 1, YPTS do + yy = (j-1 - math.floor(YPTS/2)) / math.floor(YPTS/2) - 1 + z[i][j] = xx^2 - yy^2 w[i][j] = 2 * xx * yy - } - } + end +end -- Set up grids +cgrid1 = {} +cgrid1["xg"] = {} +cgrid1["yg"] = {} +cgrid1["nx"] = XPTS +cgrid1["ny"] = YPTS +cgrid2 = {} +cgrid2["xg"] = {} +cgrid2["yg"] = {} +cgrid2["nx"] = XPTS +cgrid2["ny"] = YPTS - cgrid1.xg = xg1 - cgrid1.yg = yg1 - cgrid1.nx = XPTS - cgrid1.ny = YPTS +for i = 1, XPTS do + cgrid2["xg"][i] = {} + cgrid2["yg"][i] = {} + for j = 1, YPTS do + xx, yy = mypltr(i, j) - plAlloc2dGrid(&cgrid2.xg, XPTS, YPTS) - plAlloc2dGrid(&cgrid2.yg, XPTS, YPTS) - cgrid2.nx = XPTS - cgrid2.ny = YPTS + argx = xx * math.pi/2 + argy = yy * math.pi/2 + distort = 0.4 - for (i = 0 i < XPTS i++) { - for (j = 0 j < YPTS j++) { - mypltr((PLFLT) i, (PLFLT) j, &xx, &yy, NULL) + cgrid1["xg"][i] = xx + distort * math.cos(argx) + cgrid1["yg"][j] = yy - distort * math.cos(argy) - argx = xx * M_PI/2 - argy = yy * M_PI/2 - distort = 0.4 + cgrid2["xg"][i][j] = xx + distort * math.cos(argx) * math.cos(argy) + cgrid2["yg"][i][j] = yy - distort * math.cos(argx) * math.cos(argy) + end +end - cgrid1.xg[i] = xx + distort * cos(argx) - cgrid1.yg[j] = yy - distort * cos(argy) - - cgrid2.xg[i][j] = xx + distort * cos(argx) * cos(argy) - cgrid2.yg[i][j] = yy - distort * cos(argx) * cos(argy) - } - } - -- Plot using identity transform --- - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) - plcol0(2) - plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL) - plstyl(1, &mark, &space) - plcol0(3) - plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL) - plstyl(0, &mark, &space) - plcol0(1) - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") - - pl_setcontlabelformat(4,3) - pl_setcontlabelparam(0.006, 0.3, 0.1, 1) - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) - plcol0(2) - plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL) - plstyl(1, &mark, &space) - plcol0(3) - plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, NULL) - plstyl(0, &mark, &space) - plcol0(1) - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") - pl_setcontlabelparam(0.006, 0.3, 0.1, 0) +pl.setcontlabelformat(4, 3) +pl.setcontlabelparam(0.006, 0.3, 0.1, 1) +pl.env(-1, 1, -1, 1, 0, 0) +pl.col0(2) +pl.cont(z, 1, XPTS, 1, YPTS, clevel, mypltr, nil) +pl.styl(mark, space) +pl.col0(3) +pl.cont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, nil) +pl.styl({}, {}) +pl.col0(1) +pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") +pl.setcontlabelparam(0.006, 0.3, 0.1, 0) -- Plot using 1d coordinate transform - - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) - plcol0(2) - plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr1, (void *) &cgrid1) - - plstyl(1, &mark, &space) - plcol0(3) - plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr1, (void *) &cgrid1) - plstyl(0, &mark, &space) - plcol0(1) - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") - -- - pl_setcontlabelparam(0.006, 0.3, 0.1, 1) - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) - plcol0(2) - plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr1, (void *) &cgrid1) - - plstyl(1, &mark, &space) - plcol0(3) - plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr1, (void *) &cgrid1) - plstyl(0, &mark, &space) - plcol0(1) - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") - pl_setcontlabelparam(0.006, 0.3, 0.1, 0) +pl.env(-1, 1, -1, 1, 0, 0) +pl.col0(2) +pl.cont(z, 1, XPTS, 1, YPTS, clevel, 11, pltr1, cgrid1) +pl.styl(mark, space) +pl.col0(3) +pl.cont(w, 1, XPTS, 1, YPTS, clevel, 11, pltr1, cgrid1) +pl.styl({}, {}) +pl.col0(1) +pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") -- Plot using 2d coordinate transform +pl.env(-1, 1, -1, 1, 0, 0) +pl.col0(2) +pl.cont(z, 1, XPTS, 1, YPTS, clevel, pltr2, cgrid2) - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) - plcol0(2) - plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr2, (void *) &cgrid2) +pl.styl(1, mark, space) +pl.col0(3) +pl.cont(w, 1, XPTS, 1, YPTS, clevel, pltr2, cgrid2) +pl.styl({}, {}) +pl.col0(1) +pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") - plstyl(1, &mark, &space) - plcol0(3) - plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr2, (void *) &cgrid2) - plstyl(0, &mark, &space) - plcol0(1) - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") - -- - pl_setcontlabelparam(0.006, 0.3, 0.1, 1) - plenv(-1.0, 1.0, -1.0, 1.0, 0, 0) - plcol0(2) - plcont(z, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr2, (void *) &cgrid2) +pl.setcontlabelparam(0.006, 0.3, 0.1, 0) +polar() - plstyl(1, &mark, &space) - plcol0(3) - plcont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, - pltr2, (void *) &cgrid2) - plstyl(0, &mark, &space) - plcol0(1) - pllab("X Coordinate", "Y Coordinate", "Streamlines of flow") - - pl_setcontlabelparam(0.006, 0.3, 0.1, 0) - polar() - -- - pl_setcontlabelparam(0.006, 0.3, 0.1, 1) - polar() - - pl_setcontlabelparam(0.006, 0.3, 0.1, 0) - potential() - -- - pl_setcontlabelparam(0.006, 0.3, 0.1, 1) - potential() - +pl.setcontlabelparam(0.006, 0.3, 0.1, 0) +potential() -- Clean up - - plFree2dGrid(z, XPTS, YPTS) - plFree2dGrid(w, XPTS, YPTS) - plFree2dGrid(cgrid2.xg, XPTS, YPTS) - plFree2dGrid(cgrid2.yg, XPTS, YPTS) - - plend() - - exit(0) -} +pl.plend() Added: trunk/examples/lua/x16.lua =================================================================== --- trunk/examples/lua/x16.lua (rev 0) +++ trunk/examples/lua/x16.lua 2009-01-28 20:34:17 UTC (rev 9411) @@ -0,0 +1,315 @@ +-- $Id$ + +-- plshade demo, using color fill. + +-- initialise Lua bindings to PLplot +if string.sub(_VERSION,1,7)=='Lua 5.0' then + lib=loadlib('./plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') + assert(lib)() +else + require('plplotluac') +end + + +-- Fundamental settings. See notes[] for more info. +ns = 20 -- Default number of shade levels +nx = 35 -- Default number of data points in x +ny = 46 -- Default number of data points in y +exclude = 0 -- By default do not plot a page illustrating + -- exclusion. API is probably going to change + -- anyway, and cannot be reproduced by any + -- front end other than the C one. + +-- polar plot data +PERIMETERPTS = 100 + +-- Transformation function +tr = {} + +function mypltr(x, y, pltr_data) + tx = tr[1] * x + tr[2] * y + tr[3] + ty = tr[4] * x + tr[5] * y + tr[6] + + return tx, ty +end + +---------------------------------------------------------------------------- +-- f2mnmx +-- +-- Returns min & max of input 2d array. +---------------------------------------------------------------------------- +function f2mnmx(f, nx, ny) + fmax = f[1][1] + fmin = fmax + + for i = 1, nx do + for j = 1,ny do + fmax = math.max(fmax, f[i][j]) + fmin = math.min(fmin, f[i][j]) + end + end + + return fmin, fmax +end + + +function zdefined(x, y) + z = math.sqrt(x^2 + y^2) + + return z<0.4 or z>0.6 +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Does several shade plots using different coordinate mappings. +---------------------------------------------------------------------------- + +px = {} +py = {} + +fill_width = 2 +cont_color = 0 +cont_width = 0 + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display +pl.scmap0n(3) + +-- Initialize plplot +pl.init() + +-- Set up transformation function +tr[1] = 2/(nx-1) +tr[2] = 0 +tr[3] = -1 +tr[4] = 0 +tr[5] = 2/(ny-1) +tr[6] = -1 + +-- Allocate data structures +clevel = {} +shedge = {} +z = {} +w = {} + +-- Set up data array +for i = 1, nx do + x = (i-1 - math.floor(nx/2)) / math.floor(nx/2) + z[i] = {} + w[i] = {} + for j = 1, ny do + y = (j-1 - math.floor(ny/2)) / math.floor(ny/2) - 1 + + z[i][j] = - math.sin(7*x) * math.cos(7*y) + x^2 - y^2 + w[i][j] = - math.cos(7*x) * math.sin(7*y) + 2*x*y + end +end + +zmin, zmax = f2mnmx(z, nx, ny) +for i = 1, ns do + clevel[i] = zmin + (zmax-zmin)*(i-0.5)/ns +end + +for i = 1, ns+1 do + shedge[i] = zmin + (zmax-zmin)*(i-1)/ns +end + +-- Set up coordinate grids +cgrid1["xg"] = {} +cgrid1["yg"] = {} +cgrid1["nx"] = nx +cgrid1["ny"] = ny + +cgrid2["xg"] = {} +cgrid2["yg"] = {} +cgrid2["nx"] = nx +cgrid2["ny"] = ny + +for i = 1, nx do + cgrid2["xg"][i] = {} + cgrid2["yg"][i] = {} + for j = 1, ny do + x, y = mypltr(i, j, nil) + + argx = x*math.pi/2 + argy = y*math.pi/2 + distort = 0.4 + + cgrid1["xg"][i] = x + distort * math.cos(argx) + cgrid1["yg"][j] = y - distort * math.cos(argy) + + cgrid2["xg"][i][j] = x + distort * math.cos(argx) * math.cos(argy) + cgrid2["yg"][i][j] = y - distort * math.cos(argx) * math.cos(argy) + end +end + +-- Plot using identity transform +pl.adv(0) +pl.vpor(0.1, 0.9, 0.1, 0.9) +pl.wind(-1, 1, -1, 1) + +pl.psty(0) + +pl.shades(z, {}, -1, 1, -1, 1, + shedge, fill_width, + cont_color, cont_width, + plfill, 1, {}, {}) + +pl.col0(1) +pl.box("bcnst", 0, 0, "bcnstv", 0, 0) +pl.col0(2) + +--plcont(w, 1, nx, 1, ny, clevel, mypltr, {}) +pl.lab("distance", "altitude", "Bogon density") + +-- Plot using 1d coordinate transform + + pladv(0) + plvpor(0.1, 0.9, 0.1, 0.9) + plwind(-1.0, 1.0, -1.0, 1.0) + + plpsty(0) + + plshades(z, nx, ny, NULL, -1., 1., -1., 1., + shedge, ns+1, fill_width, + cont_color, cont_width, + plfill, 1, pltr1, cgrid1) + + plcol0(1) + plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) + plcol0(2) +-- + plcont(w, nx, ny, 1, nx, 1, ny, clevel, ns, pltr1, cgrid1) + + pllab("distance", "altitude", "Bogon density") + +-- Plot using 2d coordinate transform + + pladv(0) + plvpor(0.1, 0.9, 0.1, 0.9) + plwind(-1.0, 1.0, -1.0, 1.0) + + plpsty(0) + + plshades(z, nx, ny, NULL, -1., 1., -1., 1., + shedge, ns+1, fill_width, + cont_color, cont_width, + plfill, 0, pltr2, cgrid2) + + plcol0(1) + plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) + plcol0(2) + plcont(w, nx, ny, 1, nx, 1, ny, clevel, ns, pltr2, cgrid2) + + pllab("distance", "altitude", "Bogon density, with streamlines") + +-- Plot using 2d coordinate transform + + pladv(0) + plvpor(0.1, 0.9, 0.1, 0.9) + plwind(-1.0, 1.0, -1.0, 1.0) + + plpsty(0) + + plshades(z, nx, ny, NULL, -1., 1., -1., 1., + shedge, ns+1, fill_width, + 2, 3, + plfill, 0, pltr2, cgrid2) + + plcol0(1) + plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) + plcol0(2) +-- plcont(w, nx, ny, 1, nx, 1, ny, clevel, ns, pltr2, (void *) &cgrid2) + + pllab("distance", "altitude", "Bogon density") + +-- Note this exclusion API will probably change. + +-- Plot using 2d coordinate transform and exclusion + + if exclude~=0 then + pladv(0) + plvpor(0.1, 0.9, 0.1, 0.9) + plwind(-1.0, 1.0, -1.0, 1.0) + + plpsty(0) + + plshades(z, nx, ny, zdefined, -1., 1., -1., 1., + shedge, ns+1, fill_width, + cont_color, cont_width, + plfill, 0, pltr2, cgrid2) + + plcol0(1) + plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) + + pllab("distance", "altitude", "Bogon density with exclusion") + + end +-- Example with polar coordinates. + + pladv(0) + plvpor( .1, .9, .1, .9 ) + plwind( -1., 1., -1., 1. ) + + plpsty(0) + + -- Build new coordinate matrices. + + for (i = 0 i < nx i++) { + r = ((PLFLT) i)/ (nx-1) + for (j = 0 j < ny j++) { + t = (2.*M_PI/(ny-1.))*j + cgrid2.xg[i][j] = r*cos(t) + cgrid2.yg[i][j] = r*sin(t) + z[i][j] = exp(-r*r)*cos(5.*M_PI*r)*cos(5.*t) + } + } + + -- Need a new shedge to go along with the new data set. + + f2mnmx(z, nx, ny, &zmin, &zmax) + + for (i = 0 i < ns+1 i++) + shedge[i] = zmin + (zmax - zmin) * (PLFLT) i / (PLFLT) ns + + -- Now we can shade the interior region. + plshades(z, nx, ny, NULL, -1., 1., -1., 1., + shedge, ns+1, fill_width, + cont_color, cont_width, + plfill, 0, pltr2, (void *) &cgrid2) + +-- Now we can draw the perimeter. (If do before, shade stuff may overlap.) + for (i = 0 i < PERIMETERPTS i++) { + t = (2.*M_PI/(PERIMETERPTS-1))*(double)i + px[i] = cos(t) + py[i] = sin(t) + } + plcol0(1) + plline(PERIMETERPTS, px, py) + + -- And label the plot. + + plcol0(2) + pllab( "", "", "Tokamak Bogon Instability" ) + + +-- Clean up + + free((void *) clevel) + free((void *) shedge) + free((void *) xg1) + free((void *) yg1) + plFree2dGrid(z, nx, ny) + plFree2dGrid(w, nx, ny) + plFree2dGrid(cgrid2.xg, nx, ny) + plFree2dGrid(cgrid2.yg, nx, ny) + + plend() + + exit(0) +} + Property changes on: trunk/examples/lua/x16.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-09 23:22:51
|
Revision: 9482 http://plplot.svn.sourceforge.net/plplot/?rev=9482&view=rev Author: smekal Date: 2009-02-09 21:30:45 +0000 (Mon, 09 Feb 2009) Log Message: ----------- Initial commit of example 17. Runs but produces slightly different output. Modified Paths: -------------- trunk/examples/lua/CMakeLists.txt Added Paths: ----------- trunk/examples/lua/x17.lua Modified: trunk/examples/lua/CMakeLists.txt =================================================================== --- trunk/examples/lua/CMakeLists.txt 2009-02-09 21:27:53 UTC (rev 9481) +++ trunk/examples/lua/CMakeLists.txt 2009-02-09 21:30:45 UTC (rev 9482) @@ -34,6 +34,7 @@ "13" "15" "16" +"17" "18" "19" "22" Added: trunk/examples/lua/x17.lua =================================================================== --- trunk/examples/lua/x17.lua (rev 0) +++ trunk/examples/lua/x17.lua 2009-02-09 21:30:45 UTC (rev 9482) @@ -0,0 +1,118 @@ +--[[ $Id$ + + Plots a simple stripchart with four pens. + + Copyright (C) 2008 Werner Smekal + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + + +-------------------------------------------------------------------------- +-- main +-------------------------------------------------------------------------- + +nsteps = 1000 +colline = {} +legline = {} + +-- plplot initialization +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- User sets up plot completely except for window and data +-- Eventually settings in place when strip chart is created will be +-- remembered so that multiple strip charts can be used simultaneously. + +-- Specify some reasonable defaults for ymin and ymax +-- The plot will grow automatically if needed (but not shrink) +ymin = -0.1 +ymax = 0.1 + +-- Specify initial tmin and tmax -- this determines length of window. +-- Also specify maximum jump in t +-- This can accomodate adaptive timesteps +tmin = 0 +tmax = 10 +tjump = 0.3 -- percentage of plot to jump + +-- Axes options same as plbox. +-- Only automatic tick generation and label placement allowed +-- Eventually I'll make this fancier +colbox = 1 +collab = 3 +styline = { 2, 3, 4, 5 } -- line style +colline = { 2, 3, 4, 5 } -- pens color + +legline= { "sum", "sin", "sin*noi", "sin+noi" } -- pens legend + +xlab = 0 -- legend position +ylab = 0.25 + +autoy = 1 -- autoscale y +acc = 1 -- don't scrip, accumulate + +-- Initialize plplot +pl.init() + +pl.adv(0) +pl.vsta() + +id1 = pl.stripc("bcnst", "bcnstv", + tmin, tmax, tjump, ymin, ymax, + xlab, ylab, + autoy, acc, + colbox, collab, + colline, styline, legline, + "t", "", "Strip chart demo") + +autoy = 0 -- autoscale y +acc = 1 -- accumulate + +-- This is to represent a loop over time +-- Let's try a random walk process + +y1 = 0 +y2 = 0 +y3 = 0 +y4 = 0 +dt = 0.1 + +for n = 1, nsteps do + for i = 0, 200000 do end + t = (n-1) * dt + noise = pl.randd() - 0.5 + y1 = y1 + noise + y2 = math.sin(t*math.pi/18) + y3 = y2 * noise + y4 = y2 + noise/3 + + -- There is no need for all pens to have the same number of + -- points or beeing equally time spaced. + if math.mod(n, 2)~=0 then pl.stripa(id1, 0, t, y1) end + if math.mod(n, 3)~=0 then pl.stripa(id1, 1, t, y2) end + if math.mod(n, 4)~=0 then pl.stripa(id1, 2, t, y3) end + if math.mod(n, 5)~=0 then pl.stripa(id1, 3, t, y4) end +end + +-- Destroy strip chart and it's memory +pl.stripd(id1) +pl.plend() Property changes on: trunk/examples/lua/x17.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-10 08:19:16
|
Revision: 9492 http://plplot.svn.sourceforge.net/plplot/?rev=9492&view=rev Author: smekal Date: 2009-02-10 08:19:12 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Added example 31 which runs but produces different std output. Modified Paths: -------------- trunk/examples/lua/CMakeLists.txt Added Paths: ----------- trunk/examples/lua/x31.lua Modified: trunk/examples/lua/CMakeLists.txt =================================================================== --- trunk/examples/lua/CMakeLists.txt 2009-02-10 08:07:26 UTC (rev 9491) +++ trunk/examples/lua/CMakeLists.txt 2009-02-10 08:19:12 UTC (rev 9492) @@ -41,6 +41,7 @@ "24" "25" "30" +"31" ) set(lua_SCRIPTS) Added: trunk/examples/lua/x31.lua =================================================================== --- trunk/examples/lua/x31.lua (rev 0) +++ trunk/examples/lua/x31.lua 2009-02-10 08:19:12 UTC (rev 9492) @@ -0,0 +1,225 @@ +--[[ $Id$ + + Copyright (C) 2008 Werner Smekal + + set/get tester + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + +r1 = { 0, 255 } +g1 = { 255, 0 } +b1 = { 0, 0 } +a1 = { 1, 1 } + +-- Parse and process command line arguments +status = 0 +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Test setting / getting familying parameters before plinit +-- Save values set by plparseopts to be restored later. +fam0, num0, bmax0 = pl.gfam() +fam1 = 0 +num1 = 10 +bmax1 = 1000 +pl.sfam(fam1, num1, bmax1) + +-- Retrieve the same values? +fam2, num2, bmax2 = pl.gfam() +print(string.format("family parameters: fam, num, bmax = %d %d %d", fam2, num2, bmax2)) +if fam2~=fam1 or num2~=num1 or bmax2~=bmax1 then + io.stderr:write("plgfam test failed\n") + status = 1 +end +-- Restore values set initially by plparseopts. +pl.sfam(fam0, num0, bmax0) + +-- Test setting / getting page parameters before plinit +-- Save values set by plparseopts to be restored later. +xp0, yp0, xleng0, yleng0, xoff0, yoff0 = pl.gpage() +xp1 = 200. +yp1 = 200. +xleng1 = 400 +yleng1 = 200 +xoff1 = 10 +yoff1 = 20 +pl.spage(xp1, yp1, xleng1, yleng1, xoff1, yoff1) + +-- Retrieve the same values? +xp2, yp2, xleng2, yleng2, xoff2, yoff2 = pl.gpage() +print(string.format("page parameters: xp, yp, xleng, yleng, xoff, yoff = %f %f %d %d %d %d", xp2, yp2, xleng2, yleng2, xoff2, yoff2)) +if xp2~=xp1 or yp2~=yp1 or xleng2~=xleng1 or yleng2~=yleng1 or xoff2~=xoff1 or yoff2~=yoff1 then + io.stderr:write("plgpage test failed\n") + status = 1 +end +-- Restore values set initially by plparseopts. +pl.spage(xp0, yp0, xleng0, yleng0, xoff0, yoff0) + +-- Test setting / getting compression parameter across plinit. +compression1 = 95 +pl.scompression(compression1) + +-- Initialize plplot +pl.init() + +-- Test if device initialization screwed around with the preset +-- compression parameter. +compression2 = pl.gcompression() +print("Output various PLplot parameters") +print("compression parameter = " .. compression2) +if compression2~=compression1 then + io.stderr:write("plgcompression test failed\n") + status = 1 +end + + +-- Exercise plscolor, plscol0, plscmap1, and plscmap1a to make sure +--they work without any obvious error messages. +pl.scolor(1) +pl.scol0(1, 255, 0, 0) +pl.scmap1(r1, g1, b1) +pl.scmap1a(r1, g1, b1, a1) + +level2 = pl.glevel() +print("level parameter = %d" .. level2) +if level2~=1 then + io.stderr:write("plglevel test failed.\n") + status = 1 +end + +pl.adv(0) +pl.vpor(0.01, 0.99, 0.02, 0.49) +xmin, xmax, ymin, ymax = pl.gvpd() +print(string.format("plvpor: xmin, xmax, ymin, ymax = %f %f %f %f", xmin, xmax, ymin, ymax)) +if xmin~=0.01 or xmax~=0.99 or ymin~=0.02 or ymax~=0.49 then + io.stderr:write("plgvpd test failed\n") + status = 1 +end +xmid = 0.5*(xmin+xmax) +ymid = 0.5*(ymin+ymax) + +pl.wind(0.2, 0.3, 0.4, 0.5) +xmin, xmax, ymin, ymax = pl.gvpw() +print(string.format("plwind: xmin, xmax, ymin, ymax = %f %f %f %f", xmin, xmax, ymin, ymax)) +if xmin~=0.2 or xmax~=0.3 or ymin~=0.4 or ymax~=0.5 then + io.stderr:write("plgvpw test failed\n") + status = 1 +end + +-- Get world coordinates for middle of viewport +wx, wy, win = pl.calc_world(xmid,ymid) +print(string.format("world parameters: wx, wy, win = %f %f %d", wx, wy, win)) +if math.abs(wx-0.5*(xmin+xmax))>1.0e-5 or math.abs(wy-0.5*(ymin+ymax))>1.0e-5 then + io.stderr:write("plcalc_world test failed\n") + status = 1 +end + +-- Retrieve and print the name of the output file (if any). +-- This goes to stderr not stdout since it will vary between tests and +-- we want stdout to be identical for compare test. +fnam = pl.gfnam() +if fnam=="" then + print("No output file name is set") +else + print("Output file name read") +end +io.stderr:write(string.format("Output file name is %s\n",fnam)) + +-- Set and get the number of digits used to display axis labels +-- Note digits is currently ignored in pls[xyz]ax and +-- therefore it does not make sense to test the returned +-- value +pl.sxax(3,0) +digmax, digits = pl.gxax() +print(string.format("x axis parameters: digmax, digits = %d %d", digmax, digits)) +if digmax~=3 then + io.stderr:write("plgxax test failed\n") + status = 1 +end + +pl.syax(4,0) +digmax, digits = pl.gyax() +print(string.format("y axis parameters: digmax, digits = %d %d", digmax, digits)) +if digmax~=4 then + io.stderr:write("plgyax test failed\n") + status = 1 +end + +pl.szax(5,0) +digmax,digits = pl.gzax() +print(string.format("z axis parameters: digmax, digits = %d %d", digmax, digits)) +if digmax~=5 then + io.stderr:write("plgzax test failed\n") + status = 1 +end + +pl.sdidev(0.05, pl.PL_NOTSET, 0.1, 0.2) +mar, aspect, jx, jy = pl.gdidev() +print(string.format("device-space window parameters: mar, aspect, jx, jy = %f %f %f %f" , mar, aspect, jx, jy)) +if mar~=0.05 or jx~=0.1 or jy~=0.2 then + io.stderr:write("plgdidev test failed\n") + status = 1 +end + +pl.sdiori(1.0) +ori = pl.gdiori() +print(string.format("ori parameter = %f", ori)) +if ori~=1.0 then + io.stderr:write("plgdiori test failed\n") + status = 1 +end + +pl.sdiplt(0.1, 0.2, 0.9, 0.8) +xmin, ymin, xmax, ymax = pl.gdiplt() +print(string.format("plot-space window parameters: xmin, ymin, xmax, ymax = %f %f %f %f", xmin, ymin, xmax, ymax)) +if xmin~=0.1 or xmax~=0.9 or ymin~=0.2 or ymax~=0.8 then + io.stderr:write("plgdiplt test failed\n") + status = 1 +end + +pl.sdiplz(0.1, 0.1, 0.9, 0.9) +zxmin, zymin, zxmax, zymax = pl.gdiplt() +print(string.format("zoomed plot-space window parameters: xmin, ymin, xmax, ymax = %f %f %f %f", zxmin, zymin, zxmax, zymax)) +if math.abs(zxmin -(xmin + (xmax-xmin)*0.1)) > 1.0e-5 or + math.abs(zxmax -(xmin+(xmax-xmin)*0.9)) > 1.0e-5 or + math.abs(zymin -(ymin+(ymax-ymin)*0.1)) > 1.0e-5 or + math.abs(zymax -(ymin+(ymax-ymin)*0.9)) > 1.0e-5 then + io.stderr:write("plsdiplz test failed\n") + status = 1 +end + +pl.scolbg(10, 20, 30) +r, g, b = pl.gcolbg() +print(string.format("background colour parameters: r, g, b = %d %d %d", r, g, b)) +if r~=10 or g~=20 or b~=30 then + io.stderr:write("plgcolbg test failed\n") + status = 1 +end + +pl.scolbga(20, 30, 40, 0.5) +r, g, b, a = pl.gcolbga() +print(string.format("background/transparency colour parameters: r, g, b, a = %d %d %d %f", r, g, b, a)) +if r~=20 or g~=30 or b~=40 or a~=0.5 then + io.stderr:write("plgcolbga test failed\n") + status = 1 +end + +pl.plend() Property changes on: trunk/examples/lua/x31.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-10 08:47:41
|
Revision: 9495 http://plplot.svn.sourceforge.net/plplot/?rev=9495&view=rev Author: smekal Date: 2009-02-10 08:47:40 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Added lua example 29. Modified Paths: -------------- trunk/examples/lua/CMakeLists.txt Added Paths: ----------- trunk/examples/lua/x29.lua Modified: trunk/examples/lua/CMakeLists.txt =================================================================== --- trunk/examples/lua/CMakeLists.txt 2009-02-10 08:20:59 UTC (rev 9494) +++ trunk/examples/lua/CMakeLists.txt 2009-02-10 08:47:40 UTC (rev 9495) @@ -40,6 +40,7 @@ "22" "24" "25" +"29" "30" "31" ) Added: trunk/examples/lua/x29.lua =================================================================== --- trunk/examples/lua/x29.lua (rev 0) +++ trunk/examples/lua/x29.lua 2009-02-10 08:47:40 UTC (rev 9495) @@ -0,0 +1,208 @@ +--[[ $Id$ + + Sample plots using date / time formatting for axes + + Copyright (C) 2009 Werner Smekal + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + + + +-- Plot a model diurnal cycle of temperature +function plot1() + x = {} + y = {} + + xerr1 = {} + xerr2 = {} + yerr1 = {} + yerr2 = {} + -- Data points every 10 minutes for 1 day + npts = 73 + + xmin = 0 + xmax = 60*60*24 -- Number of seconds in a day + ymin = 10 + ymax = 20 + + for i = 1, npts do + x[i] = xmax*((i-1)/npts) + y[i] = 15 - 5*math.cos(2*math.pi*((i-1)/npts)) + -- Set x error bars to +/- 5 minute + xerr1[i] = x[i]-60*5 + xerr2[i] = x[i]+60*5 + -- Set y error bars to +/- 0.1 deg C + yerr1[i] = y[i]-0.1 + yerr2[i] = y[i]+0.1 + end + + pl.adv(0) + + -- Rescale major ticks marks by 0.5 + pl.smaj(0, 0.5) + -- Rescale minor ticks and error bar marks by 0.5 + pl.smin(0, 0.5) + + pl.vsta() + pl.wind(xmin, xmax, ymin, ymax) + + -- Draw a box with ticks spaced every 3 hour in X and 1 degree C in Y. + pl.col0(1) + -- Set time format to be hours:minutes + pl.timefmt("%H:%M") + pl.box("bcnstd", 3*60*60, 3, "bcnstv", 1, 5) + + pl.col0(3) + pl.lab("Time (hours:mins)", "Temperature (degC)", "@frPLplot Example 29 - Daily temperature") + + pl.col0(4) + + pl.line(x, y) + pl.col0(2) + pl.errx(xerr1, xerr2, y) + pl.col0(3) + pl.erry(x, yerr1, yerr2) + + -- Rescale major / minor tick marks back to default + pl.smin(0, 1) + pl.smaj(0, 1) +end + + +-- Plot the number of hours of daylight as a function of day for a year +function plot2() + x = {} + y = {} + + -- Latitude for London + lat = 51.5 + + npts = 365 + + xmin = 0 + xmax = npts*60*60*24 + ymin = 0 + ymax = 24 + + -- Formula for hours of daylight from + -- "A Model Comparison for Daylength as a Function of Latitude and + -- Day of the Year", 1995, Ecological Modelling, 80, pp 87-95. + for j = 1, npts do + x[j] = (j-1)*60*60*24 + p = math.asin(0.39795*math.cos(0.2163108 + 2*math.atan(0.9671396*math.tan(0.00860*(j-1-186))))) + d = 24 - (24/math.pi)* + math.acos( (math.sin(0.8333*math.pi/180) + math.sin(lat*math.pi/180)*math.sin(p)) / + (math.cos(lat*math.pi/180)*math.cos(p)) ) + y[j] = d + end + + pl.col0(1) + -- Set time format to be abbreviated month name followed by day of month + pl.timefmt("%b %d") + pl.prec(1, 1) + pl.env(xmin, xmax, ymin, ymax, 0, 40) + + + pl.col0(3) + pl.lab("Date", "Hours of daylight", "@frPLplot Example 29 - Hours of daylight at 51.5N") + + pl.col0(4) + + pl.line(x, y) + + pl.prec(0, 0) +end + + +function plot3() + x = {} + y = {} + + tstart = 1133395200 + + npts = 62 + + xmin = tstart + xmax = xmin + npts*60*60*24 + ymin = 0 + ymax = 5 + + for i = 1, npts do + x[i] = xmin + (i-1)*60*60*24 + y[i] = 1 + math.sin(2*math.pi*(i-1)/7) + math.exp(math.min(i-1,npts-i)/31) + end + pl.adv(0) + + pl.vsta() + pl.wind(xmin, xmax, ymin, ymax) + + pl.col0(1) + -- Set time format to be ISO 8601 standard YYYY-MM-DD. Note that this is + --equivalent to %f for C99 compliant implementations of strftime. + pl.timefmt("%Y-%m-%d") + -- Draw a box with ticks spaced every 14 days in X and 1 hour in Y. + pl.box("bcnstd", 14*24*60*60,14, "bcnstv", 1, 4) + + pl.col0(3) + pl.lab("Date", "Hours of television watched", "@frPLplot Example 29 - Hours of television watched in Dec 2005 / Jan 2006") + + pl.col0(4) + + -- Rescale symbol size (used by plpoin) by 0.5 + pl.ssym(0, 0.5) + pl.poin(x, y, 2) + pl.line(x, y) +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Draws several plots which demonstrate the use of date / time formats for +-- the axis labels. +-- Time formatting is done using the system strftime routine. See the +-- documentation of this for full details of the available formats. +-- +-- 1) Plotting temperature over a day (using hours / minutes) +-- 2) Plotting +-- +-- Note: Times are stored as seconds since the epoch (usually 1st Jan 1970). +-- +---------------------------------------------------------------------------- + +-- Parse command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Initialize plplot +pl.init() + +-- Change the escape character to a '@' instead of the default '#' +pl.sesc('@') + +plot1() + +plot2() + +plot3() + +-- Don't forget to call plend() to finish off! +pl.plend() Property changes on: trunk/examples/lua/x29.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-11 08:18:01
|
Revision: 9505 http://plplot.svn.sourceforge.net/plplot/?rev=9505&view=rev Author: smekal Date: 2009-02-11 08:17:50 +0000 (Wed, 11 Feb 2009) Log Message: ----------- Added lua examples 26, 27, 28. Worked on lua examples 25 and 30. Modified Paths: -------------- trunk/examples/lua/x25.lua trunk/examples/lua/x30.lua Added Paths: ----------- trunk/examples/lua/x26.lua trunk/examples/lua/x27.lua trunk/examples/lua/x28.lua Modified: trunk/examples/lua/x25.lua =================================================================== --- trunk/examples/lua/x25.lua 2009-02-11 05:21:56 UTC (rev 9504) +++ trunk/examples/lua/x25.lua 2009-02-11 08:17:50 UTC (rev 9505) @@ -36,91 +36,55 @@ y0 = {} -- Parse and process command line arguments - pl.parseopts(arg, pl.PL_PARSE_FULL) -- Initialize plplot - -pl.ssub(3,3) +pl.ssub(3, 3) pl.init() -xextreme[0][0] = -120.0 xextreme[0][1] = 120.0 yextreme[0][0] = -120.0 yextreme[0][1] = 120.0 -xextreme[1][0] = -120.0 xextreme[1][1] = 120.0 yextreme[1][0] = 20.0 yextreme[1][1] = 120.0 -xextreme[2][0] = -120.0 xextreme[2][1] = 120.0 yextreme[2][0] = -20.0 yextreme[2][1] = 120.0 -xextreme[3][0] = -80.0 xextreme[3][1] = 80.0 yextreme[3][0] = -20.0 yextreme[3][1] = 120.0 -xextreme[4][0] = -220.0 xextreme[4][1] = -120.0 yextreme[4][0] = -120.0 yextreme[4][1] = 120.0 -xextreme[5][0] = -20.0 xextreme[5][1] = 20.0 yextreme[5][0] = -120.0 yextreme[5][1] = 120.0 -xextreme[6][0] = -20.0 xextreme[6][1] = 20.0 yextreme[6][0] = -20.0 yextreme[6][1] = 20.0 -xextreme[7][0] = -80.0 xextreme[7][1] = 80.0 yextreme[7][0] = -80.0 yextreme[7][1] = 80.0 -xextreme[8][0] = 20.0 xextreme[8][1] = 120.0 yextreme[8][0] = -120.0 yextreme[8][1] = 120.0 +xextreme = { { -120, 120 }, { -120, 120 }, { -120, 120 }, { -80, 80 }, { -220, -120 }, + { -20, 20 }, { -20, 20 }, { -80, 80 }, { 20, 120 } } -for ( j = 0 j < 4 j ++ ) -{ - if ( j == 0 ) - { --- Polygon 1: a diamond - x0[0] = 0 y0[0] = -100 - x0[1] = -100 y0[1] = 0 - x0[2] = 0 y0[2] = 100 - x0[3] = 100 y0[3] = 0 - npts = 4 - } - if ( j == 1 ) - { --- Polygon 1: a diamond - reverse direction - x0[3] = 0 y0[3] = -100 - x0[2] = -100 y0[2] = 0 - x0[1] = 0 y0[1] = 100 - x0[0] = 100 y0[0] = 0 - npts = 4 - } - if ( j == 2 ) - { --- Polygon 2: a square with punctures - x0[0] = -100 y0[0] = -100 - x0[1] = -100 y0[1] = -80 - x0[2] = 80 y0[2] = 0 - x0[3] = -100 y0[3] = 80 - x0[4] = -100 y0[4] = 100 - x0[5] = -80 y0[5] = 100 - x0[6] = 0 y0[6] = 80 - x0[7] = 80 y0[7] = 100 - x0[8] = 100 y0[8] = 100 - x0[9] = 100 y0[9] = -100 - npts = 10 - } - if ( j == 3 ) - { --- Polygon 2: a square with punctures - reversed direction - x0[9] = -100 y0[9] = -100 - x0[8] = -100 y0[8] = -80 - x0[7] = 80 y0[7] = 0 - x0[6] = -100 y0[6] = 80 - x0[5] = -100 y0[5] = 100 - x0[4] = -80 y0[4] = 100 - x0[3] = 0 y0[3] = 80 - x0[2] = 80 y0[2] = 100 - x0[1] = 100 y0[1] = 100 - x0[0] = 100 y0[0] = -100 - npts = 10 - } +yextreme = { { -120, 120 }, { 20, 120 }, { -20, 120 }, { -20, 120 }, { -120, 120 }, + { -120, 120 }, { -20, 20 }, { -80, 80 }, { -120, 120 } } + +for j = 1, 4 do + if j==1 then + -- Polygon 1: a diamond + x0 = { 0, -100, 0, 100 } + y0 = { -100, 0, 100, 0} + end + if j==2 then + -- Polygon 1: a diamond - reverse direction + x0 = { 100, 0, -100, 0 } + y0 = { 0, 100, 0, -100} + end + if j==3 then + -- Polygon 2: a square with punctures + x0 = { -100, -100, 80, -100, -100, -80, 0, 80, 100, 100 } + y0 = { -100, -80, 0, 80, 100, 100, 80, 100, 100, -100} + end + if j==4 then + -- Polygon 2: a square with punctures - reversed direction + x0 = { 100, 100, 80, 0, -80, -100, -100, 80, -100, -100 } + y0 = { -100, 100, 100, 80, 100, 100, 80, 0, -80, -100} + end - for ( i = 0 i < 9 i ++ ) - { - pladv(0) - plvsta() - plwind(xextreme[i][0], xextreme[i][1], yextreme[i][0], yextreme[i][1]) + for i = 1, 9 do + pl.adv(0) + pl.vsta() + pl.wind(xextreme[i][1], xextreme[i][2], yextreme[i][1], yextreme[i][2]) - plcol0(2) - plbox("bc", 1.0, 0, "bcnv", 10.0, 0) - plcol0(1) - plpsty(0) - plfill(npts,x0,y0) - plcol0(2) - pllsty(1) - plline(npts,x0,y0) - } -} + pl.col0(2) + pl.box("bc", 1, 0, "bcnv", 10, 0) + pl.col0(1) + pl.psty(0) + pl.fill(x0, y0) + pl.col0(2) + pl.lsty(1) + pl.line(x0, y0) + end +end -- Don't forget to call plend() to finish off! pl.plend() Added: trunk/examples/lua/x26.lua =================================================================== --- trunk/examples/lua/x26.lua (rev 0) +++ trunk/examples/lua/x26.lua 2009-02-11 08:17:50 UTC (rev 9505) @@ -0,0 +1,151 @@ +--[[ -*- coding: utf-8 -*- + + $Id: $ + + Multi-lingual version of the first page of example 4. + + Copyright (C) 2009 Werner Smekal + + Thanks to the following for providing translated strings for this example: + Valery Pipin (Russian) + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + + +--[[ + This example designed just for devices (e.g., psttfc and the + cairo-related devices) that use the pango and fontconfig libraries. The + best choice of glyph is selected by fontconfig and automatically rendered + by pango in way that is sensitive to complex text layout (CTL) language + issues for each unicode character in this example. Of course, you must + have the appropriate TrueType fonts installed to have access to all the + required glyphs. + + Translation instructions: The strings to be translated are given by + x_label, y_label, alty_label, title_label, and line_label below. The + encoding used must be UTF-8. + + The following strings to be translated involve some scientific/mathematical + jargon which is now discussed further to help translators. + + (1) dB is a decibel unit, see http://en.wikipedia.org/wiki/Decibel . + (2) degrees is an angular measure, see + http://en.wikipedia.org/wiki/Degree_(angle) . + (3) low-pass filter is one that transmits (passes) low frequencies. + (4) pole is in the mathematical sense, see + http://en.wikipedia.org/wiki/Pole_(complex_analysis) . "Single Pole" + means a particular mathematical transformation of the filter function has + a single pole, see + http://ccrma.stanford.edu/~jos/filters/Pole_Zero_Analysis_I.html . + Furthermore, a single-pole filter must have an inverse square decline + (or -20 db/decade). Since the filter plotted here does have that + characteristic, it must by definition be a single-pole filter, see also + http://www-k.ext.ti.com/SRVS/Data/ti/KnowledgeBases/analog/document/faqs/1p.htm + (5) decade represents a factor of 10, see + http://en.wikipedia.org/wiki/Decade_(log_scale) . +--]] + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + +x_label = { "Frequency", "Частота" } +y_label = { "Amplitude (dB)", "Амплитуда (dB)" } +alty_label = { "Phase shift (degrees)", "Фазовый сдвиг (градусы)" } +title_label = { "Single Pole Low-Pass Filter", "Однополюсный Низко-Частотный Фильтр" } +line_label = { "-20 dB/decade", "-20 dB/десяток" } + + +---------------------------------------------------------------------------- +-- plot1 +-- +-- Log-linear plot. +---------------------------------------------------------------------------- + +function plot1(typ, x_label, y_label, alty_label, title_label, line_label) + freql = {} + ampl = {} + phase = {} + + pl.adv(0) + + -- Set up data for log plot + + f0 = 1 + for i = 1, 101 do + freql[i] = -2 + (i-1)/20 + freq = 10^freql[i] + ampl[i] = 20 * math.log10(1/math.sqrt(1+(freq/f0)^2)) + phase[i] = -180/math.pi*math.atan(freq/f0) + end + + pl.vpor(0.15, 0.85, 0.1, 0.9) + pl.wind(-2, 3, -80, 0) + + -- Try different axis and labelling styles. + pl.col0(1) + if typ==0 then + pl.box("bclnst", 0, 0, "bnstv", 0, 0) + else + pl.box("bcfghlnst", 0, 0, "bcghnstv", 0, 0) + end + + -- Plot ampl vs freq + pl.col0(2) + pl.line(freql, ampl) + pl.col0(1) + pl.ptex(1.6, -30, 1, -20, 0.5, line_label) + + -- Put labels on + pl.col0(1) + pl.mtex("b", 3.2, 0.5, 0.5, x_label) + pl.mtex("t", 2, 0.5, 0.5, title_label) + pl.col0(2) + pl.mtex("l", 5, 0.5, 0.5, y_label) + + -- For the gridless case, put phase vs freq on same plot + if typ==0 then + pl.col0(1) + pl.wind(-2, 3, -100, 0) + pl.box("", 0, 0, "cmstv", 30, 3) + pl.col0(3) + pl.line(freql, phase) + pl.col0(3) + pl.mtex("r", 5, 0.5, 0.5, alty_label) + end +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Illustration of logarithmic axes, and redefinition of window. +---------------------------------------------------------------------------- + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Initialize plplot +pl.init() +pl.font(2) + +-- Make log plots using two different styles. +for i = 1, 2 do + plot1(0, x_label[i], y_label[i], alty_label[i], title_label[i], line_label[i]) +end + +pl.plend() Property changes on: trunk/examples/lua/x26.lua ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/examples/lua/x27.lua =================================================================== --- trunk/examples/lua/x27.lua (rev 0) +++ trunk/examples/lua/x27.lua 2009-02-11 08:17:50 UTC (rev 9505) @@ -0,0 +1,129 @@ +--[[ $Id: $ + + Drawing "spirograph" curves - epitrochoids, cycolids, roulettes + + Copyright (C) 2009 Werner Smekal + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + + +function cycloid() + -- TODO +end + + +function spiro( params ) + NPNT = 20000 + xcoord = {} + ycoord = {} + + -- Fill the coordinates + windings = params[4] + steps = NPNT/windings + dphi = 8*math.acos(-1)/steps + + xmin = 0 -- This initialisation is safe! + xmax = 0 + ymin = 0 + ymax = 0 + + for i = 1, windings*steps+1 do + phi = (i-1) * dphi + phiw = (params[1]-params[2])/params[2]*phi + xcoord[i] = (params[1]-params[2])*math.cos(phi) + params[3]*math.cos(phiw) + ycoord[i] = (params[1]-params[2])*math.sin(phi) - params[3]*math.sin(phiw) + + if xmin>xcoord[i] then xmin = xcoord[i] end + if xmax<xcoord[i] then xmax = xcoord[i] end + if ymin>ycoord[i] then ymin = ycoord[i] end + if ymax<ycoord[i] then ymax = ycoord[i] end + end + + if (xmax-xmin)>(ymax-ymin) then + scale = xmax - xmin + else + scale = ymax - ymin + end + xmin = -0.65*scale + xmax = 0.65*scale + ymin = -0.65*scale + ymax = 0.65*scale + + pl.wind(xmin, xmax, ymin, ymax) + + pl.col0(1) + pl.line(xcoord, ycoord ) +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Generates two kinds of plots: +-- - construction of a cycloid (animated) +-- - series of epitrochoids and hypotrochoids +---------------------------------------------------------------------------- + +-- R, r, p, N +params = { + { 21.0, 7.0, 7.0, 3.0 }, -- Deltoid + { 21.0, 7.0, 10.0, 3.0 }, + { 21.0, -7.0, 10.0, 3.0 }, + { 20.0, 3.0, 7.0, 20.0 }, + { 20.0, 3.0, 10.0, 20.0 }, + { 20.0, -3.0, 10.0, 20.0 }, + { 20.0, 13.0, 7.0, 20.0 }, + { 20.0, 13.0, 20.0, 20.0 }, + { 20.0,-13.0, 20.0, 20.0 } } + +-- plplot initialization + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Initialize plplot +pl.init() + +-- Illustrate the construction of a cycloid +cycloid() + +-- Loop over the various curves +-- First an overview, then all curves one by one + +pl.ssub(3, 3) -- Three by three window + +for i = 1, 9 do + pl.adv(0) + pl.vpor(0, 1, 0, 1) + spiro(params[i]) +end + +pl.adv(0) +pl.ssub(1, 1) -- One window per curve + +for i = 1, 9 do + pl.adv(0) + pl.vpor(0, 1, 0, 1) + spiro(params[i]) +end + +-- Don't forget to call plend() to finish off! +pl.plend() Property changes on: trunk/examples/lua/x27.lua ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/examples/lua/x28.lua =================================================================== --- trunk/examples/lua/x28.lua (rev 0) +++ trunk/examples/lua/x28.lua 2009-02-11 08:17:50 UTC (rev 9505) @@ -0,0 +1,365 @@ +--[[ $Id: $ + + pl.mtex3, plptex3 demo. + + Copyright (C) 2009 Werner Smekal + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + +-- Choose these values to correspond to tick marks. +XPTS = 2 +YPTS = 2 +NREVOLUTION = 16 +NROTATION = 8 +NSHEAR = 8 + +---------------------------------------------------------------------------- +-- main +-- +-- Demonstrates plotting text in 3D. +---------------------------------------------------------------------------- + +xmin=0 +xmax=1 +xmid = 0.5*(xmax + xmin) +xrange = xmax - xmin +ymin=0 +ymax=1 +ymid = 0.5*(ymax + ymin) +yrange = ymax - ymin +zmin=0 +zmax=1 +zmid = 0.5*(zmax + zmin) +zrange = zmax - zmin + +-- p1string must be exactly one character + the null termination +--character. +p1string = "O" +pstring = "The future of our civilization depends on software freedom." + +-- Allocate and define the minimal x, y, and z to insure 3D box +x = {} +y = {} +z = {} + +for i = 1, XPTS do + x[i] = xmin + (i-1) * (xmax-xmin)/(XPTS-1) +end + +for j = 1, YPTS do + y[j] = ymin + (j-1) * (ymax-ymin)/(YPTS-1) +end + +for i = 1, XPTS do + z[i] = {} + for j = 1, YPTS do + z[i][j] = 0 + end +end + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +pl.init() + +-- Page 1: Demonstrate inclination and shear capability pattern. +pl.adv(0) +pl.vpor(-0.15, 1.15, -0.05, 1.05) +pl.wind(-1.2, 1.2, -0.8, 1.5) +pl.w3d(1, 1, 1, xmin, xmax, ymin, ymax, zmin, zmax, 20, 45) + +pl.col0(2) +pl.box3("b", "", xmax-xmin, 0, + "b", "", ymax-ymin, 0, + "bcd", "", zmax-zmin, 0) + +-- z = zmin. +pl.schr(0, 1) +for i = 1, NREVOLUTION do + omega = 2*math.pi*(i-1)/NREVOLUTION + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + x_inclination = 0.5*xrange*cos_omega + y_inclination = 0.5*yrange*sin_omega + z_inclination = 0 + x_shear = -0.5*xrange*sin_omega + y_shear = 0.5*yrange*cos_omega + z_shear = 0 + pl.ptex3( xmid, ymid, zmin, x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, 0, " revolution") +end + +-- x = xmax. +pl.schr(0, 1) +for i = 1, NREVOLUTION do + omega = 2.*math.pi*(i-1)/NREVOLUTION + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + x_inclination = 0. + y_inclination = -0.5*yrange*cos_omega + z_inclination = 0.5*zrange*sin_omega + x_shear = 0 + y_shear = 0.5*yrange*sin_omega + z_shear = 0.5*zrange*cos_omega + pl.ptex3(xmax, ymid, zmid, x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, 0, " revolution") +end + +-- y = ymax. +pl.schr(0, 1) +for i = 1, NREVOLUTION do + omega = 2.*math.pi*(i-1)/NREVOLUTION + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + x_inclination = 0.5*xrange*cos_omega + y_inclination = 0. + z_inclination = 0.5*zrange*sin_omega + x_shear = -0.5*xrange*sin_omega + y_shear = 0. + z_shear = 0.5*zrange*cos_omega + pl.ptex3(xmid, ymax, zmid, x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, 0, " revolution") +end + +-- Draw minimal 3D grid to finish defining the 3D box. +pl.mesh(x, y, z, pl.DRAW_LINEXY) + +-- Page 2: Demonstrate rotation of string around its axis. +pl.adv(0) +pl.vpor(-0.15, 1.15, -0.05, 1.05) +pl.wind(-1.2, 1.2, -0.8, 1.5) +pl.w3d(1, 1, 1, xmin, xmax, ymin, ymax, zmin, zmax, 20, 45) + +pl.col0(2) +pl.box3("b", "", xmax-xmin, 0, + "b", "", ymax-ymin, 0, + "bcd", "", zmax-zmin, 0) + +-- y = ymax. +pl.schr(0, 1) +x_inclination = 1 +y_inclination = 0 +z_inclination = 0 +x_shear = 0 +for i = 1, NROTATION do + omega = 2.*math.pi*(i-1)/NROTATION + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + y_shear = 0.5*yrange*sin_omega + z_shear = 0.5*zrange*cos_omega + pl.ptex3(xmid, ymax, zmax -(zmax-0.2)*(i-1)/(NROTATION-1), + x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, + 0.5, "rotation for y = y#dmax#u") +end + +-- x = xmax. +pl.schr(0, 1) +x_inclination = 0 +y_inclination = -1 +z_inclination = 0 +y_shear = 0 +for i = 1, NROTATION do + omega = 2.*math.pi*(i-1)/NROTATION + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + x_shear = 0.5*xrange*sin_omega + z_shear = 0.5*zrange*cos_omega + pl.ptex3(xmax, ymid, zmax -(zmax-0.2)*(i-1)/(NROTATION-1), + x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, + 0.5, "rotation for x = x#dmax#u") +end + +-- z = zmin. +pl.schr(0, 1) +x_inclination = 1 +y_inclination = 0 +z_inclination = 0 +x_shear = 0 +for i = 1, NROTATION do + omega = 2.*math.pi*(i-1)/NROTATION + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + y_shear = 0.5*yrange*cos_omega + z_shear = 0.5*zrange*sin_omega + pl.ptex3(xmid, ymax -(ymax-0.2)*(i-1)/(NROTATION-1), zmin, + x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, + 0.5, "rotation for z = z#dmin#u") +end + +-- Draw minimal 3D grid to finish defining the 3D box. +pl.mesh(x, y, z, pl.DRAW_LINEXY) + +-- Page 3: Demonstrate shear of string along its axis. +-- Work around xcairo and pngcairo (but not pscairo) problems for +-- shear vector too close to axis of string. (N.B. no workaround +-- would be domega = 0.) +domega = 0.05 +pl.adv(0) +pl.vpor(-0.15, 1.15, -0.05, 1.05) +pl.wind(-1.2, 1.2, -0.8, 1.5) +pl.w3d(1, 1, 1, xmin, xmax, ymin, ymax, zmin, zmax, 20, 45) + +pl.col0(2) +pl.box3("b", "", xmax-xmin, 0, + "b", "", ymax-ymin, 0, + "bcd", "", zmax-zmin, 0) + +-- y = ymax. +pl.schr(0, 1) +x_inclination = 1 +y_inclination = 0 +z_inclination = 0 +y_shear = 0 +for i = 1, NSHEAR do + omega = domega + 2.*math.pi*(i-1)/NSHEAR + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + x_shear = 0.5*xrange*sin_omega + z_shear = 0.5*zrange*cos_omega + pl.ptex3(xmid, ymax, zmax -(zmax-0.2)*(i-1)/(NSHEAR-1), + x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, + 0.5, "shear for y = y#dmax#u") +end + +-- x = xmax. +pl.schr(0, 1) +x_inclination = 0 +y_inclination = -1 +z_inclination = 0 +x_shear = 0 +for i = 1, NSHEAR do + omega = domega + 2.*math.pi*(i-1)/NSHEAR + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + y_shear = -0.5*yrange*sin_omega + z_shear = 0.5*zrange*cos_omega + pl.ptex3(xmax, ymid, zmax -(zmax-0.2)*(i-1)/(NSHEAR-1), + x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, + 0.5, "shear for x = x#dmax#u") +end + +-- z = zmin. +pl.schr(0, 1) +x_inclination = 1 +y_inclination = 0 +z_inclination = 0 +z_shear = 0 +for i = 1, NSHEAR do + omega = domega + 2.*math.pi*(i-1)/NSHEAR + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + y_shear = 0.5*yrange*cos_omega + x_shear = 0.5*xrange*sin_omega + pl.ptex3(xmid, ymax -(ymax-0.2)*(i-1)/(NSHEAR-1), zmin, + x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, + 0.5, "shear for z = z#dmin#u") +end + +-- Draw minimal 3D grid to finish defining the 3D box. +pl.mesh(x, y, z, pl.DRAW_LINEXY) + +-- Page 4: Demonstrate drawing a string on a 3D path. +pl.adv(0) +pl.vpor(-0.15, 1.15, -0.05, 1.05) +pl.wind(-1.2, 1.2, -0.8, 1.5) +pl.w3d(1, 1, 1, xmin, xmax, ymin, ymax, zmin, zmax, 40, -30) + +pl.col0(2) +pl.box3("b", "", xmax-xmin, 0, + "b", "", ymax-ymin, 0, + "bcd", "", zmax-zmin, 0) + +pl.schr(0, 1.2) +-- domega controls the spacing between the various characters of the +-- string and also the maximum value of omega for the given number +-- of characters in *pstring. +domega = 2.*math.pi/string.len(pstring) +omega = 0 + +-- 3D function is a helix of the given radius and pitch +radius = 0.5 +pitch = 1/(2*math.pi) +--[[ +while(*pstring) { + sin_omega = math.sin(omega) + cos_omega = math.cos(omega) + xpos = xmid + radius*sin_omega + ypos = ymid - radius*cos_omega + zpos = zmin + pitch*omega + + -- In general, the inclination is proportional to the derivative of + --the position wrt theta. + x_inclination = radius*cos_omega + y_inclination = radius*sin_omega + z_inclination = pitch + + -- The shear vector should be perpendicular to the 3D line with Z + -- component maximized, but for low pitch a good approximation is + --a constant vector that is parallel to the Z axis. + x_shear = 0 + y_shear = 0 + z_shear = 1 + *p1string = *pstring + plptex3(xpos, ypos, zpos, x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, 0.5, p1string) + pstring++ + omega = omega + domega +end --]] + +-- Draw minimal 3D grid to finish defining the 3D box. +pl.mesh(x, y, z, pl.DRAW_LINEXY) + +-- Page 5: Demonstrate pl.mtex3 axis labelling capability +pl.adv(0) +pl.vpor(-0.15, 1.15, -0.05, 1.05) +pl.wind(-1.2, 1.2, -0.8, 1.5) +pl.w3d(1, 1, 1, xmin, xmax, ymin, ymax, zmin, zmax, 20, 45) + +pl.col0(2) +pl.box3("b", "", xmax-xmin, 0, + "b", "", ymax-ymin, 0, + "bcd", "", zmax-zmin, 0) + +pl.schr(0, 1) +pl.mtex3("xp", 3, 0.5, 0.5, "Arbitrarily displaced") +pl.mtex3("xp", 4.5, 0.5, 0.5, "primary X-axis label") +pl.mtex3("xs", -2.5, 0.5, 0.5, "Arbitrarily displaced") +pl.mtex3("xs", -1, 0.5, 0.5, "secondary X-axis label") +pl.mtex3("yp", 3, 0.5, 0.5, "Arbitrarily displaced") +pl.mtex3("yp", 4.5, 0.5, 0.5, "primary Y-axis label") +pl.mtex3("ys", -2.5, 0.5, 0.5, "Arbitrarily displaced") +pl.mtex3("ys", -1, 0.5, 0.5, "secondary Y-axis label") +pl.mtex3("zp", 4.5, 0.5, 0.5, "Arbitrarily displaced") +pl.mtex3("zp", 3, 0.5, 0.5, "primary Z-axis label") +pl.mtex3("zs", -2.5, 0.5, 0.5, "Arbitrarily displaced") +pl.mtex3("zs", -1, 0.5, 0.5, "secondary Z-axis label") + +-- Draw minimal 3D grid to finish defining the 3D box. +pl.mesh(x, y, z, pl.DRAW_LINEXY) + +pl.plend() Property changes on: trunk/examples/lua/x28.lua ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/examples/lua/x30.lua =================================================================== --- trunk/examples/lua/x30.lua 2009-02-11 05:21:56 UTC (rev 9504) +++ trunk/examples/lua/x30.lua 2009-02-11 08:17:50 UTC (rev 9505) @@ -37,7 +37,7 @@ gcoord = { 0, 0 } bcoord = { 0, 0 } acoord = { 0, 1 } -rev = { false, false } +rev = { 0, 0 } clevel = {} @@ -123,27 +123,20 @@ -- Create the color map with 128 colors and use plscmap1la to initialize -- the color values with a linear varying transparency (or alpha) pl.scmap1n(128) -pl.scmap1la(1, 2, pos, rcoord, gcoord, bcoord, acoord, rev) +pl.scmap1la(1, pos, rcoord, gcoord, bcoord, acoord, rev) -- Create a 2 x 2 array that contains the z values (0.0 to 1.0) that will -- used for the shade plot. plshades will use linear interpolation to -- calculate the z values of all the intermediate points in this array. ---[[plAlloc2dGrid(&z, 2, 2); -z[0][0] = 0.0; -z[1][0] = 0.0; -z[0][1] = 1.0; -z[1][1] = 1.0; +z = { {0, 1}, {0, 1} } -/* Set the color levels array. These levels are also between 0.0 and 1.0 */ -for(i=0;i<101;i++){ - clevel[i] = 0.01 * (PLFLT)i; -} +-- Set the color levels array. These levels are also between 0.0 and 1.0 +for i=1, 101 do + clevel[i] = 0.01 * (i-1) +end -/* Draw the shade plot with zmin = 0.0, zmax = 1.0 and x and y coordinate ranges */ -/* such that it fills the entire plotting area. */ -plshades(z, 2, 2, NULL, 0.0, 1.0, 0.0, 1.0, clevel, 101, 0, -1, 2, plfill, 1, NULL, NULL); +-- Draw the shade plot with zmin = 0.0, zmax = 1.0 and x and y coordinate ranges +-- such that it fills the entire plotting area. +pl.shades(z, 0, 1, 0, 1, clevel, 0, -1, 2, 1); -plFree2dGrid(z,2,2);--]] - pl.plend() - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-11 08:23:39
|
Revision: 9506 http://plplot.svn.sourceforge.net/plplot/?rev=9506&view=rev Author: smekal Date: 2009-02-11 08:23:29 +0000 (Wed, 11 Feb 2009) Log Message: ----------- Added lua example 23 which works (?) only with Lua 5.1 in the moment since Lua 5.0 doesn't know hexadecimal values (0xfefe). Fixed svn properties. Modified Paths: -------------- trunk/examples/lua/x26.lua trunk/examples/lua/x27.lua trunk/examples/lua/x28.lua Added Paths: ----------- trunk/examples/lua/x23.lua Property Changed: ---------------- trunk/examples/lua/x26.lua trunk/examples/lua/x27.lua trunk/examples/lua/x28.lua Added: trunk/examples/lua/x23.lua =================================================================== --- trunk/examples/lua/x23.lua (rev 0) +++ trunk/examples/lua/x23.lua 2009-02-11 08:23:29 UTC (rev 9506) @@ -0,0 +1,331 @@ +--[[ $Id$ + + Displays Greek letters and mathematically interesting Unicode ranges + + Copyright (C) 2009 Werner Smekal + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + +---------------------------------------------------------------------------- +-- main +-- +-- Displays Greek letters and mathematically interesting Unicode ranges +---------------------------------------------------------------------------- + +Greek = { + "#gA","#gB","#gG","#gD","#gE","#gZ","#gY","#gH","#gI","#gK","#gL","#gM", + "#gN","#gC","#gO","#gP","#gR","#gS","#gT","#gU","#gF","#gX","#gQ","#gW", + "#ga","#gb","#gg","#gd","#ge","#gz","#gy","#gh","#gi","#gk","#gl","#gm", + "#gn","#gc","#go","#gp","#gr","#gs","#gt","#gu","#gf","#gx","#gq","#gw" +} + +Type1 = { + 0x0020,0x0021,0x0023,0x0025,0x0026, + 0x0028,0x0029,0x002b,0x002c,0x002e, + 0x002f,0x0030,0x0031,0x0032,0x0033, + 0x0034,0x0035,0x0036,0x0037,0x0038, + 0x0039,0x003a,0x003b,0x003c,0x003d, + 0x003e,0x003f,0x005b,0x005d,0x005f, + 0x007b,0x007c,0x007d,0x00a9,0x00ac, + 0x00ae,0x00b0,0x00b1,0x00d7,0x00f7, + 0x0192,0x0391,0x0392,0x0393,0x0394, + 0x0395,0x0396,0x0397,0x0398,0x0399, + 0x039a,0x039b,0x039c,0x039d,0x039e, + 0x039f,0x03a0,0x03a1,0x03a3,0x03a4, + 0x03a5,0x03a6,0x03a7,0x03a8,0x03a9, + 0x03b1,0x03b2,0x03b3,0x03b4,0x03b5, + 0x03b6,0x03b7,0x03b8,0x03b9,0x03ba, + 0x03bb,0x03bc,0x03bd,0x03be,0x03bf, + 0x03c0,0x03c1,0x03c2,0x03c3,0x03c4, + 0x03c5,0x03c6,0x03c7,0x03c8,0x03c9, + 0x03d1,0x03d2,0x03d5,0x03d6,0x2022, + 0x2026,0x2032,0x2033,0x203e,0x2044, + 0x2111,0x2118,0x211c,0x2122,0x2126, + 0x2135,0x2190,0x2191,0x2192,0x2193, + 0x2194,0x21b5,0x21d0,0x21d1,0x21d2, + 0x21d3,0x21d4,0x2200,0x2202,0x2203, + 0x2205,0x2206,0x2207,0x2208,0x2209, + 0x220b,0x220f,0x2211,0x2212,0x2215, + 0x2217,0x221a,0x221d,0x221e,0x2220, + 0x2227,0x2228,0x2229,0x222a,0x222b, + 0x2234,0x223c,0x2245,0x2248,0x2260, + 0x2261,0x2264,0x2265,0x2282,0x2283, + 0x2284,0x2286,0x2287,0x2295,0x2297, + 0x22a5,0x22c5,0x2320,0x2321,0x2329, + 0x232a,0x25ca,0x2660,0x2663,0x2665, + 0x2666 +} + +title = { + "#<0x10>PLplot Example 23 - Greek Letters", + "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (a)", + "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (b)", + "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (c)", + "#<0x10>PLplot Example 23 - Number Forms Unicode Block", + "#<0x10>PLplot Example 23 - Arrows Unicode Block (a)", + "#<0x10>PLplot Example 23 - Arrows Unicode Block (b)", + "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (a)", + "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (b)", + "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (c)", + "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (d)" +} + +lo = { + 0x0, + 0x0, + 0x40, + 0x80, + 0x2153, + 0x2190, + 0x21d0, + 0x2200, + 0x2240, + 0x2280, + 0x22c0 +} + +hi = { + 0x30, + 0x40, + 0x80, + 0xA6, + 0x2184, + 0x21d0, + 0x2200, + 0x2240, + 0x2280, + 0x22c0, + 0x2300 +} + +nxcells = { + 12, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8 +} + +nycells = { + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8 +} + +-- non-zero values Must be consistent with nxcells and nycells. +offset = { + 0, + 0, + 64, + 128, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +} + +-- 30 possible FCI values. +FCI_COMBINATIONS = 30 +fci = { + 0x80000000, + 0x80000001, + 0x80000002, + 0x80000003, + 0x80000004, + 0x80000010, + 0x80000011, + 0x80000012, + 0x80000013, + 0x80000014, + 0x80000020, + 0x80000021, + 0x80000022, + 0x80000023, + 0x80000024, + 0x80000100, + 0x80000101, + 0x80000102, + 0x80000103, + 0x80000104, + 0x80000110, + 0x80000111, + 0x80000112, + 0x80000113, + 0x80000114, + 0x80000120, + 0x80000121, + 0x80000122, + 0x80000123, + 0x80000124 +} + +family = { + "sans-serif", + "serif", + "monospace", + "script", + "symbol" +} + +style = { + "upright", + "italic", + "oblique" +} + +weight = { + "medium", + "bold" +} + +-- Parse and process command line arguments +pl.parseopts(arg, PL_PARSE_FULL) + +-- Initialize plplot +pl.init() + +for page=1, 11 do + pl.adv(0) + + -- Set up viewport and window + pl.vpor(0.02, 0.98, 0.02, 0.90) + pl.wind(0, 1, 0, 1) + xmin, xmax, ymin, ymax = pl.gspa() + pl.schr(0, 0.8) + ycharacter_scale = (1-0)/(ymax-ymin) + + -- Factor should be 0.5, but heuristically it turns out to be larger. + chardef, charht = plgchr() + yoffset = charht*ycharacter_scale + + -- Draw the grid using plbox + pl.col0(2) + deltax = 1.0/nxcells[page] + deltay = 1.0/nycells[page] + pl.box("bcg", deltax, 0, "bcg", deltay, 0) + pl.col0(15) + length=hi[page]-lo[page] + slice = 1 + + for j=nycells[page]-1, -1, -1 do + y = (0.5+j)*deltay + for i=1, nxcells[page] do + x = (i-0.5)*deltax + if (slice < length) { + if page==1 then + cmdString = "#" .. Greek[slice] + else if (page>=2) and (page<=4) then + cmdString = string.format("##[0x%.4x]", Type1[offset[page]+slice-1]) + else if page>4 then + cmdString = string.format("##[0x%.4x]", lo[page]+slice-1) + end + pl.ptex(x, y+yoffset, 1, 0, 0.5, string.sub(cmdString,2)) + pl.ptex(x, y-yoffset, 1, 0, 0.5, cmdString) + end + slice = slice + 1 + end + end + + pl.schr(0, 1) + + -- Page title + pl.mtex("t", 1.5, 0.5, 0.5, title[page]) +end + +-- Demonstrate methods of getting the current fonts +fci_old = plgfci() +ifamily, istyle, iweight = plgfont() +print(string.format("For example 23 prior to page 12 the FCI is 0x%x\n", fci_old)) +print(string.format("For example 23 prior to page 12 the font family, style and weight are %s %s %s\n", + family[ifamily+1], style[istyle+1], weight[iweight+1])) + +for page=12, 16 do + dy = 0.030 + + pl.adv(0) + pl.vpor(0.02, 0.98, 0.02, 0.90) + pl.wind(0, 1, 0, 1) + pl.sfci(0) + + if page==12 then + pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with plsfci") + else if page==13 then + pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with plsfont") + else if page==14 then + pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with ##<0x8nnnnnnn> construct") + else if page==15 then + pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with ##<0xmn> constructs") + else if page==15 then + pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with ##<FCI COMMAND STRING/> constructs") + end + + pl.schr(0, 0.75) + for i=1, FCI_COMBINATIONS do + family_index = math.mod(i-1, 5)+1 + style_index = math.mod((i-1)/5, 3)+1 + weight_index = math.mod((i-1)/5/3, 2)+1 + if page==12 then + pl.sfci(fci[i]) + str = string.format("Page 12, %s, %s, %s: The quick brown fox jumps over the lazy dog", + family[family_index], style[style_index], weight[weight_index]) + else if page==13 do + pl.sfont(family_index-1, style_index-1, weight_index-1) + str = string.format("Page 13, %s, %s, %s: The quick brown fox jumps over the lazy dog", + family[family_index], style[style_index], weight[weight_index]) + else if page==14 do + str = string.format("Page 14, %s, %s, %s: #<0x%x>The quick brown fox jumps over the lazy dog", + family[family_index], style[style_index], weight[weight_index], fci[i]) + else if page==15 do + str = string.format("Page 15, %s, %s, %s: #<0x%1x0>#<0x%1x1>#<0x%1x2>The quick brown fox jumps over the lazy dog", + family[family_index], style[style_index], weight[weight_index], + family_index-1, style_index-1, weight_index-1) + else if page==16 do + str = string.format("Page 16, %s, %s, %s: #<%s/>#<%s/>#<%s/>The quick brown fox jumps over the lazy dog", + family[family_index], style[style_index], weight[weight_index], + family[family_index], style[style_index], weight[weight_index]) + end + pl.ptex(0, 1-(i-0.5)*dy, 1, 0, 0, str) + end + + pl.schr(0, 1) +end + +-- Restore defaults +pl.col0(1) + +pl.plend() Property changes on: trunk/examples/lua/x23.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/examples/lua/x26.lua =================================================================== --- trunk/examples/lua/x26.lua 2009-02-11 08:17:50 UTC (rev 9505) +++ trunk/examples/lua/x26.lua 2009-02-11 08:23:29 UTC (rev 9506) @@ -1,6 +1,6 @@ --[[ -*- coding: utf-8 -*- - $Id: $ + $Id$ Multi-lingual version of the first page of example 4. Property changes on: trunk/examples/lua/x26.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Modified: trunk/examples/lua/x27.lua =================================================================== --- trunk/examples/lua/x27.lua 2009-02-11 08:17:50 UTC (rev 9505) +++ trunk/examples/lua/x27.lua 2009-02-11 08:23:29 UTC (rev 9506) @@ -1,4 +1,4 @@ ---[[ $Id: $ +--[[ $Id$ Drawing "spirograph" curves - epitrochoids, cycolids, roulettes Property changes on: trunk/examples/lua/x27.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Modified: trunk/examples/lua/x28.lua =================================================================== --- trunk/examples/lua/x28.lua 2009-02-11 08:17:50 UTC (rev 9505) +++ trunk/examples/lua/x28.lua 2009-02-11 08:23:29 UTC (rev 9506) @@ -1,4 +1,4 @@ ---[[ $Id: $ +--[[ $Id$ pl.mtex3, plptex3 demo. Property changes on: trunk/examples/lua/x28.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-11 08:26:16
|
Revision: 9507 http://plplot.svn.sourceforge.net/plplot/?rev=9507&view=rev Author: smekal Date: 2009-02-11 08:26:13 +0000 (Wed, 11 Feb 2009) Log Message: ----------- Small improvements on examples 12 and 13 which still don't pass the tests. Modified Paths: -------------- trunk/examples/lua/x12.lua trunk/examples/lua/x13.lua Modified: trunk/examples/lua/x12.lua =================================================================== --- trunk/examples/lua/x12.lua 2009-02-11 08:23:29 UTC (rev 9506) +++ trunk/examples/lua/x12.lua 2009-02-11 08:26:13 UTC (rev 9507) @@ -51,6 +51,12 @@ y0 = {} +pos = { 0, 0.25, 0.5, 0.75, 1 } +red = { 0, 0.25, 0.5, 1, 1 } +green = { 1, 0.5, 0.5, 0.5, 1 } +blue = { 1, 1, 0.5, 0.25, 0 } + + -- Parse and process command line arguments pl.parseopts(arg, pl.PL_PARSE_FULL); @@ -65,22 +71,15 @@ pl.col0(2) pl.lab("Year", "Widget Sales (millions)", "#frPLplot Example 12") -y0[1] = 5 -y0[2] = 15 -y0[3] = 12 -y0[4] = 24 -y0[5] = 28 -y0[6] = 30 -y0[7] = 20 -y0[8] = 8 -y0[9] = 12 -y0[10] = 3 +y0 = { 5, 15, 12, 24, 28, 30, 20, 8, 12, 3} +pl.scmap1l(1, pos, red, green, blue, { 0, 0, 0, 0 }); + for i=1, 10 do - pl.col0(i); + pl.col0((i-1)/9.0); pl.psty(0); pl.fbox((1980. + i - 1), y0[i]); - pl.ptex((1980. + i - .5), (y0[i] + 1.), 1.0, 0.0, .5, tostring(y0[i])); + pl.ptex((1980. + i - .5), (y0[i] + 1.), 1, 0, .5, tostring(y0[i])); pl.mtex("b", 1.0, (i * .1 - .05), 0.5, tostring(1980+i-1)); end Modified: trunk/examples/lua/x13.lua =================================================================== --- trunk/examples/lua/x13.lua 2009-02-11 08:23:29 UTC (rev 9506) +++ trunk/examples/lua/x13.lua 2009-02-11 08:26:13 UTC (rev 9507) @@ -83,7 +83,7 @@ just = 1 end - pl.ptex((x[(j-1) / 2] + dx), (y[(j-1) / 2] + dy), 1.0, 0.0, just, text[i]); + pl.ptex((x[(j-1)/2] + dx), (y[(j-1)/2] + dy), 1, 0, just, text[i]); theta0 = theta1 - dthet end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-11 13:44:31
|
Revision: 9508 http://plplot.svn.sourceforge.net/plplot/?rev=9508&view=rev Author: smekal Date: 2009-02-11 13:44:13 +0000 (Wed, 11 Feb 2009) Log Message: ----------- Added lua example 14 (working but incomplete). Lua example 23 is working in Lua 5.1 (finished). Modified Paths: -------------- trunk/examples/lua/CMakeLists.txt trunk/examples/lua/x23.lua Added Paths: ----------- trunk/examples/lua/x14.lua Modified: trunk/examples/lua/CMakeLists.txt =================================================================== --- trunk/examples/lua/CMakeLists.txt 2009-02-11 08:26:13 UTC (rev 9507) +++ trunk/examples/lua/CMakeLists.txt 2009-02-11 13:44:13 UTC (rev 9508) @@ -32,14 +32,19 @@ "11" "12" "13" +"14" "15" "16" "17" "18" "19" "22" +"23" "24" "25" +"26" +"27" +"28" "29" "30" "31" Added: trunk/examples/lua/x14.lua =================================================================== --- trunk/examples/lua/x14.lua (rev 0) +++ trunk/examples/lua/x14.lua 2009-02-11 13:44:13 UTC (rev 9508) @@ -0,0 +1,362 @@ +--[[ $Id$ + + Demo of multiple stream/window capability (requires Tk or Tcl-DP). + + Maurice LeBrun + IFS, University of Texas at Austin + + Copyright (C) 2009 Werner Smekal + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + +xs = {} +ys = {} +space0 = {} +mark0 = {} +space1 = { 1500 } +mark1 = { 1500 } + + +function plot1() + x = {} + y = {} + + for i = 1, 60 do + x[i] = xoff + xscale*i/60 + y[i] = yoff + yscale*x[i]^2 + end + + xmin = x[1] + xmax = x[60] + ymin = y[1] + ymax = y[60] + + for i = 1, 6 do + xs[i] = x[(i-1)*10 + 4] + ys[i] = y[(i-1)*10 + 4] + end + + -- Set up the viewport and window using PLENV. The range in X is + -- 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are + -- scaled separately (just = 0), and we just draw a labelled + -- box (axis = 0). + pl.col0(1) + pl.env(xmin, xmax, ymin, ymax, 0, 0) + pl.col0(6) + pl.lab("(x)", "(y)", "#frPLplot Example 1 - y=x#u2") + + -- Plot the data points + pl.col0(9) + pl.poin(xs, ys, 9) + + -- Draw the line through the data + pl.col0(4) + pl.line(x, y) + pl.flush() +end + + +function plot2() + x = {} + y = {} + + -- Set up the viewport and window using PLENV. The range in X is -2.0 to + -- 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately + -- (just = 0), and we draw a box with axes (axis = 1). + pl.col0(1) + pl.env(-2, 10, -0.4, 1.2, 0, 1) + pl.col0(2) + pl.lab("(x)", "sin(x)/x", "#frPLplot Example 1 - Sinc Function") + + -- Fill up the arrays + for i = 1, 100 do + x[i] = (i-20)/6 + y[i] = 1 + if x[i]~=0 then + y[i] = math.sin(x[i])/x[i] + end + end + + -- Draw the line + pl.col0(3) + pl.line(x, y) + pl.flush() +end + + +function plot3() + x = {} + y = {} + + -- For the final graph we wish to override the default tick intervals, and + -- so do not use PLENV + pl.adv(0) + + -- Use standard viewport, and define X range from 0 to 360 degrees, Y range + -- from -1.2 to 1.2. + pl.vsta() + pl.wind(0, 360, -1.2, 1.2) + + -- Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. + pl.col0(1) + pl.box("bcnst", 60, 2, "bcnstv", 0.2, 2) + + -- Superimpose a dashed line grid, with 1.5 mm marks and spaces. plstyl + -- expects a pointer!! + pl.styl(mark1, space1) + pl.col0(2) + pl.box("g", 30, 0, "g", 0.2, 0) + pl.styl(mark0, space0) + + pl.col0(3) + pl.lab("Angle (degrees)", "sine", "#frPLplot Example 1 - Sine function") + + for i = 1, 101 do + x[i] = 3.6 * (i-1) + y[i] = math.sin(x[i]*math.pi/180) + end + + pl.col0(4) + pl.line(x, y) + pl.flush() +end + + +function plot4() + x0 = {} + y0 = {} + x = {} + y = {} + + dtr = math.pi/180 + for i = 1, 361 do + x0[i] = math.cos(dtr*(i-1)) + y0[i] = math.sin(dtr*(i-1)) + end + + -- Set up viewport and window, but do not draw box + pl.env(-1.3, 1.3, -1.3, 1.3, 1, -2) + for i = 1, 10 do + for j = 1, 361 do + x[j] = 0.1*i*x0[j] + y[j] = 0.1*i*y0[j] + end + + -- Draw circles for polar grid + pl.line(x, y) + end + + pl.col0(2) + for i = 1, 12 do + theta = 30.0 * (i-1) + dx = math.cos(dtr * theta) + dy = math.sin(dtr * theta) + + -- Draw radial spokes for polar grid + pl.join(0, 0, dx, dy) + + -- Write labels for angle + -- Slightly off zero to avoid floating point logic flips at 90 and 270 deg. + if dx>=-0.00001 then + pl.ptex(dx, dy, dx, dy, -0.15, tostring(theta)) + else + pl.ptex(dx, dy, -dx, -dy, 1.15, tostring(theta)) + end + end + + x = {} + y = {} + + -- Draw the graph + for i = 1, 361 do + r = math.sin(dtr * (5*(i-1))) + x[i] = x0[i] * r + y[i] = y0[i] * r + end + + pl.col0(3) + pl.line(x, y) + + pl.col0(4) + pl.mtex("t", 2, 0.5, 0.5, "#frPLplot Example 3 - r(#gh)=sin 5#gh") + pl.flush() +end + +-- Demonstration of contour plotting + +XPTS = 35 +YPTS = 46 +XSPA = 2/(XPTS-1) +YSPA = 2/(YPTS-1) + +tr = { XSPA, 0, -1, 0, YSPA, -1 } + +function mypltr(x, y, pltr_data) + tx = tr[1]*x + tr[2]*y + tr[3] + ty = tr[4]*x + tr[5]*y + tr[6] + + return tx, ty +end + +clevel = { -1, -.8, -.6, -.4, -.2, 0, .2, .4, .6, .8, 1 } + +function plot5() + mark = { 1500 } + space = { 1500 } + + -- Set up function arrays + z = {} + w = {} + + for i = 1, XPTS do + xx = (i-1-math.floor(XPTS/2))/math.floor(XPTS/2) + z[i] = {} + w[i] = {} + for j = 1, YPTS do + yy = (j-1-math.floor(YPTS/2))/math.floor(YPTS/2)-1 + z[i][j] = xx * xx - yy * yy + w[i][j] = 2 * xx * yy + end + end + + pl.env(-1, 1, -1, 1, 0, 0) + pl.col0(2) + --pl.cont(z, 1, XPTS, 1, YPTS, clevel, mypltr) + pl.styl(mark, space) + pl.col0(3) + --pl.cont(w, 1, XPTS, 1, YPTS, clevel, mypltr) + pl.col0(1) + pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") + pl.flush() +end + + +---------------------------------------------------------------------------- +-- main +-- +-- Plots several simple functions from other example programs. +-- +-- This version sends the output of the first 4 plots (one page) to two +-- independent streams. +---------------------------------------------------------------------------- + +-- Select either TK or DP driver and use a small window +-- Using DP results in a crash at the end due to some odd cleanup problems +-- The geometry strings MUST be in writable memory +geometry_master = "500x410+100+200" +geometry_slave = "500x410+650+200" + +-- plplot initialization +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +driver = pl.gdev() +fam, num, bmax = pl.gfam() + +print("Demo of multiple output streams via the " .. driver .." driver.") +print("Running with the second stream as slave to the first.\n") + +-- If valid geometry specified on command line, use it for both streams. +xp0, yp0, xleng0, yleng0, xoff0, yoff0 = pl.gpage() +valid_geometry = xleng0>0 and yleng0>0 + +-- Set up first stream +if valid_geometry==true then + pl.spage(xp0, yp0, xleng0, yleng0, xoff0, yoff0) +else + pl.setopt("geometry", geometry_master) +end + +pl.sdev(driver) +pl.ssub(2, 2) +pl.init() + +-- Start next stream +pl.sstrm(1) + +if valid_geometry==true then + pl.spage(xp0, yp0, xleng0, yleng0, xoff0, yoff0) +else + pl.setopt("geometry", geometry_slave) +end + +-- Turn off pause to make this a slave (must follow master) +pl.spause(0) +pl.sdev(driver) +pl.sfam(fam,num,bmax) + +-- Currently number of digits in format number can only be +--set via the command line option +pl.setopt("fflen", "2") +pl.init() + +-- Set up the data & plot +-- Original case +pl.sstrm(0) + +xscale = 6 +yscale = 1 +xoff = 0 +yoff = 0 +plot1() + +-- Set up the data & plot +xscale = 1 +yscale = 1e6 +plot1() + +-- Set up the data & plot +xscale = 1. +yscale = 1.e-6 +digmax = 2 +pl.syax(digmax, 0) +plot1() + +-- Set up the data & plot +xscale = 1 +yscale = 0.0014 +yoff = 0.0185 +digmax = 5 +pl.syax(digmax, 0) +plot1() + +-- To slave +-- The pleop() ensures the eop indicator gets lit. +pl.sstrm(1) +plot4() +pl.eop() + +-- Back to master +pl.sstrm(0) +plot2() +plot3() + +-- To slave +pl.sstrm(1) +plot5() +pl.eop() + +-- Back to master to wait for user to advance +pl.sstrm(0) +pl.eop() + +-- Call plend to finish off. +pl.plend() Property changes on: trunk/examples/lua/x14.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/examples/lua/x23.lua =================================================================== --- trunk/examples/lua/x23.lua 2009-02-11 08:26:13 UTC (rev 9507) +++ trunk/examples/lua/x23.lua 2009-02-11 13:44:13 UTC (rev 9508) @@ -214,7 +214,7 @@ } -- Parse and process command line arguments -pl.parseopts(arg, PL_PARSE_FULL) +pl.parseopts(arg, pl.PL_PARSE_FULL) -- Initialize plplot pl.init() @@ -230,7 +230,7 @@ ycharacter_scale = (1-0)/(ymax-ymin) -- Factor should be 0.5, but heuristically it turns out to be larger. - chardef, charht = plgchr() + chardef, charht = pl.gchr() yoffset = charht*ycharacter_scale -- Draw the grid using plbox @@ -246,12 +246,12 @@ y = (0.5+j)*deltay for i=1, nxcells[page] do x = (i-0.5)*deltax - if (slice < length) { + if slice<=length then if page==1 then cmdString = "#" .. Greek[slice] - else if (page>=2) and (page<=4) then - cmdString = string.format("##[0x%.4x]", Type1[offset[page]+slice-1]) - else if page>4 then + elseif (page>=2) and (page<=4) then + cmdString = string.format("##[0x%.4x]", Type1[offset[page]+slice]) + elseif page>4 then cmdString = string.format("##[0x%.4x]", lo[page]+slice-1) end pl.ptex(x, y+yoffset, 1, 0, 0.5, string.sub(cmdString,2)) @@ -268,10 +268,10 @@ end -- Demonstrate methods of getting the current fonts -fci_old = plgfci() -ifamily, istyle, iweight = plgfont() -print(string.format("For example 23 prior to page 12 the FCI is 0x%x\n", fci_old)) -print(string.format("For example 23 prior to page 12 the font family, style and weight are %s %s %s\n", +fci_old = pl.gfci() +ifamily, istyle, iweight = pl.gfont() +print(string.format("For example 23 prior to page 12 the FCI is 0x%x", fci_old)) +print(string.format("For example 23 prior to page 12 the font family, style and weight are %s %s %s", family[ifamily+1], style[istyle+1], weight[iweight+1])) for page=12, 16 do @@ -284,37 +284,37 @@ if page==12 then pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with plsfci") - else if page==13 then + elseif page==13 then pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with plsfont") - else if page==14 then + elseif page==14 then pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with ##<0x8nnnnnnn> construct") - else if page==15 then + elseif page==15 then pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with ##<0xmn> constructs") - else if page==15 then + elseif page==16 then pl.mtex("t", 1.5, 0.5, 0.5, "#<0x10>PLplot Example 23 - Set Font with ##<FCI COMMAND STRING/> constructs") end pl.schr(0, 0.75) for i=1, FCI_COMBINATIONS do family_index = math.mod(i-1, 5)+1 - style_index = math.mod((i-1)/5, 3)+1 - weight_index = math.mod((i-1)/5/3, 2)+1 + style_index = math.mod(math.floor((i-1)/5), 3)+1 + weight_index = math.mod(math.floor((i-1)/5/3), 2)+1 if page==12 then pl.sfci(fci[i]) str = string.format("Page 12, %s, %s, %s: The quick brown fox jumps over the lazy dog", family[family_index], style[style_index], weight[weight_index]) - else if page==13 do + elseif page==13 then pl.sfont(family_index-1, style_index-1, weight_index-1) str = string.format("Page 13, %s, %s, %s: The quick brown fox jumps over the lazy dog", family[family_index], style[style_index], weight[weight_index]) - else if page==14 do + elseif page==14 then str = string.format("Page 14, %s, %s, %s: #<0x%x>The quick brown fox jumps over the lazy dog", family[family_index], style[style_index], weight[weight_index], fci[i]) - else if page==15 do + elseif page==15 then str = string.format("Page 15, %s, %s, %s: #<0x%1x0>#<0x%1x1>#<0x%1x2>The quick brown fox jumps over the lazy dog", family[family_index], style[style_index], weight[weight_index], family_index-1, style_index-1, weight_index-1) - else if page==16 do + elseif page==16 then str = string.format("Page 16, %s, %s, %s: #<%s/>#<%s/>#<%s/>The quick brown fox jumps over the lazy dog", family[family_index], style[style_index], weight[weight_index], family[family_index], style[style_index], weight[weight_index]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-11 21:05:05
|
Revision: 9510 http://plplot.svn.sourceforge.net/plplot/?rev=9510&view=rev Author: smekal Date: 2009-02-11 21:05:00 +0000 (Wed, 11 Feb 2009) Log Message: ----------- Lua examples 9, 15, 16, 19, 22 run now although they don't produce correct results. Some function calls (which are not implemented correctly in the bindings) are commented out. Modified Paths: -------------- trunk/examples/lua/x09.lua trunk/examples/lua/x15.lua trunk/examples/lua/x16.lua trunk/examples/lua/x19.lua trunk/examples/lua/x22.lua Modified: trunk/examples/lua/x09.lua =================================================================== --- trunk/examples/lua/x09.lua 2009-02-11 13:45:32 UTC (rev 9509) +++ trunk/examples/lua/x09.lua 2009-02-11 21:05:00 UTC (rev 9510) @@ -81,7 +81,7 @@ r = (i-1)/(RPTS-1) cgrid2["xg"][i] = {} cgrid2["yg"][i] = {} - z = {} + z[i] = {} for j = 1, THETAPTS do theta = (2*math.pi/(THETAPTS-1))*(j-1) cgrid2["xg"][i][j] = r*math.cos(theta) @@ -95,7 +95,7 @@ end pl.col0(2) - pl.cont(z, 1, RPTS, 1, THETAPTS, lev, cgrid2) + --pl.cont(z, 1, RPTS, 1, THETAPTS, lev, cgrid2) pl.col0(1) pl.lab("", "", "Polar Contour Plot") end @@ -141,8 +141,8 @@ cgrid2["yg"][i] = {} for j = 1, PTHETAPTS do theta = 2*math.pi/(PTHETAPTS-1)*(j-0.5) - cgrid2["xg"][i][j] = r*cos(theta) - cgrid2["yg"][i][j] = r*sin(theta) + cgrid2["xg"][i][j] = r*math.cos(theta) + cgrid2["yg"][i][j] = r*math.sin(theta) end end @@ -163,7 +163,6 @@ -- Charge 1 is placed at (d1, d1), with image charge at (d2, d2). -- Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). -- Also put in smoothing term at small distances. - eps = 2 q1 = 1 d1 = rmax/4 @@ -221,13 +220,13 @@ if nlevelneg>1 then -- Negative contours pl.lsty(2) - pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelneg, pltr2, cgrid2) + --pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelneg, "pltr2", cgrid2) end if nlevelpos>1 then -- Positive contours pl.lsty(1) - pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelpos, pltr2, cgrid2) + --pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelpos, "pltr2", cgrid2) end -- Draw outer boundary @@ -309,10 +308,10 @@ pl.setcontlabelparam(0.006, 0.3, 0.1, 1) pl.env(-1, 1, -1, 1, 0, 0) pl.col0(2) -pl.cont(z, 1, XPTS, 1, YPTS, clevel, mypltr, nil) +--pl.cont(z, 1, XPTS, 1, YPTS, clevel, mypltr) pl.styl(mark, space) pl.col0(3) -pl.cont(w, XPTS, YPTS, 1, XPTS, 1, YPTS, clevel, 11, mypltr, nil) +--pl.cont(w, 1, XPTS, 1, YPTS, clevel, mypltr) pl.styl({}, {}) pl.col0(1) pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") @@ -321,10 +320,10 @@ -- Plot using 1d coordinate transform pl.env(-1, 1, -1, 1, 0, 0) pl.col0(2) -pl.cont(z, 1, XPTS, 1, YPTS, clevel, 11, pltr1, cgrid1) +--pl.cont(z, 1, XPTS, 1, YPTS, clevel, 11, "pltr1", cgrid1) pl.styl(mark, space) pl.col0(3) -pl.cont(w, 1, XPTS, 1, YPTS, clevel, 11, pltr1, cgrid1) +--pl.cont(w, 1, XPTS, 1, YPTS, clevel, 11, "pltr1", cgrid1) pl.styl({}, {}) pl.col0(1) pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") @@ -332,11 +331,11 @@ -- Plot using 2d coordinate transform pl.env(-1, 1, -1, 1, 0, 0) pl.col0(2) -pl.cont(z, 1, XPTS, 1, YPTS, clevel, pltr2, cgrid2) +--pl.cont(z, 1, XPTS, 1, YPTS, clevel, "pltr2", cgrid2) -pl.styl(1, mark, space) +pl.styl(mark, space) pl.col0(3) -pl.cont(w, 1, XPTS, 1, YPTS, clevel, pltr2, cgrid2) +--pl.cont(w, 1, XPTS, 1, YPTS, clevel, "pltr2", cgrid2) pl.styl({}, {}) pl.col0(1) pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") Modified: trunk/examples/lua/x15.lua =================================================================== --- trunk/examples/lua/x15.lua 2009-02-11 13:45:32 UTC (rev 9509) +++ trunk/examples/lua/x15.lua 2009-02-11 21:05:00 UTC (rev 9510) @@ -31,179 +31,123 @@ -- Function prototypes -----------------------------------------------------------------------------*\ - * cmap1_init1 - * - * Initializes color map 1 in HLS space. -\*-------------------------------------------------------------------------- +---------------------------------------------------------------------------- +-- cmap1_init1 +-- +-- Initializes color map 1 in HLS space. +---------------------------------------------------------------------------- -static void -cmap1_init1(void) -{ - PLFLT i[4], h[4], l[4], s[4] +function cmap1_init1() + i = { 0, 0,45, 0.55, 1 } -- left boundary, just before center, + -- just after center, right boundary + h = { 260, 260, 20, 20 } -- hue -- low: blue-violet, only change as we go over vertex + -- hue -- high: red, keep fixed + l = { 0.5, 0, 0, 0.5 } -- lightness -- low, lightness -- center + -- lightness -- center, lightness -- high + s = { 1, 1, 1, 1 } -- maximum saturation - i[0] = 0 -- left boundary - i[1] = 0.45 -- just before center - i[2] = 0.55 -- just after center - i[3] = 1 -- right boundary + pl.scmap1l(0, i, h, l, s, {}) +end - h[0] = 260 -- hue -- low: blue-violet - h[1] = 260 -- only change as we go over vertex - h[2] = 20 -- hue -- high: red - h[3] = 20 -- keep fixed -#if 1 - l[0] = 0.5 -- lightness -- low - l[1] = 0.0 -- lightness -- center - l[2] = 0.0 -- lightness -- center - l[3] = 0.5 -- lightness -- high -#else - plscolbg(255,255,255) - l[0] = 0.5 -- lightness -- low - l[1] = 1.0 -- lightness -- center - l[2] = 1.0 -- lightness -- center - l[3] = 0.5 -- lightness -- high -#endif - s[0] = 1 -- maximum saturation - s[1] = 1 -- maximum saturation - s[2] = 1 -- maximum saturation - s[3] = 1 -- maximum saturation +---------------------------------------------------------------------------- +-- cmap1_init2 +-- +-- Initializes color map 1 in HLS space. +---------------------------------------------------------------------------- - c_plscmap1l(0, 4, i, h, l, s, NULL) -} +function cmap1_init2() + i = { 0, 0.45, 0.55, 1 } -- left boundary, just before center, + -- just after center, right boundary + h = { 260, 260, 20, 20 } -- hue -- low: blue-violet, only change as we go over vertex + -- hue -- high: red, keep fixed + l = { 0.6, 0, 0, 0.6 } -- lightness -- low, lightness -- center + -- lightness -- center, lightness -- high + s = { 1, 0.5, 0.5, 1 } -- saturation -- low, saturation -- center + -- saturation -- center, saturation -- high -----------------------------------------------------------------------------*\ - * cmap1_init2 - * - * Initializes color map 1 in HLS space. -\*-------------------------------------------------------------------------- + pl.scmap1l(0, i, h, l, s, {0, 0, 0, 0}) +end -static void -cmap1_init2(void) -{ - PLFLT i[4], h[4], l[4], s[4] - i[0] = 0 -- left boundary - i[1] = 0.45 -- just before center - i[2] = 0.55 -- just after center - i[3] = 1 -- right boundary +---------------------------------------------------------------------------- +-- plot1 +-- +-- Illustrates a single shaded region. +---------------------------------------------------------------------------- - h[0] = 260 -- hue -- low: blue-violet - h[1] = 260 -- only change as we go over vertex - h[2] = 20 -- hue -- high: red - h[3] = 20 -- keep fixed +function plot1() + sh_cmap = 0 -#if 1 - l[0] = 0.6 -- lightness -- low - l[1] = 0.0 -- lightness -- center - l[2] = 0.0 -- lightness -- center - l[3] = 0.6 -- lightness -- high -#else - plscolbg(255,255,255) - l[0] = 0.5 -- lightness -- low - l[1] = 1.0 -- lightness -- center - l[2] = 1.0 -- lightness -- center - l[3] = 0.5 -- lightness -- high -#endif - s[0] = 1 -- saturation -- low - s[1] = 0.5 -- saturation -- center - s[2] = 0.5 -- saturation -- center - s[3] = 1 -- saturation -- high + pl.adv(0) + pl.vpor(0.1, 0.9, 0.1, 0.9) + pl.wind(-1, 1, -1, 1) - c_plscmap1l(0, 4, i, h, l, s, NULL) -} + -- Plot using identity transform + shade_min = zmin + (zmax-zmin)*0.4 + shade_max = zmin + (zmax-zmin)*0.6 + sh_color = 7 + sh_width = 2 + min_color = 9 + max_color = 2 + min_width = 2 + max_width = 2 -----------------------------------------------------------------------------*\ - * plot1 - * - * Illustrates a single shaded region. -\*-------------------------------------------------------------------------- + pl.psty(8) + --pl.shade1(z, -1, 1, -1, 1, shade_min, shade_max, sh_cmap, sh_color, sh_width, + -- min_color, min_width, max_color, max_width, 1) -static void -plot1(void) -{ - PLFLT shade_min, shade_max, sh_color - PLINT sh_cmap = 0, sh_width - PLINT min_color = 0, min_width = 0, max_color = 0, max_width = 0 + pl.col0(1) + pl.box("bcnst", 0, 0, "bcnstv", 0, 0) + pl.col0(2) + pl.lab("distance", "altitude", "Bogon flux") +end - pladv(0) - plvpor(0.1, 0.9, 0.1, 0.9) - plwind(-1, 1, -1, 1.0) --- Plot using identity transform +---------------------------------------------------------------------------- +-- plot2 +-- +-- Illustrates multiple adjacent shaded regions, using different fill +-- patterns for each region. +---------------------------------------------------------------------------- - shade_min = zmin + (zmax-zmin)*0.4 - shade_max = zmin + (zmax-zmin)*0.6 - sh_color = 7 - sh_width = 2 - min_color = 9 - max_color = 2 - min_width = 2 - max_width = 2 +function plot2() + sh_cmap = 0 + min_color = 0 + min_width = 0 + max_color = 0 + max_width = 0 - plpsty(8) - plshade1(&z[0][0], XPTS, YPTS, NULL, -1., 1., -1., 1., - shade_min, shade_max, - sh_cmap, sh_color, sh_width, - min_color, min_width, max_color, max_width, - plfill, 1, NULL, NULL) + inc = { {450}, {-450}, {0}, {900}, {300}, + {450,-450}, {0, 900}, {0, 450}, {450, -450}, {0, 900} } + del = { {2000}, {2000}, {2000}, {2000}, {2000}, + {2000, 2000}, {2000, 2000}, {2000, 2000}, {4000, 4000}, {4000, 2000} } - plcol0(1) - plbox("bcnst", 0, 0, "bcnstv", 0, 0) - plcol0(2) - pllab("distance", "altitude", "Bogon flux") -} + sh_width = 2 -----------------------------------------------------------------------------*\ - * plot2 - * - * Illustrates multiple adjacent shaded regions, using different fill - * patterns for each region. -\*-------------------------------------------------------------------------- + pl.adv(0) + pl.vpor(0.1, 0.9, 0.1, 0.9) + pl.wind(-1, 1, -1, 1) -static void -plot2(void) -{ - PLFLT shade_min, shade_max, sh_color - PLINT sh_cmap = 0, sh_width - PLINT min_color = 0, min_width = 0, max_color = 0, max_width = 0 - int i - static PLINT nlin[10] = {1, 1, 1, 1, 1, 2, 2, 2, 2, 2} - static PLINT inc[10][2] = { {450, 0}, {-450, 0}, {0, 0}, {900, 0}, - {300, 0}, {450,-450}, {0, 900}, {0, 450}, - {450, -450}, {0, 900} } - static PLINT del[10][2] = { {2000, 2000}, {2000, 2000}, {2000, 2000}, - {2000, 2000}, {2000, 2000}, {2000, 2000}, - {2000, 2000}, {2000, 2000}, {4000, 4000}, - {4000, 2000} } - - sh_width = 2 - - pladv(0) - plvpor(0.1, 0.9, 0.1, 0.9) - plwind(-1, 1, -1, 1.0) - --- Plot using identity transform + -- Plot using identity transform - for (i = 0 i < 10 i++) { - shade_min = zmin + (zmax - zmin) * i / 10.0 - shade_max = zmin + (zmax - zmin) * (i +1) / 10.0 - sh_color = i+6 - plpat(nlin[i],inc[i],del[i]) + for i = 1, 10 do + shade_min = zmin + (zmax - zmin) * (i-1)/10 + shade_max = zmin + (zmax - zmin) * i/10 + sh_color = i+5 + pl.pat(inc[i], del[i]) - plshade1(&z[0][0], XPTS, YPTS, NULL, -1., 1., -1., 1., - shade_min, shade_max, - sh_cmap, sh_color, sh_width, - min_color, min_width, max_color, max_width, - plfill, 1, NULL, NULL) - } + --pl.shade1(z, -1, 1, -1, 1, shade_min, shade_max, sh_cmap, sh_color, sh_width, + -- min_color, min_width, max_color, max_width, 1) + end - plcol0(1) - plbox("bcnst", 0, 0, "bcnstv", 0, 0) - plcol0(2) - pllab("distance", "altitude", "Bogon flux") -} + pl.col0(1) + pl.box("bcnst", 0, 0, "bcnstv", 0, 0) + pl.col0(2) + pl.lab("distance", "altitude", "Bogon flux") +end + ---------------------------------------------------------------------------- -- plot3 -- @@ -219,7 +163,7 @@ pl.adv(0) pl.vpor(0.1, 0.9, 0.1, 0.9) pl.wind(-1, 1, -1, 1.) - pl.w3d(1., 1., 1., -1, 1, -1, 1, 0, 1.5, 30, -40) + pl.w3d(1, 1, 1, -1, 1, -1, 1, 0, 1.5, 30, -40) -- Plot using identity transform pl.col0(1) @@ -236,27 +180,27 @@ pl.fill3(xx[2], yy[2], zz[2]) end + ---------------------------------------------------------------------------- -- f2mnmx -- -- Returns min & max of input 2d array. ---------------------------------------------------------------------------- -function F(a,b) (f[a*ny+b]) +function f2mnmx(f, nx, ny) + fmax = f[1][1] + fmin = fmax -function f2mnmx(PLFLT *f, PLINT nx, PLINT ny, PLFLT *fmin, PLFLT *fmax) - fmax = f[0] - fmin = fmax - - for i = 1, nx do - for j = 1,ny do - fmax = MAX(*fmax, F(i, j)) - fmin = MIN(*fmin, F(i, j)) - end - end + for i=1, nx do + for j=1, ny do + fmax = math.max(fmax, f[i][j]) + fmin = math.min(fmin, f[i][j]) + end + end + + return fmin, fmax end - ---------------------------------------------------------------------------- -- main -- @@ -266,9 +210,6 @@ -- Parse and process command line arguments pl.parseopts(arg, pl.PL_PARSE_FULL) --- Set up color map 0 -pl.scmap0n(3) - -- Set up color map 1 cmap1_init2() @@ -277,12 +218,11 @@ -- Set up data array for i=1, XPTS do - xx = ((i-1) - math.floor(XPTS/2)) / math.floor(XPTS/2) + xx = ((i-1) - math.floor(XPTS/2))/math.floor(XPTS/2) z[i] = {} - for j=1, YPTS do - yy = ((j-1) - math.floor(YPTS/2)) / math.floor(YPTS/2) - 1 - - z[i][j] = xx*xx - yy*yy + (xx - yy)/(xx*xx+yy*yy + 0.1) + for j = 1, YPTS do + yy = ((j-1) - math.floor(YPTS/2))/math.floor(YPTS/2) - 1 + z[i][j] = xx^2 - yy^2 + (xx - yy)/(xx^2+yy^2 + 0.1) end end zmin, zmax = f2mnmx(z, XPTS, YPTS) Modified: trunk/examples/lua/x16.lua =================================================================== --- trunk/examples/lua/x16.lua 2009-02-11 13:45:32 UTC (rev 9509) +++ trunk/examples/lua/x16.lua 2009-02-11 21:05:00 UTC (rev 9510) @@ -56,7 +56,7 @@ fmin = fmax for i = 1, nx do - for j = 1,ny do + for j = 1, ny do fmax = math.max(fmax, f[i][j]) fmin = math.min(fmin, f[i][j]) end @@ -96,12 +96,7 @@ pl.init() -- Set up transformation function -tr[1] = 2/(nx-1) -tr[2] = 0 -tr[3] = -1 -tr[4] = 0 -tr[5] = 2/(ny-1) -tr[6] = -1 +tr = { 2/(nx-1), 0, -1, 0, 2/(ny-1), -1 } -- Allocate data structures clevel = {} @@ -111,14 +106,13 @@ -- Set up data array for i = 1, nx do - x = (i-1 - math.floor(nx/2)) / math.floor(nx/2) + x = (i-1 - math.floor(nx/2))/math.floor(nx/2) z[i] = {} w[i] = {} for j = 1, ny do - y = (j-1 - math.floor(ny/2)) / math.floor(ny/2) - 1 - - z[i][j] = - math.sin(7*x) * math.cos(7*y) + x^2 - y^2 - w[i][j] = - math.cos(7*x) * math.sin(7*y) + 2*x*y + y = (j-1 - math.floor(ny/2))/math.floor(ny/2)-1 + z[i][j] = -math.sin(7*x) * math.cos(7*y) + x^2 - y^2 + w[i][j] = -math.cos(7*x) * math.sin(7*y) + 2*x*y end end @@ -132,11 +126,13 @@ end -- Set up coordinate grids +cgrid1 = {} cgrid1["xg"] = {} cgrid1["yg"] = {} cgrid1["nx"] = nx cgrid1["ny"] = ny +cgrid2 = {} cgrid2["xg"] = {} cgrid2["yg"] = {} cgrid2["nx"] = nx @@ -167,10 +163,7 @@ pl.psty(0) -pl.shades(z, {}, -1, 1, -1, 1, - shedge, fill_width, - cont_color, cont_width, - plfill, 1, {}, {}) +pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 1) pl.col0(1) pl.box("bcnst", 0, 0, "bcnstv", 0, 0) @@ -180,149 +173,108 @@ pl.lab("distance", "altitude", "Bogon density") -- Plot using 1d coordinate transform - - pladv(0) - plvpor(0.1, 0.9, 0.1, 0.9) - plwind(-1.0, 1.0, -1.0, 1.0) +pl.adv(0) +pl.vpor(0.1, 0.9, 0.1, 0.9) +pl.wind(-1, 1, -1, 1) - plpsty(0) +pl.psty(0) - plshades(z, nx, ny, NULL, -1., 1., -1., 1., - shedge, ns+1, fill_width, - cont_color, cont_width, - plfill, 1, pltr1, cgrid1) +--pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 1, "pltr1", cgrid1) - plcol0(1) - plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) - plcol0(2) --- - plcont(w, nx, ny, 1, nx, 1, ny, clevel, ns, pltr1, cgrid1) - - pllab("distance", "altitude", "Bogon density") +pl.col0(1) +pl.box("bcnst", 0, 0, "bcnstv", 0, 0) +pl.col0(2) +pl.lab("distance", "altitude", "Bogon density") -- Plot using 2d coordinate transform +pl.adv(0) +pl.vpor(0.1, 0.9, 0.1, 0.9) +pl.wind(-1, 1, -1, 1) - pladv(0) - plvpor(0.1, 0.9, 0.1, 0.9) - plwind(-1.0, 1.0, -1.0, 1.0) +pl.psty(0) - plpsty(0) +--pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 0, "pltr2", cgrid2) - plshades(z, nx, ny, NULL, -1., 1., -1., 1., - shedge, ns+1, fill_width, - cont_color, cont_width, - plfill, 0, pltr2, cgrid2) +pl.col0(1) +pl.box("bcnst", 0, 0, "bcnstv", 0, 0) +pl.col0(2) +--pl.cont(w, 1, nx, 1, ny, clevel, "pltr2", cgrid2) - plcol0(1) - plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) - plcol0(2) - plcont(w, nx, ny, 1, nx, 1, ny, clevel, ns, pltr2, cgrid2) +pl.lab("distance", "altitude", "Bogon density, with streamlines") - pllab("distance", "altitude", "Bogon density, with streamlines") - -- Plot using 2d coordinate transform +pl.adv(0) +pl.vpor(0.1, 0.9, 0.1, 0.9) +pl.wind(-1, 1, -1, 1) - pladv(0) - plvpor(0.1, 0.9, 0.1, 0.9) - plwind(-1.0, 1.0, -1.0, 1.0) +pl.psty(0) - plpsty(0) +--pl.shades(z, -1, 1, -1, 1, shedge, fill_width, 2, 3, 0, "pltr2", cgrid2) - plshades(z, nx, ny, NULL, -1., 1., -1., 1., - shedge, ns+1, fill_width, - 2, 3, - plfill, 0, pltr2, cgrid2) +pl.col0(1) +pl.box("bcnst", 0, 0, "bcnstv", 0, 0) +pl.col0(2) - plcol0(1) - plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) - plcol0(2) --- plcont(w, nx, ny, 1, nx, 1, ny, clevel, ns, pltr2, (void *) &cgrid2) +pl.lab("distance", "altitude", "Bogon density") - pllab("distance", "altitude", "Bogon density") - -- Note this exclusion API will probably change. -- Plot using 2d coordinate transform and exclusion +if exclude~=0 then + pl.adv(0) + pl.vpor(0.1, 0.9, 0.1, 0.9) + pl.wind(-1, 1, -1, 1) - if exclude~=0 then - pladv(0) - plvpor(0.1, 0.9, 0.1, 0.9) - plwind(-1.0, 1.0, -1.0, 1.0) + plpsty(0) - plpsty(0) + pl.shades(z, zdefined, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, + 0, "pltr2", cgrid2) - plshades(z, nx, ny, zdefined, -1., 1., -1., 1., - shedge, ns+1, fill_width, - cont_color, cont_width, - plfill, 0, pltr2, cgrid2) + pl.col0(1) + pl.box("bcnst", 0, 0, "bcnstv", 0, 0) - plcol0(1) - plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) + pl.lab("distance", "altitude", "Bogon density with exclusion") +end - pllab("distance", "altitude", "Bogon density with exclusion") - - end -- Example with polar coordinates. +pl.adv(0) +pl.vpor(.1, .9, .1, .9) +pl.wind(-1, 1, -1, 1) - pladv(0) - plvpor( .1, .9, .1, .9 ) - plwind( -1., 1., -1., 1. ) +pl.psty(0) - plpsty(0) +-- Build new coordinate matrices. +for i = 1, nx do + r = (i-1)/(nx-1) + for j = 1, ny do + t = 2*math.pi/(ny-1)*(j-1) + cgrid2["xg"][i][j] = r*math.cos(t) + cgrid2["yg"][i][j] = r*math.sin(t) + z[i][j] = math.exp(-r^2)*math.cos(5*math.pi*r)*math.cos(5*t) + end +end - -- Build new coordinate matrices. - - for (i = 0 i < nx i++) { - r = ((PLFLT) i)/ (nx-1) - for (j = 0 j < ny j++) { - t = (2.*M_PI/(ny-1.))*j - cgrid2.xg[i][j] = r*cos(t) - cgrid2.yg[i][j] = r*sin(t) - z[i][j] = exp(-r*r)*cos(5.*M_PI*r)*cos(5.*t) - } - } +-- Need a new shedge to go along with the new data set. +zmin, zmax = f2mnmx(z, nx, ny) - -- Need a new shedge to go along with the new data set. +for i = 1, ns+1 do + shedge[i] = zmin + (zmax-zmin)*(i-1)/ns +end - f2mnmx(z, nx, ny, &zmin, &zmax) +-- Now we can shade the interior region. +--pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 0, "pltr2", cgrid2) - for (i = 0 i < ns+1 i++) - shedge[i] = zmin + (zmax - zmin) * (PLFLT) i / (PLFLT) ns - - -- Now we can shade the interior region. - plshades(z, nx, ny, NULL, -1., 1., -1., 1., - shedge, ns+1, fill_width, - cont_color, cont_width, - plfill, 0, pltr2, (void *) &cgrid2) - -- Now we can draw the perimeter. (If do before, shade stuff may overlap.) - for (i = 0 i < PERIMETERPTS i++) { - t = (2.*M_PI/(PERIMETERPTS-1))*(double)i - px[i] = cos(t) - py[i] = sin(t) - } - plcol0(1) - plline(PERIMETERPTS, px, py) - - -- And label the plot. +for i = 1, PERIMETERPTS do + t = 2*math.pi/(PERIMETERPTS-1)*(i-1) + px[i] = math.cos(t) + py[i] = math.sin(t) +end +pl.col0(1) +pl.line(px, py) + +-- And label the plot. +pl.col0(2) +pl.lab( "", "", "Tokamak Bogon Instability" ) - plcol0(2) - pllab( "", "", "Tokamak Bogon Instability" ) - - --- Clean up - - free((void *) clevel) - free((void *) shedge) - free((void *) xg1) - free((void *) yg1) - plFree2dGrid(z, nx, ny) - plFree2dGrid(w, nx, ny) - plFree2dGrid(cgrid2.xg, nx, ny) - plFree2dGrid(cgrid2.yg, nx, ny) - - plend() - - exit(0) -} - +pl.plend() Modified: trunk/examples/lua/x19.lua =================================================================== --- trunk/examples/lua/x19.lua 2009-02-11 13:45:32 UTC (rev 9509) +++ trunk/examples/lua/x19.lua 2009-02-11 21:05:00 UTC (rev 9510) @@ -85,8 +85,8 @@ maxx = 360 pl.env(-75., 75., -75., 75., 1, -1) -pl.map(mapform19,"globe", minx, maxx, miny, maxy) +--pl.map(mapform19, "globe", minx, maxx, miny, maxy) pl.lsty(2) -pl.meridians(mapform19, 10, 10, 0, 360, -10, 80) +--pl.meridians(mapform19, 10, 10, 0, 360, -10, 80) pl.plend() Modified: trunk/examples/lua/x22.lua =================================================================== --- trunk/examples/lua/x22.lua 2009-02-11 13:45:32 UTC (rev 9509) +++ trunk/examples/lua/x22.lua 2009-02-11 21:05:00 UTC (rev 9510) @@ -43,6 +43,7 @@ ymin = -ny/2*dy ymax = ny/2*dy + cgrid2 = {} cgrid2["xg"] = {} cgrid2["yg"] = {} cgrid2["nx"] = nx @@ -51,7 +52,7 @@ v = {} -- Create data - circulation around the origin. - for i=1, nx do + for i = 1, nx do x = (i-1-nx/2+0.5)*dx cgrid2["xg"][i] = {} cgrid2["yg"][i] = {} @@ -59,8 +60,8 @@ v[i] = {} for j=1, ny do y = (j-1-ny/2+0.5)*dy - cgrid2xg[i][j] = x - cgrid2yg[i][j] = y + cgrid2["xg"][i][j] = x + cgrid2["yg"][i][j] = y u[i][j] = y v[i][j] = -x end @@ -70,7 +71,7 @@ pl.env(xmin, xmax, ymin, ymax, 0, 0) pl.lab("(x)", "(y)", "#frPLplot Example 22 - circulation") pl.col0(2) - pl.vect(u, v, nx, ny, 0.0, pltr2, (void *)&cgrid2 ) + --pl.vect(u, v, 0, "pltr2", cgrid2 ) pl.col0(1) end @@ -87,6 +88,7 @@ ymin = -ny/2*dy ymax = ny/2*dy + cgrid2 = {} cgrid2["xg"] = {} cgrid2["yg"] = {} cgrid2["nx"] = nx @@ -94,14 +96,14 @@ u = {} v = {} - Q = 2.0 - for i=1, nx do + Q = 2 + for i = 1, nx do x = (i-1-nx/2+0.5)*dx cgrid2["xg"][i] = {} cgrid2["yg"][i] = {} u[i] = {} v[i] = {} - for j=1, ny do + for j = 1, ny do y = (j-1-ny/2+0.5)*dy cgrid2["xg"][i][j] = x cgrid2["yg"][i][j] = y @@ -120,7 +122,7 @@ pl.env(xmin, xmax, ymin, ymax, 0, 0) pl.lab("(x)", "(y)", "#frPLplot Example 22 - constriction") pl.col0(2) - pl.vect(u, v, nx, ny, -0.5, pltr2, cgrid2) + --pl.vect(u, v, -0.5, "pltr2", cgrid2) pl.col0(1) end @@ -137,124 +139,108 @@ end return fmin, fmax -} +end -- Vector plot of the gradient of a shielded potential (see example 9) - -void potential() { -#if !defined(WIN32) - const int nper = 100 - const int nlevel = 10 - const int nr = 20 - const int ntheta = 20 -#else -#define nper 100 -#define nlevel 10 -#define nr 20 -#define ntheta 20 -#endif +function potential() + nper = 100 + nlevel = 10 + nr = 20 + ntheta = 20 - int i,j - PLFLT eps, q1, d1, q1i, d1i, q2, d2, q2i, d2i - PLFLT div1, div1i, div2, div2i - PLFLT **u, **v, **z, r, theta, x, y, dz - PLFLT xmin, xmax, ymin, ymax, rmax, zmax, zmin - PLFLT px[nper], py[nper], clevel[nlevel] - PLcGrid2 cgrid2 + u = {} + v = {} + z = {} + clevel = {} + px = {} + py = {} + cgrid2 = {} + cgrid2["xg"] = {} + cgrid2["yg"] = {} + cgrid2["nx"] = nr + cgrid2["ny"] = ntheta - -- Create data to be plotted - plAlloc2dGrid(&cgrid2.xg,nr,ntheta) - plAlloc2dGrid(&cgrid2.yg,nr,ntheta) - plAlloc2dGrid(&u,nr,ntheta) - plAlloc2dGrid(&v,nr,ntheta) - plAlloc2dGrid(&z,nr,ntheta) + -- Potential inside a conducting cylinder (or sphere) by method of images. + -- Charge 1 is placed at (d1, d1), with image charge at (d2, d2). + -- Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). + -- Also put in smoothing term at small distances. + rmax = nr - cgrid2.nx = nr - cgrid2.ny = ntheta + eps = 2 - -- Potential inside a conducting cylinder (or sphere) by method of images. - * Charge 1 is placed at (d1, d1), with image charge at (d2, d2). - * Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). - * Also put in smoothing term at small distances. - + q1 = 1 + d1 = rmax/4 - rmax = (double) nr + q1i = -q1*rmax/d1 + d1i = rmax^2/d1 - eps = 2. + q2 = -1 + d2 = rmax/4 - q1 = 1. - d1 = rmax/4. + q2i = -q2*rmax/d2 + d2i = rmax^2/d2 - q1i = - q1*rmax/d1 - d1i = pow(rmax, 2.)/d1 - - q2 = -1. - d2 = rmax/4. - - q2i = - q2*rmax/d2 - d2i = pow(rmax, 2.)/d2 - - for (i = 0 i < nr i++) { - r = 0.5 + (double) i - for (j = 0 j < ntheta j++) { - theta = 2.*M_PI/(ntheta-1)*(0.5+(double)j) - x = r*cos(theta) - y = r*sin(theta) - cgrid2.xg[i][j] = x - cgrid2.yg[i][j] = y - div1 = sqrt(pow(x-d1, 2.) + pow(y-d1, 2.) + pow(eps, 2.)) - div1i = sqrt(pow(x-d1i, 2.) + pow(y-d1i, 2.) + pow(eps, 2.)) - div2 = sqrt(pow(x-d2, 2.) + pow(y+d2, 2.) + pow(eps, 2.)) - div2i = sqrt(pow(x-d2i, 2.) + pow(y+d2i, 2.) + pow(eps, 2.)) + for i = 1, nr do + r = i - 0.5 + cgrid2["xg"][i] = {} + cgrid2["yg"][i] = {} + u[i] = {} + v[i] = {} + z[i] = {} + for j = 1, ntheta do + theta = 2*math.pi/(ntheta-1)*(j-0.5) + x = r*math.cos(theta) + y = r*math.sin(theta) + cgrid2["xg"][i][j] = x + cgrid2["yg"][i][j] = y + div1 = math.sqrt((x-d1)^2 + (y-d1)^2 + eps^2) + div1i = math.sqrt((x-d1i)^2 + (y-d1i)^2 + eps^2) + div2 = math.sqrt((x-d2)^2 + (y+d2)^2 + eps^2) + div2i = math.sqrt((x-d2i)^2 + (y+d2i)^2 + eps^2) z[i][j] = q1/div1 + q1i/div1i + q2/div2 + q2i/div2i - u[i][j] = -q1*(x-d1)/pow(div1,3.) - q1i*(x-d1i)/pow(div1i,3.0) - - q2*(x-d2)/pow(div2,3.) - q2i*(x-d2i)/pow(div2i,3.) - v[i][j] = -q1*(y-d1)/pow(div1,3.) - q1i*(y-d1i)/pow(div1i,3.0) - - q2*(y+d2)/pow(div2,3.) - q2i*(y+d2i)/pow(div2i,3.) - } - } + u[i][j] = -q1*(x-d1)/div1^3 - q1i*(x-d1i)/div1i^3 + -q2*(x-d2)/div2^3 - q2i*(x-d2i)/div2i^3 + v[i][j] = -q1*(y-d1)/div1^3 - q1i*(y-d1i)/div1i^3 + -q2*(y+d2)/div2^3 - q2i*(y+d2i)/div2i^3 + end + end - f2mnmx(cgrid2.xg, nr, ntheta, &xmin, &xmax) - f2mnmx(cgrid2.yg, nr, ntheta, &ymin, &ymax) - f2mnmx(z, nr, ntheta, &zmin, &zmax) + xmin, xmax = f2mnmx(cgrid2["xg"], nr, ntheta) + ymin, ymax = f2mnmx(cgrid2["yg"], nr, ntheta) + zmin, zmax = f2mnmx(z, nr, ntheta) - plenv(xmin, xmax, ymin, ymax, 0, 0) - pllab("(x)", "(y)", "#frPLplot Example 22 - potential gradient vector plot") - -- Plot contours of the potential - dz = (zmax-zmin)/(double) nlevel - for (i = 0 i < nlevel i++) { - clevel[i] = zmin + ((double) i + 0.5)*dz - } - plcol0(3) - pllsty(2) - plcont(z,nr,ntheta,1,nr,1,ntheta,clevel,nlevel,pltr2,(void *) &cgrid2) - pllsty(1) - plcol0(1) + pl.env(xmin, xmax, ymin, ymax, 0, 0) + pl.lab("(x)", "(y)", "#frPLplot Example 22 - potential gradient vector plot") - -- Plot the vectors of the gradient of the potential - plcol0(2) - plvect(u,v,nr,ntheta,25.0,pltr2,(void *)&cgrid2) - plcol0(1) + -- Plot contours of the potential + dz = (zmax-zmin)/nlevel + for i = 1, nlevel do + clevel[i] = zmin + (i-0.5)*dz + end + + pl.col0(3) + pl.lsty(2) + --pl.cont(z, 1, nr, 1, ntheta, clevel, "pltr2", cgrid2) + pl.lsty(1) + pl.col0(1) - -- Plot the perimeter of the cylinder - for (i=0i<nperi++) { - theta = (2.*M_PI/(nper-1))*(double)i - px[i] = rmax*cos(theta) - py[i] = rmax*sin(theta) - } - plline(nper,px,py) + -- Plot the vectors of the gradient of the potential + pl.col0(2) + --pl.vect(u, v, 25, "pltr2", cgrid2) + pl.col0(1) - plFree2dGrid(z,nr,ntheta) - plFree2dGrid(cgrid2.xg,nr,ntheta) - plFree2dGrid(cgrid2.yg,nr,ntheta) - plFree2dGrid(u,nr,ntheta) - plFree2dGrid(v,nr,ntheta) + -- Plot the perimeter of the cylinder + for i=1, nper do + theta = 2*math.pi/(nper-1)*(i-1) + px[i] = rmax*math.cos(theta) + py[i] = rmax*math.sin(theta) + end + + pl.line(px, py) +end -} - - ---------------------------------------------------------------------------- -- main -- @@ -269,18 +255,17 @@ circulation() -narr = 6 fill = 0 -- Set arrow style using arrow_x and arrow_y then -- plot using these arrows. -pl.svect(arrow_x, arrow_y, narr, fill) +pl.svect(arrow_x, arrow_y, fill) constriction() -- Set arrow style using arrow2_x and arrow2_y then -- plot using these filled arrows. fill = 1 -pl.svect(arrow2_x, arrow2_y, narr, fill) +pl.svect(arrow2_x, arrow2_y, fill) constriction() potential() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-12 20:44:28
|
Revision: 9515 http://plplot.svn.sourceforge.net/plplot/?rev=9515&view=rev Author: smekal Date: 2009-02-12 20:44:18 +0000 (Thu, 12 Feb 2009) Log Message: ----------- Added Lua examples 20 and 21 (run, but no correct results yet). Modified Paths: -------------- trunk/examples/lua/CMakeLists.txt Added Paths: ----------- trunk/examples/lua/x20.lua trunk/examples/lua/x21.lua Modified: trunk/examples/lua/CMakeLists.txt =================================================================== --- trunk/examples/lua/CMakeLists.txt 2009-02-12 05:30:35 UTC (rev 9514) +++ trunk/examples/lua/CMakeLists.txt 2009-02-12 20:44:18 UTC (rev 9515) @@ -38,6 +38,8 @@ "17" "18" "19" +"20" +"21" "22" "23" "24" Added: trunk/examples/lua/x20.lua =================================================================== --- trunk/examples/lua/x20.lua (rev 0) +++ trunk/examples/lua/x20.lua 2009-02-12 20:44:18 UTC (rev 9515) @@ -0,0 +1,304 @@ +--[[ $Id$ + + plimage demo +--]] + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + +XDIM = 260 +YDIM = 220 + +dbg = 0 +nosombrero = 0 +nointeractive = 1 +f_name="" + +--stretch_data = { +-- xmin, xmax, ymin, ymax +-- stretch +--} + + +-- Transformation function +function mypltr( x, y, s) + x0 = (s["xmin"] + s["xmax"])*0.5 + y0 = (s["ymin"] + s["ymax"])*0.5 + dy = (s["ymax"]-s["ymin"])*0.5 + tx = x0 + (x0-x)*(1.0 - s["stretch"]*math.cos((y-y0)/dy*math.pi*0.5)) + ty = y + + return tx, ty +end + + +-- read image from file in binary ppm format +function read_img(fname) + -- naive grayscale binary ppm reading. If you know how to, improve it + local fp = io.open(fname, "rb") + if fp==nil then + return 1 + end + + -- version + ver = fp:read("*line") + + if ver==nil then -- version + fp:close() + return 1 + end + + if ver~="P5" then -- I only understand this! + fp:close() + return 1 + end + + c = fp:read(1) + while c=="#" do + com = fp:read("*line") + if com==nil then -- version + fp:close() + return 1 + end + c = fp:read(1) + end + fp:seek("cur", -1) + + w, h, num_col = fp:read("*number", "*number", "*number") + if w==nil or h==nil or num_col==nil then -- width, height num colors + fp:close() + return 1 + end + + img = {} + imf = {} + + img = fp:read(w*h) + if string.len(img)~=w*h then + fp:close() + return 1 + end + fp:close() + + for i = 1, w do + imf[i] = {} + for j = 1, h do + index = (h-j)*w+i + imf[i][j] = string.byte(img, index) -- flip image up-down + end + end + + return 0, imf, w, h, num_col +end + + +-- save plot +function save_plot(fname) + cur_strm = pl.gstrm() -- get current stream + new_strm = pl.mkstrm() -- create a new one + + pl.sdev("psc") -- new device type. Use a known existing driver + pl.sfnam(fname) -- file name + + pl.cpstrm(cur_strm, 0) -- copy old stream parameters to new stream + pl.replot() -- do the save + pl.end1() -- close new device + + pl.sstrm(cur_strm) -- and return to previous one +end + + +-- get selection square interactively +function get_clip(xi, xe, yi, ye) + return 0, xi, xe, yi, ye +end + + +-- set gray colormap +function gray_cmap(num_col) + r = { 0, 1 } + g = { 0, 1 } + b = { 0, 1 } + pos = { 0, 1 } + + pl.scmap1n(num_col) + pl.scmap1l(1, pos, r, g, b, { 0 }) +end + + +x = {} +y = {} +z = {} +r = {} +img_f = {} +cgrid2 = {} + + +-- Bugs in plimage(): +-- + at high magnifications, the left and right edge are ragged, try +-- ./x20c -dev xwin -wplt 0.3,0.3,0.6,0.6 -ori 0.5 + +-- Bugs in x20c.c: +-- + if the window is resized after a selection is made on "lena", when + --making a new selection the old one will re-appear. + + +-- Parse and process command line arguments +pl.parseopts(arg, pl.PL_PARSE_FULL) + +-- Initialize plplot +pl.init() + +-- view image border pixels +if dbg~=0 then + pl.env(1, XDIM, 1, YDIM, 1, 1) -- no plot box + + -- build a one pixel square border, for diagnostics + for i = 1, XDIM do + z[i] = {} + z[i][1] = 1 -- left + z[i][YDIM] = 1 -- right + end + + for i = 1, YDIM do + z[1][i] = 1 -- top + z[XDIM][i] = 1 -- botton + end + + pl.lab("...around a blue square."," ","A red border should appear...") + + pl.image(z, 1, XDIM, 1, YDIM, 0, 0, 1, XDIM, 1, YDIM) +end + +-- sombrero-like demo +if nosombrero==0 then + pl.col0(2) -- draw a yellow plot box, useful for diagnostics! :( + pl.env(0, 2*math.pi, 0, 3*math.pi, 1, -1) + + for i = 1, XDIM do + x[i] = (i-1)*2*math.pi/(XDIM-1) + end + for i = 1, YDIM do + y[i] = (i-1)*3*math.pi/(YDIM-1) + end + + for i = 1, XDIM do + r[i] = {} + z[i] = {} + for j=1, YDIM do + r[i][j] = math.sqrt(x[i]^2+y[j]^2)+1e-3 + z[i][j] = math.sin(r[i][j])/(r[i][j]) + end + end + + pl.lab("No, an amplitude clipped \"sombrero\"", "", "Saturn?") + pl.ptex(2, 2, 3, 4, 0, "Transparent image") + pl.image(z, 0, 2*math.pi, 0, 3*math.pi, 0.05, 1, 0, 2*math.pi, 0, 3*math.pi) + + -- save the plot + if f_name~="" then + save_plot(f_name) + end +end + +-- read Lena image +-- Note we try two different locations to cover the case where this +-- examples is being run from the test_c.sh script +status, img_f, width, height, num_col = read_img("lena.pgm") +if status~=0 then + status, img_f, width, height, num_col = read_img("../lena.pgm") + if status~=0 then + -- pl.abort("No such file") TODO + print("No such file") + print( status, width, height ) + pl.plend() + os.exit() + end +end + +-- set gray colormap +gray_cmap(num_col) + +-- display Lena +pl.env(1., width, 1., height, 1, -1) + +if nointeractive==0 then + pl.lab("Set and drag Button 1 to (re)set selection, Button 2 to finish."," ","Lena...") +else + pl.lab(""," ","Lena...") +end + +pl.image(img_f, 1, width, 1, height, 0, 0, 1, width, 1, height) + +-- selection/expansion demo +if nointeractive==0 then + xi = 200 + xe = 330 + yi = 280 + ye = 220 + + status, xi, xe, yi, ye = get_clip(xi, xe, yi, ye) + if status~=0 then -- get selection rectangle + pl.plend() + os.exit() + end + + pl.spause(0) + pl.adv(0) + + -- display selection only + pl.image(img_f, 1, width, 1, height, 0, 0, xi, xe, ye, yi) + + pl.spause(1) + + -- zoom in selection + pl.env(xi, xe, ye, yi, 1, -1) + pl.image(img_f, 1, width, 1, height, 0, 0, xi, xe, ye, yi) +end + +-- Base the dynamic range on the image contents. +img_max, img_min = pl.MinMax2dGrid(img_f) + +-- Draw a saturated version of the original image. Only use the middle 50% +-- of the image's full dynamic range. +pl.col0(2) +pl.env(0, width, 0, height, 1, -1) +pl.lab("", "", "Reduced dynamic range image example") +--pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min + img_max*0.25, img_max - img_max*0.25) + +-- Draw a distorted version of the original image, showing its full dynamic range. +pl.env(0, width, 0, height, 1, -1) +pl.lab("", "", "Distorted image example") + +stretch = {} +stretch["xmin"] = 0 +stretch["xmax"] = width +stretch["ymin"] = 0 +stretch["ymax"] = height +stretch["stretch"] = 0.5 + +-- In C / C++ the following would work, with plimagefr directly calling +-- mypltr. For compatibilty with other language bindings the same effect +-- can be achieved by generating the transformed grid first and then +-- using pltr2. +-- plimagefr(img_f, width, height, 0., width, 0., height, 0., 0., img_min, img_max, mypltr, (PLPointer) &stretch) + +cgrid2 = {} +cgrid2["xg"] = {} +cgrid2["yg"] = {} +cgrid2["nx"] = width+1 +cgrid2["ny"] = height+1 + +for i = 1, width+1 do + cgrid2["xg"][i] = {} + cgrid2["yg"][i] = {} + for j = 1, height+1 do + xx, yy = mypltr(i, j, stretch) + cgrid2["xg"][i][j] = xx + cgrid2["yg"][i][j] = yy + end +end + +--plimagefr(img_f, 0, width, 0, height, 0, 0, img_min, img_max, "pltr2", cgrid2) + +pl.plend() Property changes on: trunk/examples/lua/x20.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/lua/x21.lua =================================================================== --- trunk/examples/lua/x21.lua (rev 0) +++ trunk/examples/lua/x21.lua 2009-02-12 20:44:18 UTC (rev 9515) @@ -0,0 +1,263 @@ +--[[ $Id$ + Grid data demo + + Copyright (C) 200 Werner Smekal + + This file is part of PLplot. + + PLplot is free software you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + + +-- initialise Lua bindings for PLplot examples. +dofile("plplot_examples.lua") + +-- bitwise or operator from http://lua-users.org/wiki/BaseSixtyFour +-- (c) 2006-2008 by Alex Kloss +-- licensed under the terms of the LGPL2 + +-- return single bit (for OR) +function bit(x,b) + return (math.mod(x, 2^b) - math.mod(x,2^(b-1)) > 0) +end + +-- logic OR for number values +function lor(x,y) + result = 0 + for p=1,8 do result = result + (((bit(x,p) or bit(y,p)) == true) and 2^(p-1) or 0) end + return result +end + +-- Options data structure definition. +pts = 500 +xp = 25 +yp = 20 +nl = 16 +knn_order = 20 +threshold = 1.001 +wmin = -1e3 +randn = 0 +rosen = 0 + + +function cmap1_init() + i = { 0, 1 } -- left and right boundary + + h = { 240, 0 } -- blue -> green -> yellow -> red + l = { 0.6, 0.6 } + s = { 0.8, 0.8 } + + pl.scmap1n(256) + pl.scmap1l(0, i, h, l, s, { 0 } ) -- TODO: last table should actually be empty +end + + +function create_grid(px, py) + local x = {} + local y = {} + + for i = 1, px do + x[i] = xm + (xM-xm)*(i-1)/(px-1) + end + + for i = 1, py do + y[i] = ym + (yM-ym)*(i-1)/(py-1) + end + + return x, y +end + + +function create_data(pts) + x = {} + y = {} + z = {} + + for i = 1, pts do + xt = (xM-xm)*pl.randd() + yt = (yM-ym)*pl.randd() + if randn==0 then + x[i] = xt + xm + y[i] = yt + ym + else -- std=1, meaning that many points are outside the plot range + x[i] = math.sqrt(-2*math.log(xt)) * math.cos(2*math.pi*yt) + xm + y[i] = math.sqrt(-2*math.log(xt)) * math.sin(2*math.pi*yt) + ym + end + if rosen==0 then + r = math.sqrt(x[i]^2 + y[i]^2) + z[i] = math.exp(-r^2) * math.cos(2*math.pi*r) + else + z[i] = math.log((1-x[i])^2 + 100*(y[i] - x[i]^2)^2) + end + end + + return x, y, z +end + + +title = { "Cubic Spline Approximation", + "Delaunay Linear Interpolation", + "Natural Neighbors Interpolation", + "KNN Inv. Distance Weighted", + "3NN Linear Interpolation", + "4NN Around Inv. Dist. Weighted" } + + + +xm = -0.2 +ym = -0.2 +xM = 0.6 +yM = 0.6 + +pl.parseopts(arg, pl.PL_PARSE_FULL) + +opt = { 0, 0, wmin, knn_order, threshold, 0 } + +-- Initialize plplot +pl.init() + +-- Initialise random number generator +pl.seed(5489) + +x, y, z = create_data(pts) -- the sampled data +zmin = z[1] +zmax = z[1] +for i=2, pts do + if z[i]>zmax then zmax = z[i] end + if z[i]<zmin then zmin = z[i] end +end + +xg, yg = create_grid(xp, yp) -- grid the data at +zg = {} +for i = 1, xp do + zg[i] = {} + for j = 1, yp do + zg[i][j] = 0 + end +end +clev = {} + +pl.col0(1) +pl.env(xm, xM, ym, yM, 2, 0) +pl.col0(15) +pl.lab("X", "Y", "The original data sampling") +pl.col0(2) +pl.poin(x, y, 5) +pl.adv(0) + +pl.ssub(3, 2) + +for k = 1, 2 do + pl.adv(0) + for alg=1, 6 do + pl.griddata(x, y, z, xg, yg, zg, alg, opt[alg]) + + --[[ + - CSA can generate NaNs (only interpolates?!). + - DTLI and NNI can generate NaNs for points outside the convex hull + of the data points. + - NNLI can generate NaNs if a sufficiently thick triangle is not found + + PLplot should be NaN/Inf aware, but changing it now is quite a job... + so, instead of not plotting the NaN regions, a weighted average over + the neighbors is done. --]] + + + if alg==pl.GRID_CSA or alg==pl.GRID_DTLI or alg==pl.GRID_NNLI or alg==pl.GRID_NNI then + for i = 1, xp do + for j = 1, yp do + if zg[i][j]==nil then -- average (IDW) over the 8 neighbors + zg[i][j] = 0 + dist = 0 + + for ii=i-1, i+1 do + if ii<=xp then + for jj=j-1, j+1 do + if jj<=yp then + if ii>=1 and jj>=1 and zg[ii][jj]~=nil then + if (math.abs(ii-i) + math.abs(jj-j)) == 1 then + d = 1 + else + d = 1.4141 + end + zg[i][j] = zg[i][j] + zg[ii][jj]/(d^2) + dist = dist + d + end + end + end + end + end + if dist~=0 then + zg[i][j] = zg[i][j]/dist + else + zg[i][j] = zmin + end + end + end + end + end + + lzM, lzm = pl.MinMax2dGrid(zg) + + lzm = math.min(lzm, zmin) + lzM = math.max(lzM, zmax) + + -- Increase limits slightly to prevent spurious contours + -- due to rounding errors + lzm = lzm-0.01 + lzM = lzM+0.01 + + pl.col0(1) + + pl.adv(alg) + + if k==1 then + for i = 1, nl do + clev[i] = lzm + (lzM-lzm)/(nl-1)*(i-1) + end + + pl.env0(xm, xM, ym, yM, 2, 0) + pl.col0(15) + pl.lab("X", "Y", title[alg]) + pl.shades(zg, xm, xM, ym, yM, clev, 1, 0, 1, 1) + pl.col0(2) + else + for i = 1, nl do + clev[i] = lzm + (lzM-lzm)/(nl-1)*(i-1) + end + + cmap1_init() + pl.vpor(0, 1, 0, 0.9) + pl.wind(-1.1, 0.75, -0.65, 1.20) + + -- For the comparison to be fair, all plots should have the + -- same z values, but to get the max/min of the data generated + -- by all algorithms would imply two passes. Keep it simple. + -- + -- pl.w3d(1, 1, 1, xm, xM, ym, yM, zmin, zmax, 30, -60) + + + pl.w3d(1, 1, 1, xm, xM, ym, yM, lzm, lzM, 30, -40) + pl.box3("bntu", "X", 0, 0, + "bntu", "Y", 0, 0, + "bcdfntu", "Z", 0.5, 0) + pl.col0(15) + pl.lab("", "", title[alg]) + pl.plot3dc(xg, yg, zg, lor(lor(pl.DRAW_LINEXY, pl.MAG_COLOR), pl.BASE_CONT), clev) + end + end +end + +pl.plend() Property changes on: trunk/examples/lua/x21.lua ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-13 23:22:32
|
Revision: 9526 http://plplot.svn.sourceforge.net/plplot/?rev=9526&view=rev Author: smekal Date: 2009-02-13 22:06:13 +0000 (Fri, 13 Feb 2009) Log Message: ----------- Lot of improvements to the Lua examples to make the output consistent with the output of the C examples. The "examples_compare" part of the test script has the following output: lua Missing examples : Differing postscript output : 09 14a 15 19 20 21 Missing stdout : Differing stdout : 14 31 Modified Paths: -------------- trunk/examples/lua/x08.lua trunk/examples/lua/x09.lua trunk/examples/lua/x12.lua trunk/examples/lua/x13.lua trunk/examples/lua/x16.lua trunk/examples/lua/x17.lua trunk/examples/lua/x18.lua trunk/examples/lua/x20.lua trunk/examples/lua/x22.lua trunk/examples/lua/x27.lua trunk/examples/lua/x28.lua trunk/examples/lua/x29.lua Modified: trunk/examples/lua/x08.lua =================================================================== --- trunk/examples/lua/x08.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x08.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -24,6 +24,24 @@ -- initialise Lua bindings for PLplot examples. dofile("plplot_examples.lua") + +-- bitwise or operator from http://lua-users.org/wiki/BaseSixtyFour +-- (c) 2006-2008 by Alex Kloss +-- licensed under the terms of the LGPL2 + +-- return single bit (for OR) +function bit(x,b) + return (math.mod(x, 2^b) - math.mod(x,2^(b-1)) > 0) +end + +-- logic OR for number values +function lor(x,y) + result = 0 + for p=1,8 do result = result + (((bit(x,p) or bit(y,p)) == true) and 2^(p-1) or 0) end + return result +end + + ---------------------------------------------------------------------------- -- cmap1_init1 -- @@ -51,6 +69,7 @@ pl.scmap1l(0, i, h, l, s, { 0 } ) -- TODO: last table should actually be empty end + ---------------------------------------------------------------------------- -- main -- @@ -156,12 +175,12 @@ if ifshade==3 then -- magnitude colored plot with faceted squares cmap1_init(0) - pl.surf3d(x, y, z, pl.MAG_COLOR or pl.FACETED, {}) + pl.surf3d(x, y, z, lor(pl.MAG_COLOR, pl.FACETED), {}) end if ifshade==4 then -- magnitude colored plot with contours cmap1_init(0) - pl.surf3d(x, y, z, pl.MAG_COLOR or pl.SURF_CONT or pl.BASE_CONT, clevel) + pl.surf3d(x, y, z, lor(lor(pl.MAG_COLOR, pl.SURF_CONT), pl.BASE_CONT), clevel) end end end Modified: trunk/examples/lua/x09.lua =================================================================== --- trunk/examples/lua/x09.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x09.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -95,7 +95,7 @@ end pl.col0(2) - --pl.cont(z, 1, RPTS, 1, THETAPTS, lev, cgrid2) + pl.cont(z, 1, RPTS, 1, THETAPTS, lev, "pltr2", cgrid2) pl.col0(1) pl.lab("", "", "Polar Contour Plot") end @@ -220,13 +220,13 @@ if nlevelneg>1 then -- Negative contours pl.lsty(2) - --pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelneg, "pltr2", cgrid2) + pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelneg, "pltr2", cgrid2) end if nlevelpos>1 then -- Positive contours pl.lsty(1) - --pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelpos, "pltr2", cgrid2) + pl.cont(z, 1, PRPTS, 1, PTHETAPTS, clevelpos, "pltr2", cgrid2) end -- Draw outer boundary @@ -289,7 +289,7 @@ cgrid2["xg"][i] = {} cgrid2["yg"][i] = {} for j = 1, YPTS do - xx, yy = mypltr(i, j) + xx, yy = mypltr(i-1, j-1) argx = xx * math.pi/2 argy = yy * math.pi/2 @@ -320,10 +320,10 @@ -- Plot using 1d coordinate transform pl.env(-1, 1, -1, 1, 0, 0) pl.col0(2) ---pl.cont(z, 1, XPTS, 1, YPTS, clevel, 11, "pltr1", cgrid1) +pl.cont(z, 1, XPTS, 1, YPTS, clevel, "pltr1", cgrid1) pl.styl(mark, space) pl.col0(3) ---pl.cont(w, 1, XPTS, 1, YPTS, clevel, 11, "pltr1", cgrid1) +pl.cont(w, 1, XPTS, 1, YPTS, clevel, "pltr1", cgrid1) pl.styl({}, {}) pl.col0(1) pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") @@ -331,11 +331,11 @@ -- Plot using 2d coordinate transform pl.env(-1, 1, -1, 1, 0, 0) pl.col0(2) ---pl.cont(z, 1, XPTS, 1, YPTS, clevel, "pltr2", cgrid2) +pl.cont(z, 1, XPTS, 1, YPTS, clevel, "pltr2", cgrid2) pl.styl(mark, space) pl.col0(3) ---pl.cont(w, 1, XPTS, 1, YPTS, clevel, "pltr2", cgrid2) +pl.cont(w, 1, XPTS, 1, YPTS, clevel, "pltr2", cgrid2) pl.styl({}, {}) pl.col0(1) pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") Modified: trunk/examples/lua/x12.lua =================================================================== --- trunk/examples/lua/x12.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x12.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -25,17 +25,9 @@ dofile("plplot_examples.lua") function pl.fbox(x0, y0) - x = {} - y = {} + x = { x0, x0, x0+1,x0+1 } + y = { 0, y0, y0, 0 } - x[1] = x0; - y[1] = 0.; - x[2] = x0; - y[2] = y0; - x[3] = x0 + 1.; - y[3] = y0; - x[4] = x0 + 1.; - y[4] = 0.; pl.fill(x, y); pl.col0(1); pl.lsty(1); @@ -66,8 +58,8 @@ pl.adv(0) pl.vsta() -pl.wind(1980.0, 1990.0, 0.0, 35.0) -pl.box("bc", 1.0, 0, "bcnv", 10.0, 0) +pl.wind(1980, 1990, 0, 35) +pl.box("bc", 1, 0, "bcnv", 10, 0) pl.col0(2) pl.lab("Year", "Widget Sales (millions)", "#frPLplot Example 12") @@ -76,11 +68,11 @@ pl.scmap1l(1, pos, red, green, blue, { 0, 0, 0, 0 }); for i=1, 10 do - pl.col0((i-1)/9.0); + pl.col1((i-1)/9.0); pl.psty(0); - pl.fbox((1980. + i - 1), y0[i]); - pl.ptex((1980. + i - .5), (y0[i] + 1.), 1, 0, .5, tostring(y0[i])); - pl.mtex("b", 1.0, (i * .1 - .05), 0.5, tostring(1980+i-1)); + pl.fbox((1980+i-1), y0[i]); + pl.ptex((1980+i-0.5), (y0[i]+1), 1, 0, 0.5, tostring(y0[i])); + pl.mtex("b", 1, (i*0.1-0.05), 0.5, tostring(1980+i-1)); end pl.plend(); Modified: trunk/examples/lua/x13.lua =================================================================== --- trunk/examples/lua/x13.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x13.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -59,32 +59,33 @@ x = { 5 } y = { 5 } j = 2 - -- n.b. the theta quantities multiplied by 2*M_PI/500 afterward so + -- n.b. the theta quantities multiplied by 2*math.pi/500 afterward so -- in fact per is interpreted as a percentage. theta1 = theta0 + 5 * per[i] if i == 5 then theta1 = 500 end for theta = theta0, theta1, dthet do - x[j] = 5 + 3 * math.cos((2*math.pi/500)*theta) - y[j] = 5 + 3 * math.sin((2*math.pi/500)*theta) + x[j] = 5 + 3 * math.cos(2*math.pi/500*theta) + y[j] = 5 + 3 * math.sin(2*math.pi/500*theta) j = j + 1 + thetasave=theta end pl.col0(i) pl.psty(math.mod((i + 2), 8) + 1) pl.fill(x, y) pl.col0(1) pl.line(x, y) - just = (2*math.pi/500)*(theta0 + theta1)/2 - dx = .25 * math.cos(just) - dy = .25 * math.sin(just) + just = 2*math.pi/500*(theta0 + theta1)/2 + dx = 0.25 * math.cos(just) + dy = 0.25 * math.sin(just) if (theta0 + theta1)<250 or (theta0 + theta1)>750 then just = 0 else just = 1 end - pl.ptex((x[(j-1)/2] + dx), (y[(j-1)/2] + dy), 1, 0, just, text[i]); - theta0 = theta1 - dthet + pl.ptex((x[(j-1)/2+1] + dx), (y[(j-1)/2+1] + dy), 1, 0, just, text[i]); + theta0 = thetasave end pl.font(2) Modified: trunk/examples/lua/x16.lua =================================================================== --- trunk/examples/lua/x16.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x16.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -142,7 +142,7 @@ cgrid2["xg"][i] = {} cgrid2["yg"][i] = {} for j = 1, ny do - x, y = mypltr(i, j, nil) + x, y = mypltr(i-1, j-1) argx = x*math.pi/2 argy = y*math.pi/2 @@ -169,7 +169,7 @@ pl.box("bcnst", 0, 0, "bcnstv", 0, 0) pl.col0(2) ---plcont(w, 1, nx, 1, ny, clevel, mypltr, {}) +--pl.cont(w, 1, nx, 1, ny, clevel, mypltr, {}) pl.lab("distance", "altitude", "Bogon density") -- Plot using 1d coordinate transform @@ -179,7 +179,7 @@ pl.psty(0) ---pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 1, "pltr1", cgrid1) +pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 1, "pltr1", cgrid1) pl.col0(1) pl.box("bcnst", 0, 0, "bcnstv", 0, 0) @@ -193,12 +193,12 @@ pl.psty(0) ---pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 0, "pltr2", cgrid2) +pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 0, "pltr2", cgrid2) pl.col0(1) pl.box("bcnst", 0, 0, "bcnstv", 0, 0) pl.col0(2) ---pl.cont(w, 1, nx, 1, ny, clevel, "pltr2", cgrid2) +pl.cont(w, 1, nx, 1, ny, clevel, "pltr2", cgrid2) pl.lab("distance", "altitude", "Bogon density, with streamlines") @@ -209,7 +209,7 @@ pl.psty(0) ---pl.shades(z, -1, 1, -1, 1, shedge, fill_width, 2, 3, 0, "pltr2", cgrid2) +pl.shades(z, -1, 1, -1, 1, shedge, fill_width, 2, 3, 0, "pltr2", cgrid2) pl.col0(1) pl.box("bcnst", 0, 0, "bcnstv", 0, 0) @@ -262,7 +262,7 @@ end -- Now we can shade the interior region. ---pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 0, "pltr2", cgrid2) +pl.shades(z, -1, 1, -1, 1, shedge, fill_width, cont_color, cont_width, 0, "pltr2", cgrid2) -- Now we can draw the perimeter. (If do before, shade stuff may overlap.) for i = 1, PERIMETERPTS do Modified: trunk/examples/lua/x17.lua =================================================================== --- trunk/examples/lua/x17.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x17.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -96,9 +96,9 @@ y4 = 0 dt = 0.1 -for n = 1, nsteps do +for n = 0, nsteps-1 do for i = 0, 200000 do end - t = (n-1) * dt + t = n * dt noise = pl.randd() - 0.5 y1 = y1 + noise y2 = math.sin(t*math.pi/18) Modified: trunk/examples/lua/x18.lua =================================================================== --- trunk/examples/lua/x18.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x18.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -39,38 +39,38 @@ pl.wind(-1, 1, -0.9, 1.1) pl.col0(1) pl.w3d(1, 1, 1, -1, 1, -1, 1, -1, 1, alt[k], az[k]) - pl.box3("bnstu", "x axis", 0.0, 0, - "bnstu", "y axis", 0.0, 0, - "bcdmnstuv", "z axis", 0.0, 0) + pl.box3("bnstu", "x axis", 0, 0, + "bnstu", "y axis", 0, 0, + "bcdmnstuv", "z axis", 0, 0) pl.col0(2) - -- x = r math.sin(phi) math.cos(theta) - -- y = r math.sin(phi) math.sin(theta) - -- z = r math.cos(phi) + -- x = r sin(phi) cos(theta) + -- y = r sin(phi) sin(theta) + -- z = r cos(phi) -- r = 1 :=) for i=0, 19 do for j=0, 19 do - x[0] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*i/20 ) - y[0] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*i/20 ) - z[0] = math.cos( math.pi*j/20.1 ) + x[1] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*i/20 ) + y[1] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*i/20 ) + z[1] = math.cos( math.pi*j/20.1 ) - x[1] = math.sin( math.pi*(j+1)/20.1 ) * math.cos( 2*math.pi*i/20 ) - y[1] = math.sin( math.pi*(j+1)/20.1 ) * math.sin( 2*math.pi*i/20 ) - z[1] = math.cos( math.pi*(j+1)/20.1 ) - - x[2] = math.sin( math.pi*(j+1)/20.1 ) * math.cos( 2*math.pi*(i+1)/20 ) - y[2] = math.sin( math.pi*(j+1)/20.1 ) * math.sin( 2*math.pi*(i+1)/20 ) + x[2] = math.sin( math.pi*(j+1)/20.1 ) * math.cos( 2*math.pi*i/20 ) + y[2] = math.sin( math.pi*(j+1)/20.1 ) * math.sin( 2*math.pi*i/20 ) z[2] = math.cos( math.pi*(j+1)/20.1 ) - x[3] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*(i+1)/20 ) - y[3] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*(i+1)/20 ) - z[3] = math.cos( math.pi*j/20.1 ) + x[3] = math.sin( math.pi*(j+1)/20.1 ) * math.cos( 2*math.pi*(i+1)/20 ) + y[3] = math.sin( math.pi*(j+1)/20.1 ) * math.sin( 2*math.pi*(i+1)/20 ) + z[3] = math.cos( math.pi*(j+1)/20.1 ) - x[4] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*i/20 ) - y[4] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*i/20 ) + x[4] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*(i+1)/20 ) + y[4] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*(i+1)/20 ) z[4] = math.cos( math.pi*j/20.1 ) + + x[5] = math.sin( math.pi*j/20.1 ) * math.cos( 2*math.pi*i/20 ) + y[5] = math.sin( math.pi*j/20.1 ) * math.sin( 2*math.pi*i/20 ) + z[5] = math.cos( math.pi*j/20.1 ) pl.poly3( x, y, z, draw[k], 1 ) end @@ -110,14 +110,14 @@ -- From the mind of a sick and twisted physicist... for i=1, NPTS do - z[i] = -1 + 2 * (i-1) / NPTS + z[i] = -1 + 2*(i-1)/NPTS -- Pick one ... -- r = 1 - (i-1) / NPTS r = z[i] - x[i] = r * math.cos( 2 * math.pi * 6 * (i-1) / NPTS ) - y[i] = r * math.sin( 2 * math.pi * 6 * (i-1) / NPTS ) + x[i] = r * math.cos( 12*math.pi*(i-1)/NPTS ) + y[i] = r * math.sin( 12*math.pi*(i-1)/NPTS ) end for k=1, 4 do @@ -127,8 +127,8 @@ pl.col0(1) pl.w3d(1, 1, 1, -1, 1, -1, 1, -1, 1, alt[k], az[k]) pl.box3("bnstu", "x axis", 0, 0, - "bnstu", "y axis", 0, 0, - "bcdmnstuv", "z axis", 0, 0) + "bnstu", "y axis", 0, 0, + "bcdmnstuv", "z axis", 0, 0) pl.col0(2) Modified: trunk/examples/lua/x20.lua =================================================================== --- trunk/examples/lua/x20.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x20.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -264,7 +264,7 @@ pl.col0(2) pl.env(0, width, 0, height, 1, -1) pl.lab("", "", "Reduced dynamic range image example") ---pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min + img_max*0.25, img_max - img_max*0.25) +pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min + img_max*0.25, img_max - img_max*0.25) -- Draw a distorted version of the original image, showing its full dynamic range. pl.env(0, width, 0, height, 1, -1) @@ -281,7 +281,7 @@ -- mypltr. For compatibilty with other language bindings the same effect -- can be achieved by generating the transformed grid first and then -- using pltr2. --- plimagefr(img_f, width, height, 0., width, 0., height, 0., 0., img_min, img_max, mypltr, (PLPointer) &stretch) +-- pl.imagefr(img_f, width, height, 0., width, 0., height, 0., 0., img_min, img_max, mypltr, (PLPointer) &stretch) cgrid2 = {} cgrid2["xg"] = {} @@ -299,6 +299,6 @@ end end ---plimagefr(img_f, 0, width, 0, height, 0, 0, img_min, img_max, "pltr2", cgrid2) +--pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min, img_max, "pltr2", cgrid2) pl.plend() Modified: trunk/examples/lua/x22.lua =================================================================== --- trunk/examples/lua/x22.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x22.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -71,7 +71,7 @@ pl.env(xmin, xmax, ymin, ymax, 0, 0) pl.lab("(x)", "(y)", "#frPLplot Example 22 - circulation") pl.col0(2) - --pl.vect(u, v, 0, "pltr2", cgrid2 ) + pl.vect(u, v, 0, "pltr2", cgrid2 ) pl.col0(1) end @@ -122,7 +122,7 @@ pl.env(xmin, xmax, ymin, ymax, 0, 0) pl.lab("(x)", "(y)", "#frPLplot Example 22 - constriction") pl.col0(2) - --pl.vect(u, v, -0.5, "pltr2", cgrid2) + pl.vect(u, v, -0.5, "pltr2", cgrid2) pl.col0(1) end @@ -221,13 +221,13 @@ pl.col0(3) pl.lsty(2) - --pl.cont(z, 1, nr, 1, ntheta, clevel, "pltr2", cgrid2) + pl.cont(z, 1, nr, 1, ntheta, clevel, "pltr2", cgrid2) pl.lsty(1) pl.col0(1) -- Plot the vectors of the gradient of the potential pl.col0(2) - --pl.vect(u, v, 25, "pltr2", cgrid2) + pl.vect(u, v, 25, "pltr2", cgrid2) pl.col0(1) -- Plot the perimeter of the cylinder Modified: trunk/examples/lua/x27.lua =================================================================== --- trunk/examples/lua/x27.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x27.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -37,7 +37,7 @@ -- Fill the coordinates windings = params[4] - steps = NPNT/windings + steps = math.floor(NPNT/windings) dphi = 8*math.acos(-1)/steps xmin = 0 -- This initialisation is safe! @@ -70,7 +70,7 @@ pl.wind(xmin, xmax, ymin, ymax) pl.col0(1) - pl.line(xcoord, ycoord ) + pl.line(xcoord, ycoord) end @@ -84,15 +84,15 @@ -- R, r, p, N params = { - { 21.0, 7.0, 7.0, 3.0 }, -- Deltoid - { 21.0, 7.0, 10.0, 3.0 }, - { 21.0, -7.0, 10.0, 3.0 }, - { 20.0, 3.0, 7.0, 20.0 }, - { 20.0, 3.0, 10.0, 20.0 }, - { 20.0, -3.0, 10.0, 20.0 }, - { 20.0, 13.0, 7.0, 20.0 }, - { 20.0, 13.0, 20.0, 20.0 }, - { 20.0,-13.0, 20.0, 20.0 } } + { 21, 7, 7, 3 }, -- Deltoid + { 21, 7, 10, 3 }, + { 21, -7, 10, 3 }, + { 20, 3, 7, 20 }, + { 20, 3, 10, 20 }, + { 20, -3, 10, 20 }, + { 20, 13, 7, 20 }, + { 20, 13, 20, 20 }, + { 20,-13, 20, 20 } } -- plplot initialization Modified: trunk/examples/lua/x28.lua =================================================================== --- trunk/examples/lua/x28.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x28.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -51,9 +51,6 @@ zmid = 0.5*(zmax + zmin) zrange = zmax - zmin --- p1string must be exactly one character + the null termination ---character. -p1string = "O" pstring = "The future of our civilization depends on software freedom." -- Allocate and define the minimal x, y, and z to insure 3D box @@ -304,8 +301,8 @@ -- 3D function is a helix of the given radius and pitch radius = 0.5 pitch = 1/(2*math.pi) ---[[ -while(*pstring) { + +for i = 1, string.len(pstring) do sin_omega = math.sin(omega) cos_omega = math.cos(omega) xpos = xmid + radius*sin_omega @@ -324,12 +321,10 @@ x_shear = 0 y_shear = 0 z_shear = 1 - *p1string = *pstring - plptex3(xpos, ypos, zpos, x_inclination, y_inclination, z_inclination, - x_shear, y_shear, z_shear, 0.5, p1string) - pstring++ + pl.ptex3(xpos, ypos, zpos, x_inclination, y_inclination, z_inclination, + x_shear, y_shear, z_shear, 0.5, string.sub(pstring, i, i)) omega = omega + domega -end --]] +end -- Draw minimal 3D grid to finish defining the 3D box. pl.mesh(x, y, z, pl.DRAW_LINEXY) Modified: trunk/examples/lua/x29.lua =================================================================== --- trunk/examples/lua/x29.lua 2009-02-13 21:58:51 UTC (rev 9525) +++ trunk/examples/lua/x29.lua 2009-02-13 22:06:13 UTC (rev 9526) @@ -148,7 +148,7 @@ for i = 1, npts do x[i] = xmin + (i-1)*60*60*24 - y[i] = 1 + math.sin(2*math.pi*(i-1)/7) + math.exp(math.min(i-1,npts-i)/31) + y[i] = 1 + math.sin(2*math.pi*(i-1)/7) + math.exp(math.min(i-1,npts-i+1)/31) end pl.adv(0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-16 22:18:48
|
Revision: 9533 http://plplot.svn.sourceforge.net/plplot/?rev=9533&view=rev Author: smekal Date: 2009-02-16 22:18:37 +0000 (Mon, 16 Feb 2009) Log Message: ----------- Nearly all examples provide perfect results. On Windows the results of ctest are: lua Missing examples : Differing postscript output : 20 Missing stdout : Differing stdout : 14 Modified Paths: -------------- trunk/examples/lua/x08.lua trunk/examples/lua/x09.lua trunk/examples/lua/x11.lua trunk/examples/lua/x12.lua trunk/examples/lua/x14.lua trunk/examples/lua/x15.lua trunk/examples/lua/x16.lua trunk/examples/lua/x19.lua trunk/examples/lua/x20.lua trunk/examples/lua/x21.lua trunk/examples/lua/x23.lua trunk/examples/lua/x31.lua Modified: trunk/examples/lua/x08.lua =================================================================== --- trunk/examples/lua/x08.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x08.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -66,7 +66,7 @@ end pl.scmap1n(256) - pl.scmap1l(0, i, h, l, s, { 0 } ) -- TODO: last table should actually be empty + pl.scmap1l(0, i, h, l, s) end Modified: trunk/examples/lua/x09.lua =================================================================== --- trunk/examples/lua/x09.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x09.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -46,7 +46,7 @@ -- Transformation function tr = { XSPA, 0, -1, 0, YSPA, -1 } -function mypltr(x, y, pltr_data) +function mypltr(x, y) tx = tr[1] * x + tr[2] * y + tr[3] ty = tr[4] * x + tr[5] * y + tr[6] @@ -308,10 +308,10 @@ pl.setcontlabelparam(0.006, 0.3, 0.1, 1) pl.env(-1, 1, -1, 1, 0, 0) pl.col0(2) ---pl.cont(z, 1, XPTS, 1, YPTS, clevel, mypltr) +pl.cont(z, 1, XPTS, 1, YPTS, clevel, "mypltr") pl.styl(mark, space) pl.col0(3) ---pl.cont(w, 1, XPTS, 1, YPTS, clevel, mypltr) +pl.cont(w, 1, XPTS, 1, YPTS, clevel, "mypltr") pl.styl({}, {}) pl.col0(1) pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") Modified: trunk/examples/lua/x11.lua =================================================================== --- trunk/examples/lua/x11.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x11.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -62,7 +62,7 @@ s = { 0.8, 0.8 } pl.scmap1n(256) - pl.scmap1l(0, i, h, l, s, {0}) + pl.scmap1l(0, i, h, l, s) end Modified: trunk/examples/lua/x12.lua =================================================================== --- trunk/examples/lua/x12.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x12.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -65,7 +65,7 @@ y0 = { 5, 15, 12, 24, 28, 30, 20, 8, 12, 3} -pl.scmap1l(1, pos, red, green, blue, { 0, 0, 0, 0 }); +pl.scmap1l(1, pos, red, green, blue); for i=1, 10 do pl.col1((i-1)/9.0); Modified: trunk/examples/lua/x14.lua =================================================================== --- trunk/examples/lua/x14.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x14.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -209,7 +209,7 @@ tr = { XSPA, 0, -1, 0, YSPA, -1 } -function mypltr(x, y, pltr_data) +function mypltr(x, y) tx = tr[1]*x + tr[2]*y + tr[3] ty = tr[4]*x + tr[5]*y + tr[6] @@ -239,10 +239,10 @@ pl.env(-1, 1, -1, 1, 0, 0) pl.col0(2) - --pl.cont(z, 1, XPTS, 1, YPTS, clevel, mypltr) + pl.cont(z, 1, XPTS, 1, YPTS, clevel, "mypltr") pl.styl(mark, space) pl.col0(3) - --pl.cont(w, 1, XPTS, 1, YPTS, clevel, mypltr) + pl.cont(w, 1, XPTS, 1, YPTS, clevel, "mypltr") pl.col0(1) pl.lab("X Coordinate", "Y Coordinate", "Streamlines of flow") pl.flush() Modified: trunk/examples/lua/x15.lua =================================================================== --- trunk/examples/lua/x15.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x15.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -46,7 +46,7 @@ -- lightness -- center, lightness -- high s = { 1, 1, 1, 1 } -- maximum saturation - pl.scmap1l(0, i, h, l, s, {}) + pl.scmap1l(0, i, h, l, s) end @@ -66,7 +66,7 @@ s = { 1, 0.5, 0.5, 1 } -- saturation -- low, saturation -- center -- saturation -- center, saturation -- high - pl.scmap1l(0, i, h, l, s, {0, 0, 0, 0}) + pl.scmap1l(0, i, h, l, s) end @@ -94,8 +94,8 @@ max_width = 2 pl.psty(8) - --pl.shade1(z, -1, 1, -1, 1, shade_min, shade_max, sh_cmap, sh_color, sh_width, - -- min_color, min_width, max_color, max_width, 1) + pl.shade(z, -1, 1, -1, 1, shade_min, shade_max, sh_cmap, sh_color, sh_width, + min_color, min_width, max_color, max_width, 1) pl.col0(1) pl.box("bcnst", 0, 0, "bcnstv", 0, 0) @@ -137,8 +137,8 @@ sh_color = i+5 pl.pat(inc[i], del[i]) - --pl.shade1(z, -1, 1, -1, 1, shade_min, shade_max, sh_cmap, sh_color, sh_width, - -- min_color, min_width, max_color, max_width, 1) + pl.shade(z, -1, 1, -1, 1, shade_min, shade_max, sh_cmap, sh_color, sh_width, + min_color, min_width, max_color, max_width, 1) end pl.col0(1) Modified: trunk/examples/lua/x16.lua =================================================================== --- trunk/examples/lua/x16.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x16.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -39,7 +39,7 @@ -- Transformation function tr = {} -function mypltr(x, y, pltr_data) +function mypltr(x, y) tx = tr[1] * x + tr[2] * y + tr[3] ty = tr[4] * x + tr[5] * y + tr[6] Modified: trunk/examples/lua/x19.lua =================================================================== --- trunk/examples/lua/x19.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x19.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -41,6 +41,8 @@ x[i] = xp y[i] = yp end + + return x, y end -------------------------------------------------------------------------- @@ -68,7 +70,7 @@ pl.col0(1) pl.env(minx, maxx, miny, maxy, 1, -1) -pl.map(NULL, "usaglobe", minx, maxx, miny, maxy) +pl.map(nil, "usaglobe", minx, maxx, miny, maxy) -- The Americas @@ -77,7 +79,7 @@ pl.col0(1) pl.env(minx, maxx, miny, maxy, 1, -1) -pl.map(NULL, "usaglobe", minx, maxx, miny, maxy) +pl.map(nil, "usaglobe", minx, maxx, miny, maxy) -- Polar, Northern hemisphere @@ -85,8 +87,8 @@ maxx = 360 pl.env(-75., 75., -75., 75., 1, -1) ---pl.map(mapform19, "globe", minx, maxx, miny, maxy) +pl.map("mapform19", "globe", minx, maxx, miny, maxy) pl.lsty(2) ---pl.meridians(mapform19, 10, 10, 0, 360, -10, 80) +pl.meridians("mapform19", 10, 10, 0, 360, -10, 80) pl.plend() Modified: trunk/examples/lua/x20.lua =================================================================== --- trunk/examples/lua/x20.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x20.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -11,22 +11,17 @@ dbg = 0 nosombrero = 0 -nointeractive = 1 +nointeractive = 0 f_name="" ---stretch_data = { --- xmin, xmax, ymin, ymax --- stretch ---} - -- Transformation function -function mypltr( x, y, s) - x0 = (s["xmin"] + s["xmax"])*0.5 - y0 = (s["ymin"] + s["ymax"])*0.5 - dy = (s["ymax"]-s["ymin"])*0.5 - tx = x0 + (x0-x)*(1.0 - s["stretch"]*math.cos((y-y0)/dy*math.pi*0.5)) - ty = y +function mypltr(x, y) + local x0 = (stretch["xmin"] + stretch["xmax"])*0.5 + local y0 = (stretch["ymin"] + stretch["ymax"])*0.5 + local dy = (stretch["ymax"]-stretch["ymin"])*0.5 + local tx = x0 + (x0-x)*(1 - stretch["stretch"]*math.cos((y-y0)/dy*math.pi*0.5)) + local ty = y return tx, ty end @@ -84,7 +79,7 @@ imf[i] = {} for j = 1, h do index = (h-j)*w+i - imf[i][j] = string.byte(img, index) -- flip image up-down + imf[i][j] = img:byte(index) -- flip image up-down end end @@ -116,13 +111,13 @@ -- set gray colormap function gray_cmap(num_col) - r = { 0, 1 } - g = { 0, 1 } - b = { 0, 1 } - pos = { 0, 1 } + local r = { 0, 1 } + local g = { 0, 1 } + local b = { 0, 1 } + local pos = { 0, 1 } pl.scmap1n(num_col) - pl.scmap1l(1, pos, r, g, b, { 0 }) + pl.scmap1l(1, pos, r, g, b) end @@ -149,6 +144,8 @@ -- Initialize plplot pl.init() +z={} + -- view image border pixels if dbg~=0 then pl.env(1, XDIM, 1, YDIM, 1, 1) -- no plot box @@ -172,6 +169,7 @@ -- sombrero-like demo if nosombrero==0 then + r = {} pl.col0(2) -- draw a yellow plot box, useful for diagnostics! :( pl.env(0, 2*math.pi, 0, 3*math.pi, 1, -1) @@ -187,7 +185,7 @@ z[i] = {} for j=1, YDIM do r[i][j] = math.sqrt(x[i]^2+y[j]^2)+1e-3 - z[i][j] = math.sin(r[i][j])/(r[i][j]) + z[i][j] = math.sin(r[i][j])/r[i][j] end end @@ -208,9 +206,7 @@ if status~=0 then status, img_f, width, height, num_col = read_img("../lena.pgm") if status~=0 then - -- pl.abort("No such file") TODO - print("No such file") - print( status, width, height ) + pl.abort("No such file") pl.plend() os.exit() end @@ -220,7 +216,7 @@ gray_cmap(num_col) -- display Lena -pl.env(1., width, 1., height, 1, -1) +pl.env(1, width, 1, height, 1, -1) if nointeractive==0 then pl.lab("Set and drag Button 1 to (re)set selection, Button 2 to finish."," ","Lena...") @@ -293,12 +289,13 @@ cgrid2["xg"][i] = {} cgrid2["yg"][i] = {} for j = 1, height+1 do - xx, yy = mypltr(i, j, stretch) + xx, yy = mypltr(i, j) cgrid2["xg"][i][j] = xx cgrid2["yg"][i][j] = yy end end --pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min, img_max, "pltr2", cgrid2) +pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min, img_max, "mypltr") pl.plend() Modified: trunk/examples/lua/x21.lua =================================================================== --- trunk/examples/lua/x21.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x21.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -60,7 +60,7 @@ s = { 0.8, 0.8 } pl.scmap1n(256) - pl.scmap1l(0, i, h, l, s, { 0 } ) -- TODO: last table should actually be empty + pl.scmap1l(0, i, h, l, s) end @@ -81,9 +81,9 @@ function create_data(pts) - x = {} - y = {} - z = {} + local x = {} + local y = {} + local z = {} for i = 1, pts do xt = (xM-xm)*pl.randd() @@ -140,13 +140,6 @@ end xg, yg = create_grid(xp, yp) -- grid the data at -zg = {} -for i = 1, xp do - zg[i] = {} - for j = 1, yp do - zg[i][j] = 0 - end -end clev = {} pl.col0(1) @@ -162,7 +155,7 @@ for k = 1, 2 do pl.adv(0) for alg=1, 6 do - pl.griddata(x, y, z, xg, yg, zg, alg, opt[alg]) + zg = pl.griddata(x, y, z, xg, yg, alg, opt[alg]) --[[ - CSA can generate NaNs (only interpolates?!). @@ -178,7 +171,7 @@ if alg==pl.GRID_CSA or alg==pl.GRID_DTLI or alg==pl.GRID_NNLI or alg==pl.GRID_NNI then for i = 1, xp do for j = 1, yp do - if zg[i][j]==nil then -- average (IDW) over the 8 neighbors + if zg[i][j]~=zg[i][j] then -- average (IDW) over the 8 neighbors zg[i][j] = 0 dist = 0 @@ -186,11 +179,11 @@ if ii<=xp then for jj=j-1, j+1 do if jj<=yp then - if ii>=1 and jj>=1 and zg[ii][jj]~=nil then + if ii>=1 and jj>=1 and zg[ii][jj]==zg[ii][jj] then if (math.abs(ii-i) + math.abs(jj-j)) == 1 then d = 1 else - d = 1.4141 + d = 1.4142 end zg[i][j] = zg[i][j] + zg[ii][jj]/(d^2) dist = dist + d @@ -211,9 +204,9 @@ lzM, lzm = pl.MinMax2dGrid(zg) - lzm = math.min(lzm, zmin) - lzM = math.max(lzM, zmax) - + if lzm~=lzm then lzm=zmin else lzm = math.min(lzm, zmin) end + if lzM~=lzM then lzM=zmax else lzM = math.max(lzM, zmax) end + -- Increase limits slightly to prevent spurious contours -- due to rounding errors lzm = lzm-0.01 Modified: trunk/examples/lua/x23.lua =================================================================== --- trunk/examples/lua/x23.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x23.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -38,40 +38,40 @@ } Type1 = { - 0x0020,0x0021,0x0023,0x0025,0x0026, - 0x0028,0x0029,0x002b,0x002c,0x002e, - 0x002f,0x0030,0x0031,0x0032,0x0033, - 0x0034,0x0035,0x0036,0x0037,0x0038, - 0x0039,0x003a,0x003b,0x003c,0x003d, - 0x003e,0x003f,0x005b,0x005d,0x005f, - 0x007b,0x007c,0x007d,0x00a9,0x00ac, - 0x00ae,0x00b0,0x00b1,0x00d7,0x00f7, - 0x0192,0x0391,0x0392,0x0393,0x0394, - 0x0395,0x0396,0x0397,0x0398,0x0399, - 0x039a,0x039b,0x039c,0x039d,0x039e, - 0x039f,0x03a0,0x03a1,0x03a3,0x03a4, - 0x03a5,0x03a6,0x03a7,0x03a8,0x03a9, - 0x03b1,0x03b2,0x03b3,0x03b4,0x03b5, - 0x03b6,0x03b7,0x03b8,0x03b9,0x03ba, - 0x03bb,0x03bc,0x03bd,0x03be,0x03bf, - 0x03c0,0x03c1,0x03c2,0x03c3,0x03c4, - 0x03c5,0x03c6,0x03c7,0x03c8,0x03c9, - 0x03d1,0x03d2,0x03d5,0x03d6,0x2022, - 0x2026,0x2032,0x2033,0x203e,0x2044, - 0x2111,0x2118,0x211c,0x2122,0x2126, - 0x2135,0x2190,0x2191,0x2192,0x2193, - 0x2194,0x21b5,0x21d0,0x21d1,0x21d2, - 0x21d3,0x21d4,0x2200,0x2202,0x2203, - 0x2205,0x2206,0x2207,0x2208,0x2209, - 0x220b,0x220f,0x2211,0x2212,0x2215, - 0x2217,0x221a,0x221d,0x221e,0x2220, - 0x2227,0x2228,0x2229,0x222a,0x222b, - 0x2234,0x223c,0x2245,0x2248,0x2260, - 0x2261,0x2264,0x2265,0x2282,0x2283, - 0x2284,0x2286,0x2287,0x2295,0x2297, - 0x22a5,0x22c5,0x2320,0x2321,0x2329, - 0x232a,0x25ca,0x2660,0x2663,0x2665, - 0x2666 + 32, 33, 35, 37, 38, + 40, 41, 43, 44, 46, + 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, + 62, 63, 91, 93, 95, + 123, 124, 125, 169, 172, + 174, 176, 177, 215, 247, + 402, 913, 914, 915, 916, + 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, + 927, 928, 929, 931, 932, + 933, 934, 935, 936, 937, + 945, 946, 947, 948, 949, + 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, + 960, 961, 962, 963, 964, + 965, 966, 967, 968, 969, + 977, 978, 981, 982, 8226, + 8230, 8242, 8243, 8254, 8260, + 8465, 8472, 8476, 8482, 8486, + 8501, 8592, 8593, 8594, 8595, + 8596, 8629, 8656, 8657, 8658, + 8659, 8660, 8704, 8706, 8707, + 8709, 8710, 8711, 8712, 8713, + 8715, 8719, 8721, 8722, 8725, + 8727, 8730, 8733, 8734, 8736, + 8743, 8744, 8745, 8746, 8747, + 8756, 8764, 8773, 8776, 8800, + 8801, 8804, 8805, 8834, 8835, + 8836, 8838, 8839, 8853, 8855, + 8869, 8901, 8992, 8993, 9001, + 9002, 9674, 9824, 9827, 9829, + 9830 } title = { @@ -89,31 +89,31 @@ } lo = { - 0x0, - 0x0, - 0x40, - 0x80, - 0x2153, - 0x2190, - 0x21d0, - 0x2200, - 0x2240, - 0x2280, - 0x22c0 + 0, + 0, + 64, + 128, + 8531, + 8592, + 8656, + 8704, + 8768, + 8832, + 8896 } hi = { - 0x30, - 0x40, - 0x80, - 0xA6, - 0x2184, - 0x21d0, - 0x2200, - 0x2240, - 0x2280, - 0x22c0, - 0x2300 + 48, + 64, + 128, + 166, + 8580, + 8656, + 8704, + 8768, + 8832, + 8896, + 8960 } nxcells = { @@ -162,36 +162,36 @@ -- 30 possible FCI values. FCI_COMBINATIONS = 30 fci = { - 0x80000000, - 0x80000001, - 0x80000002, - 0x80000003, - 0x80000004, - 0x80000010, - 0x80000011, - 0x80000012, - 0x80000013, - 0x80000014, - 0x80000020, - 0x80000021, - 0x80000022, - 0x80000023, - 0x80000024, - 0x80000100, - 0x80000101, - 0x80000102, - 0x80000103, - 0x80000104, - 0x80000110, - 0x80000111, - 0x80000112, - 0x80000113, - 0x80000114, - 0x80000120, - 0x80000121, - 0x80000122, - 0x80000123, - 0x80000124 + 2147483648, + 2147483649, + 2147483650, + 2147483651, + 2147483652, + 2147483664, + 2147483665, + 2147483666, + 2147483667, + 2147483668, + 2147483680, + 2147483681, + 2147483682, + 2147483683, + 2147483684, + 2147483904, + 2147483905, + 2147483906, + 2147483907, + 2147483908, + 2147483920, + 2147483921, + 2147483922, + 2147483923, + 2147483924, + 2147483936, + 2147483937, + 2147483938, + 2147483939, + 2147483940 } family = { Modified: trunk/examples/lua/x31.lua =================================================================== --- trunk/examples/lua/x31.lua 2009-02-16 21:09:26 UTC (rev 9532) +++ trunk/examples/lua/x31.lua 2009-02-16 22:18:37 UTC (rev 9533) @@ -99,7 +99,7 @@ pl.scmap1a(r1, g1, b1, a1) level2 = pl.glevel() -print("level parameter = %d" .. level2) +print("level parameter = " .. level2) if level2~=1 then io.stderr:write("plglevel test failed.\n") status = 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-27 21:30:01
|
Revision: 9635 http://plplot.svn.sourceforge.net/plplot/?rev=9635&view=rev Author: smekal Date: 2009-02-27 21:29:55 +0000 (Fri, 27 Feb 2009) Log Message: ----------- These changes will allow lua to find the shared plplot library automatically also on Windows and Mac OS X. Modified Paths: -------------- trunk/examples/lua/CMakeLists.txt trunk/examples/lua/plplot_examples.lua.in Modified: trunk/examples/lua/CMakeLists.txt =================================================================== --- trunk/examples/lua/CMakeLists.txt 2009-02-27 21:28:16 UTC (rev 9634) +++ trunk/examples/lua/CMakeLists.txt 2009-02-27 21:29:55 UTC (rev 9635) @@ -97,7 +97,11 @@ NOT CMAKE_CURRENT_BINARY_DIR STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}" ) -set(lua_lib_location ${CMAKE_BINARY_DIR}/bindings/lua) +if(WIN32) + set(lua_lib_location ${CMAKE_BINARY_DIR}/dll) +else(WIN32) + set(lua_lib_location ${CMAKE_BINARY_DIR}/bindings/lua) +endif(WIN32) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/plplot_examples.lua.in ${CMAKE_CURRENT_BINARY_DIR}/plplot_examples.lua Modified: trunk/examples/lua/plplot_examples.lua.in =================================================================== --- trunk/examples/lua/plplot_examples.lua.in 2009-02-27 21:28:16 UTC (rev 9634) +++ trunk/examples/lua/plplot_examples.lua.in 2009-02-27 21:29:55 UTC (rev 9635) @@ -1,8 +1,12 @@ -- initialise Lua bindings for PLplot examples. if string.sub(_VERSION,1,7)=='Lua 5.0' then - lib=loadlib('@lua_lib_location@/plplotluac.so','luaopen_plplotluac') or loadlib('plplotluac.dll','luaopen_plplotluac') + lib=loadlib('@lua_lib_location@/plplotluac.so','luaopen_plplotluac') or + loadlib('@lua_lib_location@/plplotluac.dll','luaopen_plplotluac') or + loadlib('@lua_lib_location@/plplotluac.dylib','luaopen_plplotluac') assert(lib)() else - package.cpath = '@lua_lib_location@/?.so;' .. package.cpath + package.cpath = '@lua_lib_location@/?.so;' .. + '@lua_lib_location@/?.dll;' .. + '@lua_lib_location@/?.dylib;' ..package.cpath require('plplotluac') end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-08-19 07:57:57
|
Revision: 10293 http://plplot.svn.sourceforge.net/plplot/?rev=10293&view=rev Author: smekal Date: 2009-08-19 07:57:43 +0000 (Wed, 19 Aug 2009) Log Message: ----------- Updated Lua functions 3, 16 and 19. Modified Paths: -------------- trunk/examples/lua/x03.lua trunk/examples/lua/x16.lua trunk/examples/lua/x19.lua Modified: trunk/examples/lua/x03.lua =================================================================== --- trunk/examples/lua/x03.lua 2009-08-19 07:56:16 UTC (rev 10292) +++ trunk/examples/lua/x03.lua 2009-08-19 07:57:43 UTC (rev 10293) @@ -54,17 +54,12 @@ -- Set up viewport and window, but do not draw box pl.env(-1.3, 1.3, -1.3, 1.3, 1, -2) -for i = 1, 10 do - for j = 1, 361 do - x[j] = 0.1 * i * x0[j] - y[j] = 0.1 * i * y0[j] - end - -- Draw circles for polar grid - pl.line(x, y) +-- Draw circles for polar grid +for i = 1, 10 do + pl.arc(0, 0, 0.1*i, 0.1*i, 0, 360, 0); end - pl.col0(2) for i=1, 12 do theta = 30 * (i-1) Modified: trunk/examples/lua/x16.lua =================================================================== --- trunk/examples/lua/x16.lua 2009-08-19 07:56:16 UTC (rev 10292) +++ trunk/examples/lua/x16.lua 2009-08-19 07:57:43 UTC (rev 10293) @@ -89,6 +89,10 @@ -- Parse and process command line arguments pl.parseopts(arg, pl.PL_PARSE_FULL) +-- Load colour palettes +pl.spal0("cmap0_black_on_white.pal"); +pl.spal1("cmap1_gray.pal"); + -- Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display pl.scmap0n(3) @@ -173,6 +177,14 @@ pl.lab("distance", "altitude", "Bogon density") -- Plot using 1d coordinate transform + +-- Load colour palettes +pl.spal0("cmap0_black_on_white.pal"); +pl.spal1("cmap1_blue_yellow.pal"); + +-- Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display +pl.scmap0n(3); + pl.adv(0) pl.vpor(0.1, 0.9, 0.1, 0.9) pl.wind(-1, 1, -1, 1) @@ -187,6 +199,14 @@ pl.lab("distance", "altitude", "Bogon density") -- Plot using 2d coordinate transform + +-- Load colour palettes +pl.spal0("cmap0_black_on_white.pal"); +pl.spal1("cmap1_blue_red.pal"); + +-- Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display +pl.scmap0n(3); + pl.adv(0) pl.vpor(0.1, 0.9, 0.1, 0.9) pl.wind(-1, 1, -1, 1) @@ -203,6 +223,14 @@ pl.lab("distance", "altitude", "Bogon density, with streamlines") -- Plot using 2d coordinate transform + +-- Load colour palettes +pl.spal0(""); +pl.spal1(""); + +-- Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display +pl.scmap0n(3); + pl.adv(0) pl.vpor(0.1, 0.9, 0.1, 0.9) pl.wind(-1, 1, -1, 1) @@ -221,6 +249,14 @@ -- Plot using 2d coordinate transform and exclusion if exclude~=0 then + + -- Load colour palettes + pl.spal0("cmap0_black_on_white.pal"); + pl.spal1("cmap1_gray.pal"); + + -- Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display + pl.scmap0n(3); + pl.adv(0) pl.vpor(0.1, 0.9, 0.1, 0.9) pl.wind(-1, 1, -1, 1) @@ -237,6 +273,14 @@ end -- Example with polar coordinates. + +-- Load colour palettes +pl.spal0("cmap0_black_on_white.pal"); +pl.spal1("cmap1_gray.pal"); + +-- Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display +pl.scmap0n(3); + pl.adv(0) pl.vpor(.1, .9, .1, .9) pl.wind(-1, 1, -1, 1) Modified: trunk/examples/lua/x19.lua =================================================================== --- trunk/examples/lua/x19.lua 2009-08-19 07:56:16 UTC (rev 10292) +++ trunk/examples/lua/x19.lua 2009-08-19 07:57:43 UTC (rev 10293) @@ -45,6 +45,59 @@ return x, y end +-- "Normalize" longitude values so that they always fall between +-- -180.0 and 180.0 +function normalize_longitude(lon) + if lon>=-180 and lon<=180 then + return lon; + else + times = math.floor((math.abs(lon)+180)/360) + if lon<0 then + return lon+360*times + else + return lon-360*times + end + end +end + +-- A custom axis labeling function for longitudes and latitudes. +function geolocation_labeler(axis, value) + if axis==pl.PL_Y_AXIS then + label_val = value + if label_val>0 then + direction_label = " N" + else + if label_val<0 then + direction_label = " S" + else + direction_label = "Eq" + end + end + else + if axis==pl.PL_X_AXIS then + label_val = normalize_longitude(value); + if label_val>0 then + direction_label = " E" + else + if label_val<0 then + direction_label = " W" + else + direction_label = "" + end + end + end + end + + if axis==pl.PL_Y_AXIS and value==0 then + -- A special case for the equator + label = direction_label + else + label = math.abs(label_val) .. direction_label + end + + return label +end + -------------------------------------------------------------------------- -- main -- @@ -68,8 +121,11 @@ minx = 190 maxx = 190+360 +-- Setup a custom latitude and longitude-based scaling function. +pl.slabelfunc("geolocation_labeler"); + pl.col0(1) -pl.env(minx, maxx, miny, maxy, 1, -1) +pl.env(minx, maxx, miny, maxy, 1, 70) pl.map(nil, "usaglobe", minx, maxx, miny, maxy) -- The Americas @@ -78,9 +134,12 @@ maxx = 340 pl.col0(1) -pl.env(minx, maxx, miny, maxy, 1, -1) +pl.env(minx, maxx, miny, maxy, 1, 70) pl.map(nil, "usaglobe", minx, maxx, miny, maxy) +-- Clear the labeling function +pl.slabelfunc(nil); + -- Polar, Northern hemisphere minx = 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2010-05-27 22:34:47
|
Revision: 11032 http://plplot.svn.sourceforge.net/plplot/?rev=11032&view=rev Author: andrewross Date: 2010-05-27 22:34:40 +0000 (Thu, 27 May 2010) Log Message: ----------- Update lua examples 6 and 7 consistent with the C versions. Modified Paths: -------------- trunk/examples/lua/x06.lua trunk/examples/lua/x07.lua Modified: trunk/examples/lua/x06.lua =================================================================== --- trunk/examples/lua/x06.lua 2010-05-27 22:00:14 UTC (rev 11031) +++ trunk/examples/lua/x06.lua 2010-05-27 22:34:40 UTC (rev 11032) @@ -36,39 +36,55 @@ -- Initialize plplot pl.init() -pl.adv(0) +for kind_font = 0,1 do + pl.fontld( kind_font ) + if kind_font == 0 then + maxfont = 1 + else + maxfont = 4 + end --- Set up viewport and window -pl.col0(2) -pl.vpor(0.1, 1, 0.1, 0.9) -pl.wind(0, 1, 0, 1.3) + for font = 1,maxfont do + pl.font( font ) + pl.adv(0) --- Draw the grid using plbox -pl.box("bcg", 0.1, 0, "bcg", 0.1, 0) + -- Set up viewport and window + pl.col0(2) + pl.vpor(0.1, 1, 0.1, 0.9) + pl.wind(0, 1, 0, 1.3) --- Write the digits below the frame -pl.col0(15) -for i=0, 9 do - pl.mtex("b", 1.5, (0.1 * i + 0.05), 0.5, tostring(i)) -end + -- Draw the grid using plbox + pl.box("bcg", 0.1, 0, "bcg", 0.1, 0) -k = 0 -x = {} -y ={} -for i = 0, 12 do - -- Write the digits to the left of the frame - pl.mtex("lv", 1, (1 - (2 * i + 1) / 26), 1, tostring(10*i)) - for j = 0, 9 do - x[1] = 0.1 * j + 0.05 - y[1] = 1.25 - 0.1 * i + -- Write the digits below the frame + pl.col0(15) + for i=0, 9 do + pl.mtex("b", 1.5, (0.1 * i + 0.05), 0.5, tostring(i)) + end - -- Display the symbols - if k < 128 then - pl.poin(x, y, k) + k = 0 + x = {} + y ={} + for i = 0, 12 do + -- Write the digits to the left of the frame + pl.mtex("lv", 1, (1 - (2 * i + 1) / 26), 1, tostring(10*i)) + for j = 0, 9 do + x[1] = 0.1 * j + 0.05 + y[1] = 1.25 - 0.1 * i + + -- Display the symbols + if k < 128 then + pl.poin(x, y, k) + end + k = k + 1 + end end - k = k + 1 + + if kind_font == 0 then + pl.mtex("t", 1.5, 0.5, 0.5, "PLplot Example 6 - plpoin symbols (compact)") + else + pl.mtex("t", 1.5, 0.5, 0.5, "PLplot Example 6 - plpoin symbols (extended)") + end end end - -pl.mtex("t", 1.5, 0.5, 0.5, "PLplot Example 6 - plpoin symbols") pl.plend() Modified: trunk/examples/lua/x07.lua =================================================================== --- trunk/examples/lua/x07.lua 2010-05-27 22:00:14 UTC (rev 11031) +++ trunk/examples/lua/x07.lua 2010-05-27 22:34:40 UTC (rev 11032) @@ -24,7 +24,7 @@ -- initialise Lua bindings for PLplot examples. dofile("plplot_examples.lua") -base = { 0, 200, 500, 600, 700, 800, 900, +base = { 0, 100, 0, 100, 200, 500, 600, 700, 800, 900, 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900 } @@ -40,43 +40,51 @@ -- Initialize plplot pl.init() -pl.fontld(1) -for l = 1, 17 do - pl.adv(0) +pl.fontld(0) +for l = 1, 20 do - -- Set up viewport and window - pl.col0(2) - pl.vpor(0.15, 0.95, 0.1, 0.9) - pl.wind(0, 1, 0, 1) + if l == 3 then + pl.fontld(1) + end + pl.adv(0) - -- Draw the grid using plbox + -- Set up viewport and window + pl.col0(2) + pl.vpor(0.15, 0.95, 0.1, 0.9) + pl.wind(0, 1, 0, 1) - pl.box("bcg", 0.1, 0, "bcg", 0.1, 0) + -- Draw the grid using plbox - -- Write the digits below the frame + pl.box("bcg", 0.1, 0, "bcg", 0.1, 0) - pl.col0(15) - for i = 0, 9 do - pl.mtex("b", 1.5, (0.1 * i + 0.05), 0.5, tostring(i)) - end + -- Write the digits below the frame - k = 0 - x = {} - y = {} - for i = 0, 9 do - -- Write the digits to the left of the frame - pl.mtex("lv", 1.0, (0.95 - 0.1 * i), 1.0, tostring(base[l] + 10 * i)) - for j=0, 9 do - x[1] = 0.1 * j + 0.05 - y[1] = 0.95 - 0.1 * i + pl.col0(15) + for i = 0, 9 do + pl.mtex("b", 1.5, (0.1 * i + 0.05), 0.5, tostring(i)) + end - -- Display the symbols - pl.sym(x, y, base[l] + k) - k = k + 1 - end - end + k = 0 + x = {} + y = {} + for i = 0, 9 do + -- Write the digits to the left of the frame + pl.mtex("lv", 1.0, (0.95 - 0.1 * i), 1.0, tostring(base[l] + 10 * i)) + for j=0, 9 do + x[1] = 0.1 * j + 0.05 + y[1] = 0.95 - 0.1 * i - pl.mtex("t", 1.5, 0.5, 0.5, "PLplot Example 7 - PLSYM symbols") + -- Display the symbols + pl.sym(x, y, base[l] + k) + k = k + 1 + end + end + + if l <= 2 then + pl.mtex("t", 1.5, 0.5, 0.5, "PLplot Example 7 - PLSYM symbols (compact)") + else + pl.mtex("t", 1.5, 0.5, 0.5, "PLplot Example 7 - PLSYM symbols (extended)") + end end pl.plend() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2012-02-16 20:24:27
|
Revision: 12167 http://plplot.svn.sourceforge.net/plplot/?rev=12167&view=rev Author: airwin Date: 2012-02-16 20:24:20 +0000 (Thu, 16 Feb 2012) Log Message: ----------- math.mod is only available in compatibility mode for in Lua-5.1 and does not exist for Lua-5.2 so replace all instances of math.mod with the % operator. This change passed test_diff_psc for Lua-5.1. Modified Paths: -------------- trunk/examples/lua/x02.lua trunk/examples/lua/x04.lua trunk/examples/lua/x08.lua trunk/examples/lua/x11.lua trunk/examples/lua/x13.lua trunk/examples/lua/x17.lua trunk/examples/lua/x21.lua trunk/examples/lua/x23.lua trunk/examples/lua/x26.lua trunk/examples/lua/x27.lua trunk/examples/lua/x30.lua trunk/examples/lua/x33.lua Modified: trunk/examples/lua/x02.lua =================================================================== --- trunk/examples/lua/x02.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x02.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -102,7 +102,7 @@ -- saturation [0., 1.] magnitude -- Vary hue uniformly from left to right - h = (360/10) * math.mod(i, 10) + h = (360/10) * (i % 10) -- Vary lightness uniformly from top to bottom, between min & max l = lmin + (lmax - lmin) * math.floor(i/10)/9 Modified: trunk/examples/lua/x04.lua =================================================================== --- trunk/examples/lua/x04.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x04.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -33,7 +33,7 @@ -- return single bit (for OR) function bit(x,b) - return (math.mod(x, 2^b) - math.mod(x,2^(b-1)) > 0) + return ((x % 2^b) - (x % 2^(b-1)) > 0) end -- logic OR for number values Modified: trunk/examples/lua/x08.lua =================================================================== --- trunk/examples/lua/x08.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x08.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -31,7 +31,7 @@ -- return single bit (for OR) function bit(x,b) - return (math.mod(x, 2^b) - math.mod(x,2^(b-1)) > 0) + return ((x % 2^b) - (x % 2^(b-1)) > 0) end -- logic OR for number values Modified: trunk/examples/lua/x11.lua =================================================================== --- trunk/examples/lua/x11.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x11.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -44,7 +44,7 @@ -- return single bit (for OR) function bit(x,b) - return (math.mod(x, 2^b) - math.mod(x,2^(b-1)) > 0) + return ((x % 2^b) - (x % 2^(b-1)) > 0) end -- logic OR for number values Modified: trunk/examples/lua/x13.lua =================================================================== --- trunk/examples/lua/x13.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x13.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -71,7 +71,7 @@ thetasave=theta end pl.col0(i) - pl.psty(math.mod((i + 2), 8) + 1) + pl.psty(((i + 2) % 8) + 1) pl.fill(x, y) pl.col0(1) pl.line(x, y) Modified: trunk/examples/lua/x17.lua =================================================================== --- trunk/examples/lua/x17.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x17.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -107,10 +107,10 @@ -- There is no need for all pens to have the same number of -- points or beeing equally time spaced. - if math.mod(n, 2)~=0 then pl.stripa(id1, 0, t, y1) end - if math.mod(n, 3)~=0 then pl.stripa(id1, 1, t, y2) end - if math.mod(n, 4)~=0 then pl.stripa(id1, 2, t, y3) end - if math.mod(n, 5)~=0 then pl.stripa(id1, 3, t, y4) end + if (n % 2)~=0 then pl.stripa(id1, 0, t, y1) end + if (n % 3)~=0 then pl.stripa(id1, 1, t, y2) end + if (n % 4)~=0 then pl.stripa(id1, 2, t, y3) end + if (n % 5)~=0 then pl.stripa(id1, 3, t, y4) end end -- Destroy strip chart and it's memory Modified: trunk/examples/lua/x21.lua =================================================================== --- trunk/examples/lua/x21.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x21.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -30,7 +30,7 @@ -- return single bit (for OR) function bit(x,b) - return (math.mod(x, 2^b) - math.mod(x,2^(b-1)) > 0) + return ((x % 2^b) - (x % 2^(b-1)) > 0) end -- logic OR for number values Modified: trunk/examples/lua/x23.lua =================================================================== --- trunk/examples/lua/x23.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x23.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -296,9 +296,9 @@ pl.schr(0, 0.75) for i=1, FCI_COMBINATIONS do - family_index = math.mod(i-1, 5)+1 - style_index = math.mod(math.floor((i-1)/5), 3)+1 - weight_index = math.mod(math.floor((i-1)/5/3), 2)+1 + family_index = ((i-1) % 5) +1 + style_index = (math.floor((i-1)/5) % 3)+1 + weight_index = (math.floor((i-1)/5/3) % 2)+1 if page==12 then pl.sfci(fci[i]) str = string.format("Page 12, %s, %s, %s: The quick brown fox jumps over the lazy dog", Modified: trunk/examples/lua/x26.lua =================================================================== --- trunk/examples/lua/x26.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x26.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -76,7 +76,7 @@ -- return single bit (for OR) function bit(x,b) - return (math.mod(x, 2^b) - math.mod(x,2^(b-1)) > 0) + return ((x % 2^b) - (x % 2^(b-1)) > 0) end -- logic OR for number values Modified: trunk/examples/lua/x27.lua =================================================================== --- trunk/examples/lua/x27.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x27.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -34,7 +34,7 @@ b = math.floor(math.abs(b)) while b~=0 do t = b - b = math.mod(a,b) + b = a % b a = t end return a Modified: trunk/examples/lua/x30.lua =================================================================== --- trunk/examples/lua/x30.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x30.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -59,7 +59,7 @@ -- Draw the boxes for i = 0, 8 do - icol = math.mod(i, 3) + 1 + icol = (i % 3) + 1 -- Get a color, change its transparency and -- set it as the current color. @@ -100,7 +100,7 @@ -- We don't want the boxes to be transparent, so since we changed -- the colors transparencies in the first example we have to change -- the transparencies back to completely opaque. - icol = math.mod(i, 3) + 1 + icol = (i % 3) + 1 r, g, b, a = pl.gcol0a(icol) pl.scol0a(icol, r, g, b, 1) pl.col0(icol) Modified: trunk/examples/lua/x33.lua =================================================================== --- trunk/examples/lua/x33.lua 2012-02-15 07:37:17 UTC (rev 12166) +++ trunk/examples/lua/x33.lua 2012-02-16 20:24:20 UTC (rev 12167) @@ -32,7 +32,7 @@ -- return single bit (for OR) function bit(x,b) - return (math.mod(x, 2^b) - math.mod(x,2^(b-1)) > 0) + return ((x % 2^b) - (x % 2^(b-1)) > 0) end -- logic OR for number values This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |