/usr/local/CPAN/OpenGL-Earth/OpenGL/Earth/NetworkHits.pm
# $Id: NetworkHits.pm 128 2009-01-26 21:08:24Z Cosimo $
package OpenGL::Earth::NetworkHits;
use strict;
use warnings;
use OpenGL;
use OpenGL::Earth::Coords;
our @NETWORK_HITS;
sub display {
my ($hits) = \@NETWORK_HITS;
push @{ $hits }, generate_random();
for my $s (@{ $hits }) {
spike($s->[0], $s->[1], $s->[2], 1.5);
$s->[2]--;
}
@{ $hits } = grep { $_->[2] > 0 } @{ $hits };
return;
}
sub generate_random {
my $lon = rand(360) - 180;
my $lat = rand(180) - 90;
my $amplitude = int rand(50) + 50;
return [ $lat, $lon, $amplitude ];
}
sub spike {
my ($lat, $long, $amount, $radius) = @_;
# Apply texture offset
$long -= 90;
my ($x1, $y1, $z1) = OpenGL::Earth::Coords::earth_to_xyz($lat, $long, $radius + $amount/200);
my ($x2, $y2, $z2) = OpenGL::Earth::Coords::earth_to_xyz($lat, $long + 0.4, $radius);
my ($x3, $y3, $z3) = OpenGL::Earth::Coords::earth_to_xyz($lat, $long - 0.4, $radius);
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.3, 0.3);
glVertex3f($x1, $y1, $z1);
glVertex3f($x2, $y2, $z2);
glVertex3f($x3, $y3, $z3);
glEnd();
#glLineWidth(1);
#glBegin(GL_LINES);
# glColor4f(1.0, 0.2, 0.2, 0.6);
# glVertex3f(0, 0, 0);
# glVertex3f($x1, $y1, $z1);
#glEnd();
return;
}
1;