| Astro-Nova documentation | Contained in the Astro-Nova distribution. |
Astro::Nova::GalPosn - Perl representation of a libnova ln_gal_posn
use Astro::Nova qw(functions ...); my $date = Astro::Nova::GalPosn->new(); $date->set_year(...); # ... print $date->as_ascii(), "\n"; my @members = $date->get_all();
This class represents a libnova ln_gal_posn struct. The struct has the following layout:
ln_gal_posn {
double l # galactic longitude
double b # galactic latitude
}
Constructor returns a new Astro::Nova::GalPosn.
Optionally takes key/value pairs for setting the struct members.
Extra arguments are ignored. Uninitialized struct members are set to zero.
Get or set any of the class attributes. (See list above)
Returns all members as a list.
Sets all members. Takes a list of values which must be in the order shown above. Any missing values are ignored, undefs are skipped.
Returns a human-readable ASCII table of the date information.
Returns a list of all members in order.
Convert to equatorial coordinates with respect to the B1950 or J2000 epochs (returns an Astro::Nova::EquPosn object).
When called as a class method, creates a new Astro::Nova::GalPosn object from the
given Astro::Nova::EquPosn object. Uses the B1950/J2000 epochs according to
the method name.
When called as an object method, sets the current object's state instead.
libnova website: http://libnova.sourceforge.net/
Steffen Mueller, <smueller@cpan.org>
The Astro::Nova wrapper of libnova is copyright (C) 2009-2010 by Steffen Mueller.
The wrapper code is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.0 or, at your option, any later version of Perl 5 you may have available.
libnova is maintained by Liam Girdwood and Petr Kubanek.
libnova is released under the GNU LGPL. This may limit the licensing terms of the wrapper code. If in doubt, ask a lawyer.
| Astro-Nova documentation | Contained in the Astro-Nova distribution. |
package Astro::Nova::GalPosn; use 5.008; use strict; use warnings; use Astro::Nova; # basic stuff is in Astro::Nova's XS! sub members { return qw/l b/; } sub as_ascii { my $self = shift; my $template = <<'HERE'; Gal. Longitude: %f Gal. Latitude: %f HERE return sprintf($template, $self->get_all()); } sub get_all { my $self = shift; return(map $self->$_(), map "get_$_", $self->members()); } sub set_all { my $self = shift; foreach my $member (map "set_$_", $self->members) { last if not @_; my $value = shift @_; next if not defined $value; $self->$member($value); } return 1; } sub from_equatorial_B1950 { my $class = shift; my $obj = shift->to_galactic_B1950(); return $obj if not ref $class; $class->set_all($obj->get_all()); return $class; } sub from_equatorial_J2000 { my $class = shift; my $obj = shift->to_galactic_J2000(); return $obj if not ref $class; $class->set_all($obj->get_all()); return $class; } sub to_equatorial_B1950 { return Astro::Nova::get_equ_from_gal(shift); } sub to_equatorial_J2000 { return Astro::Nova::get_equ2000_from_gal(shift); } 1; __END__