Math::Curve::Hilbert man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

Hilbert(3)	      User Contributed Perl Documentation	    Hilbert(3)

NAME
       Math::Curve::Hilbert - Perl Implementation of Hilberts space filling
       Curve

SYNOPSIS
	 use Math::Curve::Hilbert;

	 # get object representing 8x8 curve with a step of 10 (i.e. draw 80x80 pixels)
	 my $hilbert = Math::Curve::Hilbert->new( direction=>'up', max=>3, clockwise=>1, step=>10);

	 # get a point from coordinates
	 my $point = $hilbert->PointFromCoordinates(20,60);

	 # get coordinates from a point
	 my ($x,$y) = $hilbert->CoordinatesFromPoint($point);

	 # get range(s) from box
	 my @ranges = $hilbert->RangeFromCoordinates($x1,$y1,$x2,$y2);

	 #
	 # draw image representing curve

	 use GD;
	 # create a new image
	 my $im = new GD::Image(300,300);
	 my $black = $im->colorAllocate(0,0,0);
	 my $blue = $im->colorAllocate(0,0,255);

	 my $count = 0;
	 my ($x1,$y1) = $hilbert->CoordinatesFromPoint($count++);
	 while ( ($hilbert->CoordinatesFromPoint($count))[0] ) {
	     my ($x2,$y2) = $hilbert->CoordinatesFromPoint($count++);
	     $im->line($x1,$y1,$x2,$y2,$black);
	     ($x1,$y1) = ($x2,$y2);
	 }

DESCRIPTION
       The Hilbert Curve module provides some useful functions using Hilberts
       Space-filling Curve. This is handy for things like Dithering,
       Flattening n-dimensional data, fractals - all kind of things really.

       "A Space Filling Curve is a special fractal curve which has the
       following basic characteristics:
	A it covers completely an area, a volume or a hyper-volume in a 2-d,
       3-d or N-d space respectively,
	A each point is visited once and only once (the curve does not cross
       itself), and
	A neighbor points in the native space are likely to be neighbors in
       the space filling curve."  definition from Multiple Range Query
       Optimization in Spatial Databases, Apostolos N. Papadopoulos and Yannis
       Manolopoulos

       Other space filling curves include The Peano and Morton or Z-order
       curves. There is also the Hilbert II curve which has an 'S' shape
       rather than a 'U' shape. The Hilbert curve can also be applied to 3
       dimensions, but this module only supports 2 dimensions.

       Like most space filling curves, the area must be divided into 2 to the
       power of N parts, such as 8, 16, 32, etc

   EXPORT
       None by default.

METHODS
   new
	 # get object representing 8x8 curve with a step of 10 (i.e. draw 80x80 pixels)
	 my $hilbert = Math::Curve::Hilbert->new( direction=>'up', max=>3, clockwise=>1, step=>10);

	 direction specifies which direction the curve follows :

	 up (clockwise) : up, right, down
	 down (clockwise ) : down, right, up
	 left (clockwise) : left, up, right
	 right (clockwise) : right, down, left

	 clockwise specifies if the curve moves clockwise or anti-clockwise, the default is clockwise

	 max specifies the size of the grid to plot in powers of 2 - max=>2 would be a 4x4 grid, max=>4 would be 16 x 16 grid

	 step specifies how large a step should be (used in drawing the curve), the default is 1

	 X and Y allow you to specify a starting X and Y coordinate by passing a reference to a the value

   PointFromCoordinates
	 my $point = $hilbert->PointFromCoordinates(20,60);

   CoordinatesFromPoint
	 my ($x1,$y1) = $hilbert->CoordinatesFromPoint($point);

   RangeFromCoordinates
	 # get range(s) from box
	 my @ranges = $hilbert->RangeFromCoordinates($x1,$y1,$x2,$y2);

AUTHOR
       A. J. Trevena, <teejay@droogs.org>

SEE ALSO
       perl.

       <http://mathworld.wolfram.com/HilbertCurve.html>

perl v5.14.0			  2004-02-06			    Hilbert(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net