Paraglider
One large step for man . . .
One giant leap backwards for mankind!
In addition,
Girls Having Fun ? ! In that kind of "Big Air" wouldn't you expect your fellow collapsible canopy occupants to know how to coordinate and clear their turns?
Paraglider
One large step for man . . .
RickMasters wrote: . . . But seriously, how many close calls - defined as being suddenly startled by someone you never saw zipping by, way too close - have you had in your flying career?
Me, zero. But I only had to worry about other hang gliders . . .
AirNut wrote:Maintaining a good look out is certainly one of the planks of good airmanship. In sailplanes (and general aviation) flying, for example, this is emphasised, even harped upon.
AirNut wrote:In HG/PG, the emphasis on this seems to be somewhat less, usually just vague advice to "clear your turns" and "keep looking around". I think that's probably fair enough for HG/PG, because with sailplanes, the closing speed is a lot higher and it only takes several seconds for an on-coming sailplane to grow from a speck to a wind-shield-filling surprise .
bobk wrote:AirNut wrote:Maintaining a good look out is certainly one of the planks of good airmanship. In sailplanes (and general aviation) flying, for example, this is emphasised, even harped upon.
When I was getting my Private Pilot's license, my instructors always used the phrase "keep your head on a swivel". Just like you said, it was hammered into our heads over and over.AirNut wrote:In HG/PG, the emphasis on this seems to be somewhat less, usually just vague advice to "clear your turns" and "keep looking around". I think that's probably fair enough for HG/PG, because with sailplanes, the closing speed is a lot higher and it only takes several seconds for an on-coming sailplane to grow from a speck to a wind-shield-filling surprise .
This is a very good observation. Potential closing speed sets the "timer" in the back of our minds as to how many seconds we can fly before getting nervous. The interesting thing is that we tend to set that timer length based on our own speed with the assumption that others are moving at a similar rate (human nature). That becomes a problem when we mix aircraft of differing speeds.
At sites like Torrey Pines where we have many different kinds of aircraft flying, I've always felt it would be helpful for every pilot to at least get some experience flying in other aircraft (maybe a tandem or RC "buddy box"). I believe it enhances safety to be able to understand and appreciate all perspectives.
AirNut wrote:And when HGs and PGs (nylon pyons) mix, there is even a bit more going on than just the speed differential. There is also different turning behaviour (PGs pendulate), different pitch behaviour (HGs can dive), and different blind spots (HGs can't see well above, PGs can't see well below). Put all that together and the need for a good lookout at mixed sites becomes paramount.
import java.awt.*;
import java.util.StringTokenizer;
import java.util.Random;
import java.util.Vector;
// import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import java.io.File;
class gdata {
// static Color bg = new Color(141,199,253);
static Color bg = new Color(0,0,0);
static int x_offset_for_screen = 330;
static double delta_angle = Math.PI/128; // Math.PI/128; // / 32; // /128 Math.PI/32 Math.PI / 10; // was 0.01;
static int pause_time_ms = 10; // 1000; // was 5
static int file_num = 1;
static boolean create_files = true;
}
class ExitFrame extends Frame {
public ExitFrame ( String s ) {
super ( s );
setBackground ( gdata.bg );
}
public boolean handleEvent(Event evt) {
if (evt.id == Event.WINDOW_DESTROY) {
System.exit ( 0 );
}
return super.handleEvent(evt);
}
}
class plusses {
double current_angle = 0;
int spacing = 143-95;
int length = 112-80;
double ct=0;
double st=0;
double rot_x ( double x, double y ) {
return ( (x * ct) + (y * st) );
}
double rot_y ( double x, double y ) {
return ( (x * st) - (y * ct) );
}
public void rotate ( double angle ) {
current_angle += angle;
}
public void draw ( Graphics g, int w, int h ) {
int num_plusses = 7;
int border = w / 8;
int pw = ( w - (2*border) ) / num_plusses;
int pwc = pw / 2;
pw = 2 * pwc;
double pct = 0.3;
double hlx, hly, hrx, hry, vtx, vty, vbx, vby;
double tmp = 0;
g.setColor ( new Color(0, 0, 255) );
for (int row=-3; row<4; row++) {
for (int col=-3; col<4; col++) {
// Start with the normal coordinates for this plus sign
hlx = (col * pw) - (pw * pct);
hly = (row * pw);
hrx = (col * pw) + (pw * pct);
hry = (row * pw);
vtx = (col * pw);
vty = (row * pw) - (pw * pct);
vbx = (col * pw);
vby = (row * pw) + (pw * pct);
// Rotate by the angle
ct = Math.cos(current_angle);
st = Math.sin(current_angle);
tmp = rot_x ( hlx, hly );
hly = rot_y ( hlx, hly );
hlx = tmp;
tmp = rot_x ( hrx, hry );
hry = rot_y ( hrx, hry );
hrx = tmp;
tmp = rot_x ( vtx, vty );
vty = rot_y ( vtx, vty );
vtx = tmp;
tmp = rot_x ( vbx, vby );
vby = rot_y ( vbx, vby );
vbx = tmp;
// Offset to center of screen
hlx += (w/2);
hly += (w/2);
hrx += (w/2);
hry += (w/2);
vtx += (w/2);
vty += (w/2);
vbx += (w/2);
vby += (w/2);
for (int xoffset=-1; xoffset<=0; xoffset++) {
for (int yoffset=-1; yoffset<=0; yoffset++) {
// Draw the plus sign at this row and column
g.drawLine ( xoffset+(int)hlx, yoffset+(int)hly, xoffset+(int)hrx, yoffset+(int)hry );
g.drawLine ( xoffset+(int)vtx, yoffset+(int)vty, xoffset+(int)vbx, yoffset+(int)vby );
}
}
}
}
// Draw the dots last
g.setColor ( new Color(0, 255, 0) );
g.fillOval ( (w/2)-4, (w/2)-4, 8, 8 );
g.setColor ( new Color(255, 255, 0) );
g.fillOval ( (w/2)-4, (3*w/4)-4, 8, 8 );
g.fillOval ( (w/3)-4, (w/3)-4, 8, 8 );
g.fillOval ( (2*w/3)-4, (w/3)-4, 8, 8 );
}
}
public class Optical_Plusses_001 extends java.applet.Applet implements Runnable {
public Optical_Plusses_001 () {
super();
}
public boolean handleEvent(Event e) {
// if (e.id != 503) System.out.println ( "Got an event: " + e );
if (e.id == 501) {
if (current_delta_angle == 0) {
current_delta_angle = delta_angle;
} else {
current_delta_angle = 0;
}
}
return super.handleEvent(e);
}
boolean is_applet = true;
Thread update_thread;
boolean moved = false;
int delay = 1; // This will be changed in init!!
double angle = 3 * Math.PI / 2;
double delta_angle = gdata.delta_angle; // Math.PI / 10; // was 0.01;
double current_delta_angle = delta_angle;
double altitude = 0;
plusses illusion = new plusses();
public void paint_frame(Graphics g) {
Dimension window_size = size();
int w = window_size.width;
int h = window_size.height;
illusion.rotate ( current_delta_angle );
illusion.draw ( g, w, h );
if (moved) {
moved = false;
angle = angle - current_delta_angle;
// altitude = altitude + 0.5;
// if (altitude > h) altitude = -50;
int N = 2;
altitude = ( -h * (angle / (N * 2 * Math.PI))) % h;
if (gdata.create_files) {
String fname = "plus_frame" + gdata.file_num + ".png";
System.out.println ( "Opening " + fname );
File imgFile = new File( fname );
// ImageIO.write(new BufferedImage(img_buffer), "png", imgFile);
try {
ImageIO.write(img_buffer, "png", imgFile);
} catch ( Exception e ) {
System.out.println ( "Error writing to file!!" );
}
gdata.file_num++;
}
}
}
public void init() {
// font = new java.awt.Font("TimesRoman", Font.PLAIN, 24);
String param;
if (is_applet) {
param = getParameter("delay");
} else {
param = null;
}
if (param == null) {
delay = gdata.pause_time_ms; // 1000; // was 5
} else {
delay = Integer.valueOf(param).intValue();
}
System.out.println ( "Delay = " + delay );
// init_gbuffer();
}
// Image img_buffer = null;
BufferedImage img_buffer = null;
Graphics g_buffer = null;
Color bg_color = gdata.bg;
void init_gbuffer() {
if ( (img_buffer == null) || (g_buffer == null) || (size().width != img_buffer.getWidth(this)) || (size().height != img_buffer.getHeight(this)) ) {
// img_buffer = createImage ( size().width, size().height );
img_buffer = new BufferedImage ( size().width, size().height, BufferedImage.TYPE_INT_RGB );
g_buffer = img_buffer.getGraphics();
g_buffer.setColor ( bg_color );
g_buffer.fillRect (0,0,size().width, size().height);
}
}
public void init_frame() {
// img_buffer = createImage ( size().width, size().height );
img_buffer = new BufferedImage ( size().width, size().height, BufferedImage.TYPE_INT_RGB );
g_buffer = img_buffer.getGraphics();
g_buffer.setColor ( bg_color );
g_buffer.fillRect (0,0,size().width, size().height);
init_gbuffer();
}
public void update(Graphics g) {
init_gbuffer();
g_buffer.setColor ( bg_color );
g_buffer.clearRect (0,0,size().width, size().height);
g_buffer.fillRect (0,0,size().width, size().height);
paint ( g );
}
public void paint(Graphics g) {
init_gbuffer();
paint_frame ( g_buffer );
g.drawImage ( img_buffer, 0, 0, this );
}
public void start() {
update_thread = new Thread(this);
update_thread.start();
}
public void stop() {
update_thread.stop();
}
public void run() {
while (true) {
try {
Thread.currentThread().sleep(delay, 0);
moved = true;
} catch (InterruptedException e) {
}
repaint();
}
}
public static void main ( String args[] ) {
System.out.print ( "Running: blink " );
String jv="1.0.2";
String jcv="45.3";
if (System.getProperty("java.version").compareTo(jv) != 0) {
System.out.println( "Warning: This program is designed to run with java.version " + jv );
System.out.println( " You are currently running with " + System.getProperty("java.version") + "\n" );
}
if (System.getProperty("java.class.version").compareTo(jcv) != 0) {
System.out.println( "Warning: This program is designed to run with java.class.version " + jcv );
System.out.println( " You are currently running with " + System.getProperty("java.class.version") + "\n" );
}
String format_names[] = ImageIO.getReaderFormatNames();
System.out.println ( "ImageIO understands the following format types:" );
for (int i=0; i<format_names.length; i++) {
System.out.println ( " " + format_names[i] );
}
Optical_Plusses_001 app = new Optical_Plusses_001();
app.is_applet = false;
app.init();
ExitFrame f = new ExitFrame ( "Optical Illusion" );
f.add("Center", app);
f.resize(492,508);
app.start();
f.show();
}
}
This touches on the rather woolly concept of 'airmanship'. Although somewhat tenuous to define, we all know it when we see it, and rather alarmingly, when we don't see it.
Users browsing this forum: Google [Bot] and 3 guests