in reply to Re: locating ultima thule
in thread locating ultima thule
It's hard to appreciate right ascension this and declination that without pictures. I used a pretty stable version of my html template to capture these screens and then comment on them: pluto page.
I went through the script and added a bunch of comments. Changed some notation to make it more even. There's no remants of Jupiter and Venus there now.
I generate a guess somewhere near the midpoint of the interval, ask for the ephemeris for that time, and pull the row data from the elements we want, in this case, the moon and Pluto.
I lacked the imagination to discuss the main control rigorously tonight. Consider it like this. Each wrong interior guess means you can slide the goalposts in. Eventually you hit a humber where they show both bodies occupying the same second. In this case it is 2458489.99538359. Take a look at 2458489.35, and you see (close to) the same picture from the point of view of the Plutans.
$ pt 3.ut.pl $ ./3.ut.pl Make query number 1? [Y] :Y row1 is Moon 4h 57m 4s +19° 5.9' 58.6 ER 51.804 −58.490 Up row2 is Pluto 19h 30m 31s −21° 56.1' 34.700 −27.638 85.830 + Set Make query number 2? [Y] :Y row1 is Moon 23h 50m 34s −5° 55.0' 63.0 ER −12.242 93.887 +Set row2 is Pluto 19h 33m 27s −21° 51.7' 34.609 −64.053 148.38 +2 Set ... row1 is Moon 19h 32m 42s −21° 14.0' 63.1 ER 22.146 16.263 Up row2 is Pluto 19h 32m 43s −21° 52.8' 34.644 21.516 16.112 Up Make query number 18? [Y] :Y row1 is Moon 19h 32m 43s −21° 14.0' 63.1 ER 22.126 16.363 Up row2 is Pluto 19h 32m 43s −21° 52.8' 34.644 21.495 16.214 Up equal seconds is 2458517.329784 ... $
Here's my cleaned up version of the script:
equal, while condition fails at julian second 2458489.99538359 19 Moon 19h 28m 49s −21° 17.9' 63.2 ER −42.931 −103. +221 Set 19 Pluto 19h 28m 49s −21° 58.6' 34.696 −43.388 −102. +531 Set equal seconds is 2458489.99538359 $
$ cat 3.ut.pl #!/usr/bin/perl -w use 5.011; use WWW::Mechanize::GZip; use HTML::TableExtract; use Prompt::Timeout; use open ':std', OUT => ':utf8'; use constant TIMEOUT => 3; use constant MAXTRIES => 30; use Data::Dumper; ### re-set for ultima thule # declarations, initializations to precede main control my ( $ra1_seconds, $ra2_seconds, $equal_sec, $equal ); # set time boundaries my ( $before_bound, $after_bound ) = ( 2458467.0, 2458500); # 2458487.85873 is while I'm adding comments #approximately now, give or take 30 days #oh gosh, I can hardly remember analysis, please forgive # seeking a "conjunction" in the above dense interval # hard code 2 objects to look at (rows) my $e1 = 5; #moon my $e2 = 11; #pluto ## so yeah, a lot of hard-coding here. These values should work my $column = 1; #right ascension my $filename = '3.ut.txt'; #output file my $now_string = localtime; # start logfile open( my $jh, '>>', $filename ) or die "Could not open file '$filename +' $!"; say $jh "Script executed at $now_string"; my $attempts = 1; my ( $lower, $upper ) = ( $before_bound, $after_bound ); my $site = 'http://www.fourmilab.ch/yoursky/cities.html'; my $mech = 'WWW::Mechanize::GZip'->new; $mech->get($site); ## need to be specific about where we are looking from # You can find a list on the site for someplace near you $mech->follow_link( text => 'Portland OR' ); $mech->set_fields(qw'date 2'); #julian date specified my $ref_final; #reference to outlive what follows # determine equality by contracting stochastically while ( ( ( $attempts == 1 ) || ( $ra2_seconds != $ra1_seconds ) ) ) { my $default = ( ( $attempts >= MAXTRIES ) ) ? 'N' : 'Y'; my $answer = prompt( "Make query number $attempts?", $default, TIMEO +UT ); exit if $answer =~ /^N/i; # guess always a value interior to the time interval # It lands between 40 and 60 percent, flat random # means sims go differently every time my $guess = closetohalf( $upper, $lower ); # feed that guess to the friendly folks at fourmilab # get the ephemeris at that time: $mech->set_fields( jd => $guess ); $mech->click_button( value => "Update" ); my $te = 'HTML::TableExtract'->new; $te->parse( $mech->content ); my $table = ( $te->tables )[3]; #ephemeris table # looking to get the whole rows # array manipulations my $aoa_ref = $table->rows(); $ref_final = $aoa_ref; my $row_ref1 = $table->row($e1); my @row1 = @$row_ref1; say "row1 is @row1"; my $row_ref2 = $table->row($e2); my @row2 = @$row_ref2; say "row2 is @row2"; my $ra1 = $row1[$column]; my $ra2 = $row2[$column]; # create natural numbers from RA $ra1_seconds = string_to_second($ra1); $ra2_seconds = string_to_second($ra2); # the planets win this game when I find a time s.t. # their right ascensions are equal. # I wouldn't guarantee this during retrogade observance if ( $ra2_seconds < $ra1_seconds ) { $upper = $guess; } elsif ( $ra1_seconds < $ra2_seconds ) { $lower = $guess; } else { $equal = $guess; say $jh "equal, while condition fails at julian second $equal"; $equal_sec = $ra1_seconds; } say $jh "$attempts @row1"; say $jh "$attempts @row2"; $attempts++; } say $jh "equal seconds is $equal"; say "equal seconds is $equal"; print Dumper $ref_final; sub string_to_second { my $string = shift; my $return; if ( my $success = $string =~ /^(\d*)h\s+(\d*)m\s+(\d*)s$/ ) { $return = 3600 * $1 + 60 * $2 + $3; } else { } return $return; } # I love this one: sub closetohalf { my ( $up, $low ) = @_; $low + ( $up - $low ) * ( 0.4 + rand 0.2 ); } $
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: locating ultima thule
by bliako (Abbot) on Jan 04, 2019 at 11:35 UTC |