Package: splat
Version: 1.2.1-2
Followup-For: Bug #498443
I received the following message from John Magliacane, developer of SPLAT!:
Hi Nate.
Sorry to hear you're getting a blank graph. As it turns out, that's
normal based on some assumptions I made when I wrote the program. The
elevation angles at short distances tend to be largely negative, and to
display them over a fairly long path would significantly reduce the detail
in the resulting elevation plot.
So, I added a conditional statement in the GraphElevation() function that
modifies the y-range of the plot over short (2 mile or less) distances.
Please try replacing the existing GraphElevation() function with the
attached code and re-compile.
Let me know how it works out for you.
Thanks for bringing this to my attention.
73, de John, KD2BD
The patch he supplied applies to version 1.2.3 as I had tried the latest
source version to see if the bug was still present. I can report that
his patch does work and I get the expected plot on the graph.
- Nate >>
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.25-2-686 (SMP w/1 CPU core)
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash
Versions of packages splat depends on:
ii gnuplot 4.2.3-1 A command-line driven interactive
ii libbz2-1.0 1.0.5-1 high-quality block-sorting file co
ii libc6 2.7-13 GNU C Library: Shared libraries
ii libgcc1 1:4.3.1-9 GCC support library
ii libstdc++6 4.3.1-9 The GNU Standard C++ Library v3
ii zlib1g 1:1.2.3.3.dfsg-12 compression library - runtime
splat recommends no packages.
splat suggests no packages.
-- no debconf information
--- splat.cpp.orig 2008-07-21 09:46:23.000000000 -0500
+++ splat.cpp 2008-09-11 18:54:55.000000000 -0500
@@ -4656,12 +4656,13 @@
int x, y, z;
char basename[255], term[30], ext[15];
- double angle, refangle, maxangle=-90.0;
+ double angle, refangle, maxangle=-90.0, minangle=90.0, distance;
struct site remote;
FILE *fd=NULL, *fd2=NULL;
ReadPath(destination,source); /* destination=RX, source=TX */
refangle=ElevationAngle(destination,source);
+ distance=Distance(source,destination);
fd=fopen("profile.gp","wb");
fd2=fopen("reference.gp","wb");
@@ -4687,6 +4688,9 @@
if (angle>maxangle)
maxangle=angle;
+
+ if (angle<minangle)
+ minangle=angle;
}
if (metric)
@@ -4755,18 +4759,23 @@
fd=fopen("splat.gp","w");
fprintf(fd,"set grid\n");
- fprintf(fd,"set yrange [%2.3f to %2.3f]\n", (-fabs(refangle)-0.25), maxangle+0.25);
+
+ if (distance>2.0)
+ fprintf(fd,"set yrange [%2.3f to %2.3f]\n", (-fabs(refangle)-0.25), maxangle+0.25);
+ else
+ fprintf(fd,"set yrange [%2.3f to %2.3f]\n", minangle, refangle+(-minangle/8.0));
+
fprintf(fd,"set encoding iso_8859_1\n");
fprintf(fd,"set term %s\n",term);
- fprintf(fd,"set title \"SPLAT! Elevation Profile Between %s and %s (%.2f%c azimuth)\"\n",destination.name,source.name,Azimuth(destination,source),176);
+ fprintf(fd,"set title \"%s Elevation Profile Between %s and %s (%.2f%c azimuth)\"\n","SPLAT-1.2.3",destination.name,source.name,Azimuth(destination,source),176);
if (metric)
- fprintf(fd,"set xlabel \"Distance Between %s and %s (%.2f kilometers)\"\n",destination.name,source.name,KM_PER_MILE*Distance(source,destination));
+ fprintf(fd,"set xlabel \"Distance Between %s and %s (%.2f kilometers)\"\n",destination.name,source.name,KM_PER_MILE*distance);
else
- fprintf(fd,"set xlabel \"Distance Between %s and %s (%.2f miles)\"\n",destination.name,source.name,Distance(source,destination));
+ fprintf(fd,"set xlabel \"Distance Between %s and %s (%.2f miles)\"\n",destination.name,source.name,distance);
- fprintf(fd,"set ylabel \"Elevation Angle Along LOS Path Between %s and %s (degrees)\"\n",destination.name,source.name);
+ fprintf(fd,"set ylabel \"Elevation Angle Along LOS Path Between\\n%s and %s (degrees)\"\n",destination.name,source.name);
fprintf(fd,"set output \"%s.%s\"\n",basename,ext);
fprintf(fd,"plot \"profile.gp\" title \"Real Earth Profile\" with lines, \"reference.gp\" title \"Line of Sight Path (%.2f%c elevation)\" with lines\n",refangle,176);
@@ -4791,6 +4800,7 @@
fprintf(stderr,"\n*** ERROR: Error occurred invoking gnuplot!\n");
}
+
void GraphHeight(struct site source, struct site destination, char *name, double f, unsigned char n)
{
/* This function invokes gnuplot to generate an appropriate