Math::Project3D::Plot - Perl extension for plotting projections of 3D functions
use Math::Project3D::Plot; # Create new image or open an existing one my $img = Imager->new(...); # Create new projection my $projection = Math::Project3D->new( # see Math::Project3D manpage! ); my $plotter = Math::Project3D::Plot->new( image => $img, projection => $projection, # 1 logical unit => 10 pixels scale => 10, # x/y coordinates of the origin in pixels origin_x => $img->getwidth() / 2, origin_y => $img->getheight() / 2, ); $plotter->plot_axis( color => $color, # see Imager manpage about colors vector => [1, 0, 0], # That's the x-axis length => 100, ); $plotter->plot( params => [@parameters], color => $color, # see Imager manpage about colors ); $plotter->plot_list( params => [ [@parameter_set1], [@parameter_set2], # ... ], color => $color, # see Imager manpage about colors type => 'line', # connect points with lines # other option: 'points' ); $plotter->plot_range( params => [ [$lower_boundary1, $upper_boundary1, $increment1], [$lower_boundary2, $upper_boundary2, $increment2], # ... ], color => $color, # see Imager manpage about colors type => 'points', # draw the points only # other options: 'line' and 'multiline' ); # Use Imager methods on $img to save the image to a file
This module may be used to plot the results of a projection from a three dimensional vectorial function onto a plane into an image. What a horrible sentence.
new is the constructor for Math::Project3D::Plot objects. Using the specified arguments, it creates a new instance of Math::Project3D::Plot. Parameters are passed as a list of key value pairs. Valid parameters are:
required: image => Imager object to draw into projection => Math::Project3D object to get projected points from optional: scale => how many pixels per logical unit (defaults to 10) origin_x => graphical x coordinate of the origin origin_y => graphical y coordinate of the origin (default to half the width/height of the image)
The plot method plots the projected point associated with the function parameters passed to the method. Takes its arguments as key/value pairs. The following parameters are valid (and required):
Imager color to use (see Imager::Color manpage)
Array reference containing a list of function parameters
In addition to plotting the point, the method returns the graphical coordinates of the point.
The plot_list method plots all projected points associated with the sets of function parameters passed to the method. Takes its arguments as key/value pairs. The following parameters are valid:
The plot_range method plots all projected points associated with the function parameter ranges passed to the method. Takes its arguments as key/value pairs. The following parameters are valid:
Imager color to use (see Imager::Color manpage)
Array reference containing an array reference for every function parameter. These inner array references are to contain one or three items: one: static parameter three: lower boundary, upper boundary, increment
May be either 'line' or 'points' (connect points or not) (defaults to 'points').
New in v1.010: type 'multiline' that works similar to 'line', but does not connect points whenever a parameter other than the innermost one is incremented. This is usually the desired method whenever you are plotting functions of multiple parameters and are experiencing odd lines connecting different parts of the function. 'multiline' is only a valid type for 'plot_range', not for the other plotting methods.
The plot_axis method draws an axis into the image. "Axis" used as in "a line that goes through the origin". Required arguments:
color => Imager color to use (see Imager::Color manpage) vector => Array ref containing three vector components. (only the direction matters as the vector will be normalized by plot_axis.) length => Desired axis length.
Steffen Mueller, <smueller@cpan.org>
Copyright (c) 2002-2006 Steffen Mueller. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Imager, Math::Project3D, Math::Project3D::Function, Math::MatrixReal