#=============================================== # Planet #=============================================== package Planet; use Common; @ISA = qw(Common); #公開したいサブルーチン #@EXPORT = qw(aa ); use strict; sub Name() { return shift->{Name}; } sub R() { return shift->{R}; } sub V() { return shift->{V}; } sub M() { return shift->{M}; } sub d() { return shift->{d}; } sub RotV() { return shift->{RotV}; } sub RevR() { return shift->{RevR}; } sub RevV() { return shift->{RevV}; } sub new { #$radius (m), $volume (m^3), $mass(kg), $density (g/cm^3), #$rotationvelocity (m/s), $revolutionradius (m), $revolutionvelocity (m/s) my ($module, $name, $radius, $volume, $mass, $density, $rotationvelocity, $revolutionradius, $revolutionvelocity) = @_; my $this = {}; bless $this; if(!defined $radius) { if(uc $name eq "SUN" or $name eq "太陽") { $this->SetProperties("Sun", 1392000e3/2, 1.41e27, 1.9891e30, 1411e-3, 0, 0, 0); } elsif(uc $name eq "MERCURY" or $name eq "水星") { $this->SetProperties("Mercury", 4879.4e3/2, 0, 3.302e23, 5.43, 0, 57910000e3, 47.8725e3); } elsif(uc $name eq "VENUS" or $name eq "金星") { $this->SetProperties("Venus", 12103.6e3/2, 0, 4.869e24, 5.24, 0, 108208930e3, 35.0214e3); } elsif(uc $name eq "EARTH" or $name eq "地球") { $this->SetProperties("Earth", 12756.3e3/2, 0, 5.9742e24, 5.515, 0, 149597870e3, 29.7859e3); } elsif(uc $name eq "MARS" or $name eq "火星") { $this->SetProperties("Mars", 6794.4e3/2, 0, 6.4191e23, 3.94, 0, 227936640e3, 24.1309e3); } elsif(uc $name eq "JUPITER" or $name eq "木星") { $this->SetProperties("Jupiter", 142984e3/2, 0, 1.899e27, 1.33, 0, 778412010e3, 13.0697e3); } elsif(uc $name eq "SATURN" or $name eq "土星") { $this->SetProperties("Saturn", 120536e3/2, 0, 5.688e26, 0.69, 0, 1426725400e3, 9.6724e3); } elsif(uc $name eq "URANUS" or $name eq "天王星") { $this->SetProperties("Uranus", 51118e3/2, 0, 8.686e25, 1.29, 0, 2870990000e3, 6.8e3); } elsif(uc $name eq "NEPTUNE" or $name eq "海王星") { $this->SetProperties("Neptune", 49572e3/2, 0, 1.024e26, 1.64, 0, 4498252900e3, 5.4778e3); } elsif(uc $name eq "PLUTO" or $name eq "冥王星") { $this->SetProperties("Pluto", 2306e3/2, 0, 1.305e22, 2.03, 0, 5906376272e3, 4.666e3); } } else { $this->SetProperties($name, $radius, $volume, $mass, $density, $rotationvelocity, $revolutionradius, $revolutionvelocity); } return $this; } sub SetProperties { #$radius (m), $volume (m^3), $mass(kg), $density (g/cm^3), #$rotationvelocity (m/s), $revolutionradius (m), $revolutionvelocity (m/s) my ($this, $name, $radius, $volume, $mass, $density, $rotationvelocity, $revolutionradius, $revolutionvelocity) = @_; $this->{Name} = $name; $this->{R} = $radius; $this->{V} = $volume; $this->{M} = $mass; $this->{d} = $density; $this->{RotV} = $rotationvelocity; $this->{RevR} = $revolutionradius; $this->{RevV} = $revolutionvelocity; return $name; } sub DESTROY { my $this = shift; } 1;