package oplot
Module Oplot.PltSource
Main Oplot functions
This module contains all functions for defining and rendering plots.
Defining plot objects
'Defining' means computing the coordinates of the points and lines to display, but not actually displaying them. We call a "sheet" a list of objects to be displayed.
type plot_object = | Points of points(*A list of points.
*)| Lines of points list(*The points of each sublist are joined by a line segment.
*)| Poly of points(*Closed polygonal line.
*)| View of view option(*Indicate the x-y range to display.
*)| Axis of axis(*Axis with divisions.
*)| Color of color(*Indicate the color to draw subsequent objects.
*)| Text of text(*Position a text at some (x,y) coordinate.
*)| Matrix of imatrix * view option(*Checkboard-like matrix view with 0-255 greyscale.
*)| Grid of grid * gllist(*3D mountain-like representation of a matrix.
*)| Surf3d of surf3d * gllist(*3D parametric surface.
*)| Curve3d of curve3d * gllist(*3D points joined by line segments.
*)| Move3d of move3d(*Animate the 3D object by a uniform rotation.
*)| Pause of int(*Display the current state of the sheet, and wait before displaying next object, but don't stop animation in the opengl window. This only works for interactive displays using the
*)GLdevice.| Freeze of int(*Display the current state of the sheet and suspend all display for the given time.
*)| Clear of color(*Clear graphics.
*)| Adapt of (view option * plot_object option) ref * view option -> plot_object(*Any object that needs to adapt itself to the current View.
*)| User of view -> plot_device -> unit(*Execute any user-defined program.
*)| Sheet of plot_object list(*Group plot objects.
*)
2D objects
Helper functions for creating 2D plot objects
A single point (x,y).
axis x0 y0 creates an Axis object with two axis crossing at the point (x0,y0).
val parametric_plot :
(float -> float) ->
(float -> float) ->
?pas:float ->
?adapt:bool ->
float ->
float ->
plot_objectparametric_plot fx fy t0 t1 computes a parametric curve given by the points (fx(t), fy(t)), for t varyingn from t0 to t1. If adapt is true, the step will adapt to the arc-length of the curve.
point_plot_f f x0 x1 computes a subset of the graph of the function f obtained by isolated points with a fixed horizontal step.
Similar to point_plot_f but the points are joined by line segments.
Alias for line_plot_f.
Similar to line_plot_f, but the plot will be dynamically cropped to the current view object. It returns an Adapt object.
val anim_plot :
(float -> float -> float) ->
?pas:float ->
?t0:float ->
?t1:float ->
float ->
float ->
plot_objectIf f is a function two parameters t and x, then anim_plot f x0 x1 will generate an animation of the graph of the functions f t for t evolving with real time. The resulting object is of type User.
text s x y draws the string s at the position (x,y).
Similar to text but the rendered text is the result of LaTeX compilation of the given string.
view x0 y0 x1 y1 creates a View object indicating the bounding box for subsequent drawings.
3D objects
Helper functions for creating 3D plot objects
A single 3D point (x,y,z).
val surf3d_plot :
(float -> float -> float) ->
(float -> float -> float) ->
(float -> float -> float) ->
?width:int ->
?height:int ->
?wire:bool ->
float ->
float ->
float ->
float ->
plot_objectsurf3d_plot fx fy fz u0 v0 u1 v1 computes the parametric surface spanned by the map (u,v)->(fx(u,v), fy(u,v), fz(u,v)) when (u,v) varies in the range [u0,u1] ✕ [v0,v1].
val grid_plot :
(float -> float -> float) ->
?wire:bool ->
?width:int ->
?height:int ->
float ->
float ->
float ->
float ->
plot_objectgrid_plot f x0 y0 x1 y1 computes the graph of the function f of two variables x y, when (x,y) varies in the range [x0,x1] ✕ [y0,y1].
Other objects
Specifies the RGB color for subsequent drawings.
freeze t creates a Freeze for t ms.
pause t creates a Pause for t ms.
rotate x y z theta t rotates the 3D scene with angular velocity theta (in radians) aroung the axis (x,y,z), during time t.
Displaying the plot objects
Various devices can be used to render the plots.
Initialize the graphics device and display the plot objects
Available devices
Software rendering in a separate window
Hardware (opengl) rendering in a separate window. This is the default
Render to an xfig file
Open in the xfig program, if present
Render to an EPS (encapsulated postscript) file
Render to a PDF (portable document format) file
Render to EPS and open with a postscript viewer like gv
Render to a BMP image
Open in an image viewer
Rendering parameters
The GL_SCALE is used to accomodate for HI-DPI screens. A "normal" screen of DPI about 110 should have GL_SCALE=1. A HI-DPI screen can typically have a scale of 2 or 2.5; on linux the GL_SCALE is detected at startup. It can be modified by the user.
Close the current rendering window and clear the temporary directory
Drawing specific objects
These functions should not be used interactively, because they necessitate the graphics window to be already opened by display; but they can be interesting when programming a User object.
Draw a single object, but not a Sheet. The device must have been initialized before.
If addcounter is true (default) the object will be considered as a new element of the currently displayed sheet; otherwise, it will be considered as being part of the currently displayed object: this only affects the Pause mechanism.
Time elapsed from the openning of the opengl window
Synchronize graphics output by swapping back and front buffers. Hence two consecutive calls will result in flicker. See copy_back_buffer.
Copy backbuffer to front buffer. If I use this intensively I can really hear my graphics card...