Compare commits
3 commits
753edec486
...
ed6e802ff3
Author | SHA1 | Date | |
---|---|---|---|
Solomon Peachy | ed6e802ff3 | ||
Solomon Peachy | 5e84a4b933 | ||
Solomon Peachy | c2c3a220da |
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
|||
*.o
|
||||
Makefile
|
||||
autom4te.cache/
|
||||
config.h
|
||||
config.log
|
||||
config.status
|
||||
|
@ -15,4 +16,3 @@ src/merger
|
|||
src/ogie
|
||||
src/optimizer
|
||||
stamp-h1
|
||||
|
||||
|
|
|
@ -582,7 +582,7 @@ distdir: $(DISTFILES)
|
|||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
|
@ -608,7 +608,7 @@ dist-shar: distdir
|
|||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
|
@ -626,7 +626,7 @@ dist dist-all:
|
|||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
|
@ -636,7 +636,7 @@ distcheck: dist
|
|||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
|
|
298
perl/GPLIGC.pl
298
perl/GPLIGC.pl
|
@ -58,8 +58,6 @@ $config{'optimizer_debug'} = 0;
|
|||
$config{'maps'} = "1";
|
||||
$config{'map_type'}= "osm";
|
||||
$config{'map_gms_v'}=130; # as of 12/2013 v132 seems to be the lowest number
|
||||
$map_gms_v_min=10000;
|
||||
$map_gms_v_max=$config{'map_gms_v'};
|
||||
$config{'maps_zoomlevel'}= 8;
|
||||
$config{'map_max_scalesize'}=750;
|
||||
$config{'map_max_tiles'}=30;
|
||||
|
@ -138,19 +136,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
ENDE
|
||||
|
||||
### Global variables
|
||||
$altmode = 'baro';
|
||||
$filestat='closed';
|
||||
$file='No file opened';
|
||||
#$sigusr2flag=0;
|
||||
$optimized_for = "none";
|
||||
$zoom = 0;
|
||||
$cut_track = 0;
|
||||
$hide_mm = 0; # if 1 hide pictures and mm
|
||||
$delta_photo_time = 0; # offset between GPS time and camera clock
|
||||
$savname = 'no'; # not set
|
||||
$zl = 0;
|
||||
$tiles = 0;
|
||||
$map_reload = 0;
|
||||
my $altmode = 'baro';
|
||||
my $filestat='closed';
|
||||
my $file='No file opened';
|
||||
#my $sigusr2flag=0;
|
||||
my $optimized_for = "none";
|
||||
my $zoom = 0;
|
||||
my $cut_track = 0;
|
||||
my $hide_mm = 0; # if 1 hide pictures and mm
|
||||
my $delta_photo_time = 0; # offset between GPS time and camera clock
|
||||
my $savname = 'no'; # not set
|
||||
my $zl = 0;
|
||||
my $tiles = 0;
|
||||
my $map_reload = 0;
|
||||
|
||||
# flag for Tk::JPEG module
|
||||
my $have_jpeg = 0;
|
||||
|
@ -162,15 +160,28 @@ my $have_EXIF = 0;
|
|||
my $have_imager = 0;
|
||||
my $have_png = 0;
|
||||
|
||||
# Temporary directory
|
||||
my $pfadftmp;
|
||||
|
||||
my $map_gms_v_min=10000;
|
||||
my $map_gms_v_max=$config{'map_gms_v'};
|
||||
|
||||
my %gpi;
|
||||
|
||||
$gpi{'qnh'} = 1013.25; # just to avoid an error if the pressure plot is issued without igc file
|
||||
|
||||
# all temp-files to be cleaned later
|
||||
# these are the data files used for Gnuplot
|
||||
@clearlist=qw(zyl.dat speed.dat press.dat plot.bat vario.dat gpsvario.dat deltah.dat
|
||||
my @clearlist=qw(zyl.dat speed.dat press.dat plot.bat vario.dat gpsvario.dat deltah.dat
|
||||
baro.dat gpsalt.dat 3d.dat lonproj.dat latproj.dat befehl.dat
|
||||
km.dat lonlat.dat enl.dat ias.dat tas.dat iashisto.dat tashisto.dat shisto.dat vhisto.dat
|
||||
vhistogps.dat plot.gpl plot.bat barohisto.dat gpshisto.dat wind.dat sat.dat tmp.png);
|
||||
|
||||
# More stuff that's not properly passed around.
|
||||
my $FDR;
|
||||
my $task_state;
|
||||
my $wpcyl_state;
|
||||
|
||||
# ===16=== is this all needed... socket connection!!!
|
||||
# this is used for Communication with openGLIGCexplorer
|
||||
# use IPC::SysV qw(IPC_RMID IPC_CREAT S_IRWXU ftok);
|
||||
|
@ -424,6 +435,19 @@ MainLoop;
|
|||
###
|
||||
###############################################################################
|
||||
|
||||
# Global state
|
||||
my ($FlightView, $canvas, $WPPlotWindow, $barocanvas);
|
||||
my ($minlat, $minlon, $dxp, $dyp);
|
||||
my @introtext;
|
||||
my @trackplot;
|
||||
my @mapplot;
|
||||
my @baroplot;
|
||||
my @baroplot_task;
|
||||
my @wpcyl_lines;
|
||||
my @acc_lines;
|
||||
my @task_lines;
|
||||
my @marks_lines;
|
||||
|
||||
sub updateCyl {
|
||||
if (Exists($FlightView)) {
|
||||
if ($wpcyl_state == 1) {wpcyldraw(0); wpcyldraw(1);}
|
||||
|
@ -464,6 +488,70 @@ sub updateCoor {
|
|||
if (Exists($WPPlotWindow)) {WPPlotUpdate();}
|
||||
}
|
||||
|
||||
# More global crap..
|
||||
my @DECLAT;
|
||||
my @DECTIME;
|
||||
my @DECLON;
|
||||
my @FIX;
|
||||
my @FIXb;
|
||||
my @LAT;
|
||||
my @LON;
|
||||
my @IAS;
|
||||
my @TAS;
|
||||
my @SIU;
|
||||
my @FXA;
|
||||
my @VXA;
|
||||
my @RPM;
|
||||
my @KMY;
|
||||
my @KMX;
|
||||
my @ENL;
|
||||
my @BARO;
|
||||
my @TIME;
|
||||
my @GPSALT;
|
||||
my @TASK;
|
||||
my @TASK_info;
|
||||
my @HEADER;
|
||||
my @IVARIO;
|
||||
my @IVARIOGPS;
|
||||
my @ASPEED;
|
||||
my @WPNAME;
|
||||
my @WPLAT;
|
||||
my @WPLON;
|
||||
my @WPRADFAC;
|
||||
my @WPIGCLAT;
|
||||
my @WPIGCLON;
|
||||
my @nonIVARIO;
|
||||
my @nonIVARIOGPS;
|
||||
my @nonISPEED;
|
||||
my @compVARIO;
|
||||
|
||||
my $VXAEXISTS;
|
||||
my $RPMEXISTS;
|
||||
my $TASKEXISTS;
|
||||
my $FXAEXISTS;
|
||||
my $SIUEXISTS;
|
||||
my $ENLEXISTS;
|
||||
my $TASEXISTS;
|
||||
my $IASEXISTS;
|
||||
|
||||
my ($BARO_max, $BARO_min);
|
||||
my ($GPSALT_max, $GPSALT_min);
|
||||
my ($IAS_max, $IAS_min);
|
||||
my ($TAS_max, $TAS_min);
|
||||
my ($nonIVARIO_max, $nonIVARIO_min);
|
||||
my ($nonIVARIOGPS_max, $nonIVARIOGPS_min);
|
||||
my ($nonISPEED_max, $nonISPEED_min);
|
||||
|
||||
my $busy;
|
||||
my ($task_start_time_index, $task_finish_time_index);
|
||||
|
||||
my ($xmin, $xmax, $zmin, $zmax, $ymin, $ymax);
|
||||
my ($AKTWP, $MAXWP, $freeWP);
|
||||
my ($com1, $com2);
|
||||
my ($nr, $offset);
|
||||
my ($liftsexist);
|
||||
my ($stat_start, $stat_end);
|
||||
|
||||
sub oeffnen { ### open a File
|
||||
|
||||
my $backup=$file;
|
||||
|
@ -499,7 +587,7 @@ sub oeffnen { ### open a File
|
|||
|
||||
$freeWP=1;
|
||||
$offset=0; #elevation offset, used as openGLIGCexplorer option... after using elevation calibration of FVW!
|
||||
$nr = 0 ;
|
||||
$nr = 0;
|
||||
|
||||
# reset additional info in gpi-data
|
||||
$gpi{'month'}="00";
|
||||
|
@ -527,7 +615,7 @@ sub oeffnen { ### open a File
|
|||
($gpi{'year'}, $gpi{'month'}, $gpi{'day'}) = GPLIGCfunctions::guessdatefromfilename($file);
|
||||
|
||||
### Einsaugen der IGC-Datei von File
|
||||
@file=<FILE>; ###global! file fuer alle!!!
|
||||
my @file=<FILE>; ###global! file fuer alle!!!
|
||||
close (FILE);
|
||||
$filestat='open'; ### Status : File geoeffnet
|
||||
|
||||
|
@ -548,7 +636,7 @@ sub oeffnen { ### open a File
|
|||
@LAT=();
|
||||
@LON=();
|
||||
@FIX=();
|
||||
my @FIXb=();
|
||||
@FIXb=();
|
||||
@HEADER=();
|
||||
@TASK=();
|
||||
@ENL=(); #noise level
|
||||
|
@ -564,8 +652,6 @@ sub oeffnen { ### open a File
|
|||
$TAS_min=100000;
|
||||
@ASPEED=();
|
||||
|
||||
# $ASPEED_max=-10000;
|
||||
# $ASPEED_min=100000;
|
||||
@compVARIO=();
|
||||
@nonIVARIO=();
|
||||
$nonIVARIO_max=-100;
|
||||
|
@ -588,19 +674,26 @@ sub oeffnen { ### open a File
|
|||
|
||||
# I-extensions to the B-record
|
||||
$IASEXISTS = "no";
|
||||
$IASLENGTH = 0;
|
||||
my $IASSTART = 0;
|
||||
my $IASLENGTH = 0;
|
||||
$TASEXISTS = "no";
|
||||
$TASLENGTH = 0;
|
||||
my $TASSTART = 0;
|
||||
my $TASLENGTH = 0;
|
||||
$ENLEXISTS = "no";
|
||||
$ENLLENGTH = 0;
|
||||
my $ENLSTART = 0;
|
||||
my $ENLLENGTH = 0;
|
||||
$SIUEXISTS = "no";
|
||||
$SIULENGTH = 0;
|
||||
my $SIUSTART = 0;
|
||||
my $SIULENGTH = 0;
|
||||
$FXAEXISTS = "no";
|
||||
$FXALENGTH = 0;
|
||||
my $FXASTART = 0;
|
||||
my $FXALENGTH = 0;
|
||||
$VXAEXISTS = "no";
|
||||
$VXALENGTH = 0;
|
||||
my $VXASTART = 0;
|
||||
my $VXALENGTH = 0;
|
||||
$RPMEXISTS = "no";
|
||||
$RPMLENGTH = 0;
|
||||
my $RPMSTART = 0;
|
||||
my $RPMLENGTH = 0;
|
||||
|
||||
$TASKEXISTS = "no";
|
||||
|
||||
|
@ -628,7 +721,7 @@ sub oeffnen { ### open a File
|
|||
|
||||
# check for I_extensions to the Brecords (more here to be added SIU, FXA etc)
|
||||
if ($zeile=~/^I(.+)\S?/) {
|
||||
$izeile=$1;
|
||||
my $izeile=$1;
|
||||
|
||||
if ($izeile =~/(\d{2})(\d{2})ENL/) {
|
||||
$ENLSTART = $1 - 2;
|
||||
|
@ -755,7 +848,7 @@ sub oeffnen { ### open a File
|
|||
|
||||
# convert time to decimal
|
||||
foreach (@TIME) {
|
||||
$tmptime=GPLIGCfunctions::time2dec($_);
|
||||
my $tmptime=GPLIGCfunctions::time2dec($_);
|
||||
push(@DECTIME, $tmptime);
|
||||
}
|
||||
|
||||
|
@ -771,15 +864,15 @@ sub oeffnen { ### open a File
|
|||
# Find reference point (center between max and min lat/lon)
|
||||
my ($maxlat, $minlat)=GPLIGCfunctions::MaxKoor(\@DECLAT);
|
||||
my ($maxlon, $minlon)=GPLIGCfunctions::MaxKoor(\@DECLON);
|
||||
$centrex = ($minlon + $maxlon)/2;
|
||||
$centrey = ($minlat + $maxlat)/2;
|
||||
my $centrex = ($minlon + $maxlon)/2;
|
||||
my $centrey = ($minlat + $maxlat)/2;
|
||||
|
||||
|
||||
print "OEFFNEN: init maxlat minlat maxlon minlon: $maxlat $minlat $maxlon $minlon\n" if ($config{'DEBUG'});
|
||||
|
||||
# KMY and KMX are km distances in X ynd Y from refernece point
|
||||
|
||||
for ($i=0; $i<=$#DECLAT; $i++){
|
||||
for (my $i=0; $i<=$#DECLAT; $i++){
|
||||
my $dist=GPLIGCfunctions::dist($centrey,$DECLON[$i],$DECLAT[$i],$DECLON[$i]);
|
||||
if($centrey>$DECLAT[$i]){
|
||||
$dist = -$dist;
|
||||
|
@ -789,7 +882,7 @@ sub oeffnen { ### open a File
|
|||
push(@KMY, $dist);
|
||||
}
|
||||
|
||||
for ($i=0; $i<=$#DECLON; $i++){
|
||||
for (my $i=0; $i<=$#DECLON; $i++){
|
||||
my $dist=GPLIGCfunctions::dist($DECLAT[$i],$centrex,$DECLAT[$i],$DECLON[$i]);
|
||||
if($centrex>$DECLON[$i]){
|
||||
$dist = -$dist;
|
||||
|
@ -798,7 +891,7 @@ sub oeffnen { ### open a File
|
|||
}
|
||||
|
||||
# average speed, vario, gpsvario (averaged by $config{'integrate_over'} position fixes)
|
||||
for ($i=0; $i<=$#DECLAT; $i++){
|
||||
for (my $i=0; $i<=$#DECLAT; $i++){
|
||||
if ($i >= $config{'integrate_over'}) {
|
||||
my $dist=GPLIGCfunctions::dist($DECLAT[$i-$config{'integrate_over'}],$DECLON[$i-$config{'integrate_over'}],$DECLAT[$i],$DECLON[$i]);
|
||||
push(@ASPEED, ($dist/($DECTIME[$i]-$DECTIME[$i-$config{'integrate_over'}])));
|
||||
|
@ -813,7 +906,7 @@ sub oeffnen { ### open a File
|
|||
}
|
||||
|
||||
# non averaged speed, vario. gpsvario TE vario(compVARIO)
|
||||
for ($i=0; $i<=$#DECLAT; $i++) {
|
||||
for (my $i=0; $i<=$#DECLAT; $i++) {
|
||||
if ($i >= 1) {# && $i <$#DECLAT) {
|
||||
my $dist=GPLIGCfunctions::dist($DECLAT[$i-1],$DECLON[$i-1],$DECLAT[$i],$DECLON[$i]);
|
||||
|
||||
|
@ -907,8 +1000,8 @@ sub oeffnen { ### open a File
|
|||
{Errorbox("total energy compensation was calculated from gps groundspeed!\nTo turn off this warning set te_warning = 0.\nAlso see te_vario_fallback");}
|
||||
|
||||
# Maximum/minimum height:
|
||||
($maxbaro, $minbaro)=GPLIGCfunctions::MaxKoor(\@BARO);
|
||||
($maxgpsalt, $mingpsalt)=GPLIGCfunctions::MaxKoor(\@GPSALT);
|
||||
my ($maxbaro, $minbaro)=GPLIGCfunctions::MaxKoor(\@BARO);
|
||||
my ($maxgpsalt, $mingpsalt)=GPLIGCfunctions::MaxKoor(\@GPSALT);
|
||||
|
||||
# write tmp-files
|
||||
tmpfileout();
|
||||
|
@ -1236,8 +1329,8 @@ sub oeffnen { ### open a File
|
|||
|
||||
### BARO HISTO
|
||||
|
||||
@baroBEREICH=();
|
||||
@baroHISTO=();
|
||||
my @baroBEREICH=();
|
||||
my @baroHISTO=();
|
||||
$i = 0;
|
||||
|
||||
# initialize the histo-arrays
|
||||
|
@ -1305,7 +1398,7 @@ sub oeffnen { ### open a File
|
|||
##################
|
||||
# This is a work-around for files without pressure altitude...
|
||||
# hell knows how that can happen, but I have seen such.
|
||||
$dybaro = ($maxbaro - $minbaro);
|
||||
my $dybaro = ($maxbaro - $minbaro);
|
||||
|
||||
if($dybaro == 0){ #some sick files only have GPS altitude...
|
||||
Errorbox("Work-around enabled! NO PRESSURE ALTITUDE FOUND IN FILE! USING GPS ALTITUDE");
|
||||
|
@ -1330,12 +1423,12 @@ sub oeffnen { ### open a File
|
|||
|
||||
# $_ is a task-definition !
|
||||
|
||||
$TASK_ID=substr($_,18,4);
|
||||
my $TASK_ID=substr($_,18,4);
|
||||
my $zwisch_date=GPLIGCfunctions::time2human(substr($_,0,6),'d');
|
||||
my $zwisch_zeit=GPLIGCfunctions::time2human(substr($_,6,6),'t');
|
||||
$TASK_TIME=$zwisch_date." ".$zwisch_zeit;
|
||||
$TASK_DATE=GPLIGCfunctions::time2human(substr($_,12,6),'d');
|
||||
$TASK_WPs=substr($_,22,2);
|
||||
my $TASK_TIME=$zwisch_date." ".$zwisch_zeit;
|
||||
my $TASK_DATE=GPLIGCfunctions::time2human(substr($_,12,6),'d');
|
||||
my $TASK_WPs=substr($_,22,2);
|
||||
|
||||
#$MAXWP=$MAXWP+($TASK_WPs+4); # + start, abflug, finish, landing
|
||||
|
||||
|
@ -1393,7 +1486,7 @@ sub oeffnen { ### open a File
|
|||
}
|
||||
|
||||
# convert all wp's to decimal format!
|
||||
for ($i=1; $i<=$#WPIGCLAT; $i++){
|
||||
for (my $i=1; $i<=$#WPIGCLAT; $i++){
|
||||
$WPLAT[$i]=GPLIGCfunctions::igc2dec($WPIGCLAT[$i]);
|
||||
$WPLON[$i]=GPLIGCfunctions::igc2dec($WPIGCLON[$i]);
|
||||
}
|
||||
|
@ -1478,7 +1571,7 @@ sub Ausgabe { ### Ausgabe der Plots mit Gnuplot
|
|||
|
||||
my $mode = shift;
|
||||
|
||||
$bereich='['.$xmin.':'.$xmax.']['.$ymin.':'.$ymax.']['.$zmin.':'.$zmax.']';
|
||||
my $bereich='['.$xmin.':'.$xmax.']['.$ymin.':'.$ymax.']['.$zmin.':'.$zmax.']';
|
||||
|
||||
# Linux/Unix Gnupot 3.x
|
||||
if ( $^O ne "MSWin32" && $config{'gnuplot_major_version'} != 4 ) {
|
||||
|
@ -1576,7 +1669,7 @@ sub Ausgabe { ### Ausgabe der Plots mit Gnuplot
|
|||
# give out an error message
|
||||
sub Errorbox {
|
||||
my $fm=$_[0];
|
||||
my $Errorbox=$FlightView->messageBox(-message=>$fm, -type=>OK, -icon=>'error');
|
||||
my $Errorbox=$FlightView->messageBox(-message=>$fm, -type=>'OK', -icon=>'error');
|
||||
return ;
|
||||
}
|
||||
|
||||
|
@ -1688,6 +1781,8 @@ sub directory {
|
|||
|
||||
###############################################################################
|
||||
|
||||
my ($FF, $FI, $MF, $thermal_statistik, $glide_statistik);
|
||||
|
||||
###schliessen
|
||||
# used if new file is opened
|
||||
sub schliessen {
|
||||
|
@ -1757,6 +1852,10 @@ sub FVWsetInfo {
|
|||
$canvas->update();
|
||||
}
|
||||
|
||||
# Global stat, bleh.
|
||||
my $infoFenster;
|
||||
my $helpFenster;
|
||||
|
||||
### subroutine info
|
||||
sub info {
|
||||
|
||||
|
@ -1858,6 +1957,11 @@ ENDE
|
|||
|
||||
###############################################################################
|
||||
|
||||
my @PHOTO_FILES;
|
||||
my @PHOTO_FILES_INDICES;
|
||||
my @PHOTO_FILES_TIMES;
|
||||
my $oGLePID;
|
||||
|
||||
sub OpenGLexplorer {
|
||||
if ($filestat eq 'closed') {$FlightView->bell; return;}
|
||||
|
||||
|
@ -1877,14 +1981,14 @@ sub OpenGLexplorer {
|
|||
$DEBUGOGIE = "--debug" if ($config{'DEBUG'});
|
||||
|
||||
my $lifts="";
|
||||
$liftfile = substr($file, 0, -3)."lif";
|
||||
my $liftfile = substr($file, 0, -3)."lif";
|
||||
if (-r $liftfile) {$lifts= "--lifts \"$liftfile\"";}
|
||||
|
||||
# so far lifts or photos
|
||||
else {
|
||||
if ($config{'photos'} && !$hide_mm && $#PHOTO_FILES > 0) {
|
||||
|
||||
$pfile = substr($file, 0, -3)."photocoord";
|
||||
my $pfile = substr($file, 0, -3)."photocoord";
|
||||
open (PF, ">$pfile");
|
||||
|
||||
for (my $z=0; $z<=$#PHOTO_FILES;$z++) {
|
||||
|
@ -1989,6 +2093,8 @@ sub FlightInfo {
|
|||
###############################################################################
|
||||
|
||||
### Flight Statistics
|
||||
my $fstattext;
|
||||
|
||||
sub FlightStatistics {
|
||||
if (Exists($FF)) {$FF->destroy;}
|
||||
|
||||
|
@ -2012,7 +2118,6 @@ sub FlightStatistics {
|
|||
}
|
||||
|
||||
################################################################################
|
||||
|
||||
sub FSupdate {
|
||||
if (!Exists($FF)) {return;}
|
||||
|
||||
|
@ -2074,13 +2179,14 @@ sub FSupdate {
|
|||
|
||||
my $taskstt=GPLIGCfunctions::time2human($TIME[$task_start_time_index],'t');
|
||||
my $taskft=GPLIGCfunctions::time2human($TIME[$task_finish_time_index],'t');
|
||||
my $task_speed;
|
||||
|
||||
$fstattext.="Begin of task/unpowered flight (s-marker): $taskstt \nEnd of task/unpowered flight (f-marker): $taskft\n";
|
||||
$task_time=GPLIGCfunctions::dec2time($DECTIME[$task_finish_time_index]-$DECTIME[$task_start_time_index]);
|
||||
my $task_time=GPLIGCfunctions::dec2time($DECTIME[$task_finish_time_index]-$DECTIME[$task_start_time_index]);
|
||||
|
||||
$fstattext.="Task time (unpowered flight time): $task_time\n";
|
||||
|
||||
$dec_task_time=$DECTIME[$task_finish_time_index]-$DECTIME[$task_start_time_index];
|
||||
my $dec_task_time=$DECTIME[$task_finish_time_index]-$DECTIME[$task_start_time_index];
|
||||
|
||||
if ($dec_task_time != 0) { $task_speed= $entf / $dec_task_time ;} else { $task_speed = "42";} #this is an egg :)
|
||||
|
||||
|
@ -2259,8 +2365,8 @@ sub zylinder {
|
|||
|
||||
open (ZYLOUT,">${pfadftmp}zyl.dat");
|
||||
|
||||
for ($i=0; $i<=$#dlat; $i++) {
|
||||
for ($j=0; $j<=$h; $j=$j+100) { ###make it a zylinder!
|
||||
for (my $i=0; $i<=$#dlat; $i++) {
|
||||
for (my $j=0; $j<=$h; $j=$j+100) { ###make it a zylinder!
|
||||
print ZYLOUT $lon+$dlon[$i]," ",$lat+$dlat[$i]," $j \n";
|
||||
}
|
||||
}
|
||||
|
@ -2273,6 +2379,15 @@ sub zylinder {
|
|||
##############################################################################################################################################
|
||||
##############################################################################################################################################
|
||||
################################# FLIGHTVIEW #################################################################################################
|
||||
my $lastphoto_idx;
|
||||
my $mmlist;
|
||||
my $savename;
|
||||
my $trackheight;
|
||||
my $fvwtext;
|
||||
my $baroheight;
|
||||
my $canvas_frame;
|
||||
my @debugboxlist;
|
||||
|
||||
sub FlightView {
|
||||
|
||||
if ($config{'fvw_baro_fraction'} < 1.1 || $config{'fvw_baro_fraction'} > 10) {
|
||||
|
@ -2338,7 +2453,7 @@ sub FlightView {
|
|||
|
||||
$menu_options->separator();
|
||||
|
||||
$mapmenu = $menu_options->cget(-menu)->Menu();
|
||||
my $mapmenu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Map settings", -menu=> $mapmenu);
|
||||
|
||||
$mapmenu->checkbutton(-label =>"Use maps", -variable=>\$config{'maps'},-command=>sub{if (Exists($FlightView)) {updateFVW('i');} });
|
||||
|
@ -2352,7 +2467,7 @@ sub FlightView {
|
|||
|
||||
#$menu_options->seperator();
|
||||
|
||||
$gpmenu = $menu_options->cget(-menu)->Menu();
|
||||
my $gpmenu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Gnuplot settings", -menu=> $gpmenu);
|
||||
|
||||
if ($^O ne "MSWin32") {
|
||||
|
@ -2368,14 +2483,14 @@ sub FlightView {
|
|||
|
||||
$gpmenu->separator;
|
||||
|
||||
$drawmenu = $gpmenu->Menu();
|
||||
my $drawmenu = $gpmenu->Menu();
|
||||
$gpmenu->cascade(-label=>"Draw options", -menu=> $drawmenu);
|
||||
|
||||
$drawmenu->radiobutton(-label => "Lines",-variable => \$config{'gnuplot_draw_style'},-value => "with lines");
|
||||
$drawmenu->radiobutton(-label => "Dots",-variable => \$config{'gnuplot_draw_style'},-value => "with dots");
|
||||
$drawmenu->radiobutton(-label => "Linespoints",-variable => \$config{'gnuplot_draw_style'},-value => "with linespoints");
|
||||
|
||||
$termmenu = $gpmenu->Menu();
|
||||
my $termmenu = $gpmenu->Menu();
|
||||
$gpmenu->cascade(-label=>"Gnuplot terminal", -menu=> $termmenu);
|
||||
|
||||
$termmenu->radiobutton(-label => "x11",-variable => \$config{'gnuplot_terminal'},-value => "x11");
|
||||
|
@ -2390,12 +2505,12 @@ sub FlightView {
|
|||
$termmenu->radiobutton(-label => "fig monochrome",-variable => \$config{'gnuplot_terminal'},-value => "fig monochrome");
|
||||
$termmenu->radiobutton(-label => "fig color",-variable => \$config{'gnuplot_terminal'},-value => "fig color");
|
||||
|
||||
$optmenu = $menu_options->cget(-menu)->Menu();
|
||||
my $optmenu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Optimizer method", -menu=> $optmenu);
|
||||
$optmenu->radiobutton(-label => "Metropolis Montecarlo",-variable => \$config{'optimizer_method'},-value => "mmc");
|
||||
$optmenu->radiobutton(-label => "Simulated Annealing",-variable => \$config{'optimizer_method'},-value => "sa");
|
||||
|
||||
$zylmenu = $menu_options->cget(-menu)->Menu();
|
||||
my $zylmenu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"WP Cylinder/Sector", -menu=> $zylmenu);
|
||||
|
||||
$zylmenu->radiobutton(-label => "FAI Sectors", -variable=>\$config{'zylinder_wp_type'}, -value=>"sec",-command=>\&updateCyl);
|
||||
|
@ -2409,7 +2524,7 @@ sub FlightView {
|
|||
$zylmenu->radiobutton(-label => "1km - DMSt start/finish", -variable=>\$config{'zylinder_radius'},-value=>1.0,-command=>\&updateCyl);
|
||||
$zylmenu->checkbutton(-label => "Show names", -variable=>\$config{'zylinder_names'}, -command=>sub{updateCyl(); baroplot();});#_task();});
|
||||
|
||||
$zoommenu = $menu_options->cget(-menu)->Menu();
|
||||
my $zoommenu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"WP-Plot/Zoom sidelength", -menu=> $zoommenu);
|
||||
|
||||
#$menu_options->separator();
|
||||
|
@ -2419,7 +2534,7 @@ sub FlightView {
|
|||
$zoommenu->radiobutton(-label=>"5km",-variable=>\$config{'zoom_sidelength'},-value=>"5",-command=>\&updateZoom);
|
||||
$zoommenu->radiobutton(-label=>"10km",-variable=>\$config{'zoom_sidelength'},-value=>"10",-command=>\&updateZoom);
|
||||
|
||||
$noiselevelmenu = $menu_options->cget(-menu)->Menu();
|
||||
my $noiselevelmenu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Noise Level Limit", -menu=> $noiselevelmenu);
|
||||
|
||||
$noiselevelmenu->radiobutton(-label=>"50", -variable=>\$config{'ENL_noise_limit'},-value=>"50",-command=>\&updateFVW);
|
||||
|
@ -2428,9 +2543,9 @@ sub FlightView {
|
|||
$noiselevelmenu->radiobutton(-label=>"500",-variable=>\$config{'ENL_noise_limit'},-value=>"500",-command=>\&updateFVW);
|
||||
$noiselevelmenu->radiobutton(-label=>"750",-variable=>\$config{'ENL_noise_limit'},-value=>"750",-command=>\&updateFVW);
|
||||
|
||||
$datfile="3d.dat"; ###default
|
||||
my $datfile="3d.dat"; ###default
|
||||
|
||||
$coormenu = $menu_options->cget(-menu)->Menu();
|
||||
my $coormenu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Coordinate format", -menu=> $coormenu);
|
||||
|
||||
#$menu_options->separator();
|
||||
|
@ -2440,7 +2555,7 @@ sub FlightView {
|
|||
$coormenu->radiobutton(-label=>"dd.ddddd", -variable=>\$config{'coordinate_print_format'},-value=>"deg",-command=>\&updateCoor);
|
||||
|
||||
# SPEED UNITS
|
||||
$speed_menu = $menu_options->cget(-menu)->Menu();
|
||||
my $speed_menu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Speed units", -menu=> $speed_menu);
|
||||
$speed_menu->radiobutton(-label=>"km/h", -variable=>\$config{'speed_unit_name'},-value=>"km/h",-command=>sub{
|
||||
$config{'speed_unit_factor'}=1.0;
|
||||
|
@ -2465,7 +2580,7 @@ sub FlightView {
|
|||
});
|
||||
|
||||
# VERTICAL SPEED UNITS
|
||||
$vspeed_menu = $menu_options->cget(-menu)->Menu();
|
||||
my $vspeed_menu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Vertical speed units", -menu=> $vspeed_menu);
|
||||
$vspeed_menu->radiobutton(-label=>"m/s", -variable=>\$config{'vertical_speed_unit_name'},-value=>"m/s",-command=>sub{
|
||||
$config{'vertical_speed_unit_factor'}=1.0;
|
||||
|
@ -2485,7 +2600,7 @@ sub FlightView {
|
|||
});
|
||||
|
||||
# ALTITUDE UNITS
|
||||
$alt_menu = $menu_options->cget(-menu)->Menu();
|
||||
my $alt_menu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Altitude units", -menu=> $alt_menu);
|
||||
$alt_menu->radiobutton(-label=>"m", -variable=>\$config{'altitude_unit_name'},-value=>"m",-command=>sub{
|
||||
$config{'altitude_unit_factor'}=1.0;
|
||||
|
@ -2499,7 +2614,7 @@ sub FlightView {
|
|||
});
|
||||
|
||||
# DISTANCE UNITS
|
||||
$dist_menu = $menu_options->cget(-menu)->Menu();
|
||||
my $dist_menu = $menu_options->cget(-menu)->Menu();
|
||||
$menu_options->cascade(-label=>"Distance units", -menu=> $dist_menu);
|
||||
$dist_menu->radiobutton(-label=>"km", -variable=>\$config{'distance_unit_name'},-value=>"km",-command=>sub{
|
||||
$config{'distance_unit_factor'}=1.0;
|
||||
|
@ -2507,8 +2622,7 @@ sub FlightView {
|
|||
FSupdate();
|
||||
});
|
||||
$dist_menu->radiobutton(-label=>"Miles", -variable=>\$config{'distance_unit_name'},-value=>"miles",-command=>sub{
|
||||
$config{'distance_unit_factor'}=0.621504;
|
||||
FVWausg();
|
||||
$config{'distance_unit_factor'}=0.621504; FVWausg();
|
||||
FSupdate();
|
||||
});
|
||||
$dist_menu->radiobutton(-label=>"Nautical Miles", -variable=>\$config{'distance_unit_name'},-value=>"NM",-command=>sub{
|
||||
|
@ -2701,9 +2815,11 @@ sub FlightView {
|
|||
baroplot();
|
||||
|
||||
#$fvwtextobj=$canvas->createText(0,0,text=>" ");
|
||||
$horizontal=$canvas->createLine(0,0,0,0);
|
||||
$vertical=$canvas->createLine(0,0,0,0);
|
||||
$barovertical = $barocanvas->createLine(0,0,0,0);
|
||||
my $horizontal=$canvas->createLine(0,0,0,0);
|
||||
my $vertical=$canvas->createLine(0,0,0,0);
|
||||
my $barovertical = $barocanvas->createLine(0,0,0,0);
|
||||
my $stat_start;
|
||||
my $stat_end;
|
||||
|
||||
FVWausg();
|
||||
marksdraw();
|
||||
|
@ -2756,6 +2872,7 @@ sub FlightView {
|
|||
if ($cut_track == 0) {$cut_track=1;trackplot($dxp, $dyp, $minlat, $minlon);baroplot();FVWausg();return;}
|
||||
if ($cut_track == 1) {$cut_track=0;trackplot($dxp, $dyp, $minlat, $minlon);baroplot();FVWausg();}
|
||||
});
|
||||
my $olcFirstWPindex;
|
||||
|
||||
$FlightView->bind("<Key-s>", sub {
|
||||
if ($filestat eq 'closed') { return; }
|
||||
|
@ -2807,7 +2924,7 @@ sub FlightView {
|
|||
$mmlist->configure(-title=>"Media List");
|
||||
setexit($mmlist);
|
||||
|
||||
$mm_list_box = $mmlist->ScrlListbox(-label=>"Media List", -selectmode=>"single",-height=>"0",-width=>"0")->pack(-side=>"left");
|
||||
my $mm_list_box = $mmlist->ScrlListbox(-label=>"Media List", -selectmode=>"single",-height=>"0",-width=>"0")->pack(-side=>"left");
|
||||
$mm_list_box->bind("<Double-Button-1>" => \&mm_click);
|
||||
|
||||
for (my $z=0; $z<=$#PHOTO_FILES;$z++) {
|
||||
|
@ -3091,6 +3208,9 @@ sub FlightView {
|
|||
$FlightView->bind("<Escape>", sub{$FlightView->destroy; gpligcexit();} );
|
||||
}
|
||||
|
||||
my @textplot;
|
||||
my ($maxlat, $maxlon);
|
||||
|
||||
sub mapplot {
|
||||
if ($filestat eq 'closed') { return; }
|
||||
|
||||
|
@ -3143,8 +3263,8 @@ sub mapplot {
|
|||
my ($dxp, $dyp, $minlat, $minlon, $calledfrom) =@_;
|
||||
|
||||
# calc maxima
|
||||
my $maxlat = $minlat + $dyp * ($trackheight-1);
|
||||
my $maxlon = $minlon + $dxp * ($config{'window_width'}-1);
|
||||
$maxlat = $minlat + $dyp * ($trackheight-1);
|
||||
$maxlon = $minlon + $dxp * ($config{'window_width'}-1);
|
||||
|
||||
# jump address for reload at changed zl (if zl has to be changed because of limits)
|
||||
mapreload:
|
||||
|
@ -3230,11 +3350,11 @@ sub mapplot {
|
|||
# seems not to work, yet?
|
||||
$dladdr = "http://t1.openseamap.org/seamark/$zl/$xt/$yt.png" if ($config{'map_type'} eq "oseam");
|
||||
|
||||
$rand = int(rand(4));
|
||||
my $rand = int(rand(4));
|
||||
$dladdr = "http://mt$rand.google.com/vt/lyrs=t,r&hl=en&x=$xt&y=$yt&z=$zl" if ($config{'map_type'} eq "gmt");
|
||||
$dladdr = "http://mt$rand.google.com/vt/lyrs=m&hl=en&x=$xt&y=$yt&z=$zl" if ($config{'map_type'} eq "gmm" );
|
||||
|
||||
$retry_gms_counter=-1;
|
||||
my $retry_gms_counter=-1;
|
||||
retry_gms:
|
||||
$retry_gms_counter++;
|
||||
|
||||
|
@ -3251,7 +3371,7 @@ sub mapplot {
|
|||
$dladdr = "http://mt$rand.google.com/vt/lyrs=h&hl=en&x=$xt&y=$yt&z=$zl" if ($addlayer == 1);
|
||||
|
||||
if (!-d "$osmpath/$zl/$xt") {File::Path::mkpath "$osmpath/$zl/$xt";}
|
||||
$resp = LWP::Simple::getstore($dladdr, "$osmpath/$zl/$xt/$yt.png");
|
||||
my $resp = LWP::Simple::getstore($dladdr, "$osmpath/$zl/$xt/$yt.png");
|
||||
print "$resp DOWNLOAD: \"$dladdr\" ==> $osmpath/$zl/$xt/$yt.png\n" if ($config{'DEBUG'});
|
||||
|
||||
if ($resp != 200) {print "$resp error: $dladdr\n" if ($config{'DEBUG'}); }
|
||||
|
@ -3551,12 +3671,12 @@ sub wpcyldraw {
|
|||
GPLIGCfunctions::kurs( $WPLAT[$zaehl], $WPLON[$zaehl], $WPLAT[$zaehl+1], $WPLON[$zaehl+1]),
|
||||
GPLIGCfunctions::kurs( $WPLAT[$zaehl], $WPLON[$zaehl], $WPLAT[$zaehl-1], $WPLON[$zaehl-1])); }
|
||||
|
||||
$sec2up = $secdir +90; if ($sec2up < 0) { $sec2up = $sec2up + 360 ;} if ($sec2up > 360) { $sec2up = $sec2up - 360 ;}
|
||||
$sec2down = $secdir -90; if ($sec2down < 0) { $sec2down = $sec2down + 360 ;} if ($sec2down > 360) { $sec2down = $sec2down - 360 ;}
|
||||
$sec1up = $secdir +45; if ($sec1up < 0) { $sec1up = $sec1up + 360 ;} if ($sec1up > 360) { $sec1up = $sec1up - 360 ;}
|
||||
$sec1down = $secdir -45; if ($sec1down < 0) { $sec1down = $sec1down + 360 ;} if ($sec1down > 360) { $sec1down = $sec1down - 360 ;}
|
||||
my $sec2up = $secdir +90; if ($sec2up < 0) { $sec2up = $sec2up + 360 ;} if ($sec2up > 360) { $sec2up = $sec2up - 360 ;}
|
||||
my $sec2down = $secdir -90; if ($sec2down < 0) { $sec2down = $sec2down + 360 ;} if ($sec2down > 360) { $sec2down = $sec2down - 360 ;}
|
||||
my $sec1up = $secdir +45; if ($sec1up < 0) { $sec1up = $sec1up + 360 ;} if ($sec1up > 360) { $sec1up = $sec1up - 360 ;}
|
||||
my $sec1down = $secdir -45; if ($sec1down < 0) { $sec1down = $sec1down + 360 ;} if ($sec1down > 360) { $sec1down = $sec1down - 360 ;}
|
||||
|
||||
($cylref_lat, $cylref_lon) = GPLIGCfunctions::zylinder2($WPLAT[$zaehl], $WPLON[$zaehl], '3.0' , $sec2down, 180); # FAI = 3.0 km sector
|
||||
my ($cylref_lat, $cylref_lon) = GPLIGCfunctions::zylinder2($WPLAT[$zaehl], $WPLON[$zaehl], '3.0' , $sec2down, 180); # FAI = 3.0 km sector
|
||||
|
||||
for (my $xzaehl=0; $xzaehl<=$#$cylref_lat-1; $xzaehl++) {
|
||||
|
||||
|
@ -3635,6 +3755,7 @@ sub taskdraw {
|
|||
}
|
||||
}
|
||||
|
||||
my ($dxbaro, $dybaro, $minbaro, $maxbaro);
|
||||
|
||||
sub baroplot {
|
||||
if ($filestat eq 'closed') {
|
||||
|
@ -3878,6 +3999,8 @@ sub baroclick {
|
|||
$barocanvas->CanvasBind('<1>' => \&baroclick);
|
||||
}
|
||||
|
||||
my ($delta_lat, $delta_lon);
|
||||
|
||||
sub zoom {
|
||||
print "zoom()\n" if ($config{'DEBUG'});
|
||||
if ($zoom == 1 || $zoom == 2) {
|
||||
|
@ -3972,6 +4095,7 @@ sub unzoomed {
|
|||
}
|
||||
# end unzoomed
|
||||
|
||||
my $kl2;
|
||||
|
||||
sub zoom2 {
|
||||
print "zoom2()\n" if ($config{'DEBUG'});
|
||||
|
@ -4419,6 +4543,8 @@ sub FVWausg {
|
|||
}
|
||||
|
||||
#############################################################################
|
||||
my ($wppwlat, $wppwlon);
|
||||
my ($myWPN, $myWPRF);
|
||||
|
||||
sub WpPlot {
|
||||
|
||||
|
@ -6145,7 +6271,6 @@ sub geotag_photos {
|
|||
}
|
||||
|
||||
###############################################################################
|
||||
|
||||
sub phototimecalibration {
|
||||
|
||||
if (!defined $lastphoto_idx) {
|
||||
|
@ -6560,4 +6685,3 @@ sub olctaskinfo {
|
|||
|
||||
return ($message_out, $stime, $ltime, $fstart, $ffinish, $deltaheight, $starttime, $finishtime);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue