advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement


SpaceFlight


Java Source:

import java.awt.event.*;
import java.awt.*;
import java.io.Serializable;
import java.applet.*;
import java.util.*;

class Fly_by_Star {
	int   Xmax, Ymax, z;
	double x, y;

     Fly_by_Star( int width, int height )
          {
          Xmax = width/2;
          Ymax = height/2;
          x = (Math.random()*width) - Xmax;
          y = (Math.random()*height) - Ymax;
          if( (x == 0) && (y == 0 ) ) x = 10;
          z = (int)(Math.random()*100);
          }

     public void Draw( Graphics g, int mx, int my, int dx, int dy, double crot, double srot )
          {
          double X, Y;
          int   h, v;
          int   d;
          z-=2;
          x = x - ((double)mx*crot/25 -(double)my*srot/25)*(z+62)/162;
          y = y + ((double)mx*srot/25 -(double)my*crot/25)*(z+62)/162;
          if (x<-Xmax)x+=2*Xmax;
          if (x>Xmax)x-=2*Xmax;
          if (y<-Ymax)y+=2*Ymax;
          if (y>Ymax)y-=2*Ymax;
          X = (x*128/(64+z));
          Y = (y*128/(64+z));
          if( (X < -Xmax) || (X > Xmax)) z = 100;
          if( (Y < -Ymax) || (Y > Xmax)) z = 100;
          h = (int)(X*crot-Y*srot)+Xmax;
          v = (int)(X*srot+Y*crot)+Ymax;
          if ( z > 50 )g.setColor( Color.gray );
          else if ( z > 25 )g.setColor( Color.lightGray );
          else g.setColor( Color.white );
          d=(100-z)/40;
          if( d == 0 ) d = 1;
          if( d == 1 ) g.setColor( Color.white );
          g.fillRect( h, v, d, d );
          }
     }

class Background_Star {
     int   Xmax, Ymax, z;
     double x, y;
     Background_Star( int width, int height )
          {
          Xmax = width/2;
          Ymax = height/2;
          x = (Math.random()*width) - Xmax;
          y = (Math.random()*height) - Ymax;
          if( (x == 0) && (y == 0 ) ) x = 10;
          z = (int)(Math.random()*100);   /* Here it means brightness */
          }

     public void BDraw( Graphics g, int mx, int my, int dx, int dy, double crot, double srot)
          {
          int  h, v;
          int  d;

          x = x - (double)mx*crot/25 - (double)my*srot/25;
          y = y + (double)mx*srot/25 - (double)my*crot/25;
          if (x<-Xmax)x+=2*Xmax;
          if (x>Xmax)x-=2*Xmax;
          if (y<-Ymax)y+=2*Ymax;
          if (y>Ymax)y-=2*Ymax;
          h = (int)(x*crot-y*srot)+Xmax;
          v = (int)(x*srot+y*crot)+Ymax;
          if (h<0)h+=2*Xmax;
          if (h>2*Xmax)h-=2*Xmax;
          if (v<0)v+=2*Ymax;
          if (v>2*Ymax)v-=2*Ymax;
          if ( z > 50 )g.setColor( Color.gray );
          else if( z > 25 )g.setColor( Color.lightGray );
          else g.setColor( Color.lightGray );
          d=(100-z)/50;
          if( d == 0 ) d = 1;
          g.fillRect( h, v, d, d );
          }
     }


public class SpaceFlight extends Applet implements Runnable, MouseMotionListener, MouseListener, Serializable 
     {
     int       Width, Height, Xmax, Ymax;
     Thread    me = null;
     boolean   suspend = false;
     Image     im;
     Graphics  offscreen;
     Cursor    fifi;

     int       speed, N_Stars;
     int       mx, my, dx, dy, mxold, myold;  /* m: mouse pixel from center */
     double    crot, srot, rot;
     Fly_by_Star         FStar[];           /* Fly-by Star  */
     Background_Star     BStar[];           /* Background   */

     public void init()
          {
          Width = getSize().width;
          Height = getSize().height;
          String    Velocity = getParameter( "Velocity" );
          Show( "speed", Velocity );

          speed = (Velocity == null ) ? 50 : Integer.valueOf( Velocity ).intValue();
          String    Number_of_Stars = getParameter( "Number_of_Stars" );
          Show( "Number_of_Stars", Number_of_Stars );
          N_Stars = (Number_of_Stars == null ) ? 30 : Integer.valueOf( Number_of_Stars ).intValue();

          try
               {
               im = createImage( Width, Height );
               offscreen = im.getGraphics();
               }
          catch( Exception e)
               {
               offscreen = null;
               }
          BStar = new Background_Star[N_Stars];
          FStar = new Fly_by_Star[N_Stars];
          for( int i = 0; i < N_Stars; i++ )
               {
               BStar[i] = new Background_Star( Width, Height );
               FStar[i] = new Fly_by_Star( Width, Height );
               }
          mxold = 0;
          myold = 0;
          Xmax = Width/2;
          Ymax = Height/2;
          addMouseMotionListener(this);
          addMouseListener(this);
          }

     public void paint( Graphics g )
          {
          if( offscreen != null )
               {
               paintMe( offscreen );
               g.drawImage( im, 0, 0, this );
               }
          else
               {
               paintMe( g );
               }
          }

     public void paintMe( Graphics g )
          {
          g.setColor( Color.black );
          g.fillRect( 0, 0, Width, Height );
          for( int i = 0; i < N_Stars; i++ )
               {
               BStar[i].BDraw( g, mx, my, dx, dy, crot, srot );   
               FStar[i].Draw( g, mx, my, dx, dy, crot, srot );
               }
          }

     public void start()
          {
	  getFrame(this).setCursor(Frame.CROSSHAIR_CURSOR) ;
          if( me == null )
               {
               me = new Thread( this );
               me.start();
               }
          }

     public void stop()
          {
          if( me != null )
               {
               me.stop();
               me = null;
               }
	  getFrame(this).setCursor(Frame.DEFAULT_CURSOR) ;
          }

     public void run()
          {
          while( me != null )
               {
               dx = mx - mxold;
               dy = my - myold;
               mxold = mx;
               myold = my;
               rot = 3.14/6*mx/Xmax*0; /*disabled*/
               crot = Math.cos(rot);    
               srot = Math.sin(rot);
               try { Thread.sleep( speed ); }
               catch (InterruptedException e){}
               repaint();
               }
          }

     public void update( Graphics g )
          {
          paint( g );
          }

        public Frame getFrame(Component c) {          while( c != null && !(c instanceof java.awt.Frame) )                c = c.getParent();          return (Frame) c;        }

     public void mouseMoved(MouseEvent evt)
          {
          mx = evt.getX()-Xmax;
          my = evt.getY()-Ymax;
          }
     
     public void mouseDragged(MouseEvent evt) {}

     public void mouseReleased(MouseEvent e) {   }

     public void mousePressed(MouseEvent e) {    }

     public void mouseClicked(MouseEvent e) {    }

     public void mouseEntered(MouseEvent e) { }

     public void mouseExited(MouseEvent e) {    }


     public void Toggle( )
          {
          if( me != null )
               {
               if( suspend )
                    {
                    me.resume();
                    }
               else
                    {
                    me.suspend();
                    }
               suspend = !suspend;
               }
          }

     public void Show( String theString, String theValue )
          {
          if( theValue == null )
               {
               System.out.println( theString + " : null");
               }
          else
               {
               System.out.println( theString + " : " + theValue );
               }
          }
     }


Back to SpaceFlight

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 DevX Skillbuilding from IBM developerWorks
 RIA Run Contest: Build Next-Gen Apps in Microsoft Silverlight 2
 Avaya DevConnect Center
 Intel Go Parallel Portal
 Internet.com eBook Library
 Microsoft RIA Development Center
 Destination .NET
XML error: not well-formed (invalid token) at line 53
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

Alfresco's Latest ECM: Prying Open a Sector?
SaaS Tool Offers Custom Database Development
Microsoft’s Automated Agent: Can We Talk?
Borland Finally Sells CodeGear
Red Hat Heads for the JON 2.0
Out with the Old, in with the New at JavaOne
Trolltech Expands WebKit Footprint
Oracle: Eating its Own Open Source Food
Big Money and Open Source May Not Compute
Open Source Embrace Gives Sun New Fans

Getting Started with TBB on Windows
Moving to VoIP: Should You Go It Alone?
Introduction to the WPF Command Framework
7.0, Microsoft's Lucky Version?
Will Hyper-V Make VMware This Decade's Netscape?
Eliminate Fragmentation Frustration with Netbiscuits
Taming Trees: Building Branching Structures
Clean Up Function Syntax Mess with decltype
Sutter Speaks: The Future of Concurrency
INTEL SCAVENGER HUNT, LENOVO X300 AND APPLE IPOD TOUCH GIVEAWAY (the "Giveaway")

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About



JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

Solutions
Whitepapers and eBooks
Microsoft Article: Will Hyper-V Make VMware This Decade's Netscape?
Microsoft Article: 7.0, Microsoft's Lucky Version?
Microsoft Article: Hyper-V--The Killer Feature in Windows Server 2008
Avaya Article: How to Feed Data into the Avaya Event Processor
Microsoft Article: Install What You Need with Windows Server 2008
HP eBook: Putting the Green into IT
Whitepaper: HP Integrated Citrix XenServer for HP ProLiant Servers
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 1
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 2--The Future of Concurrency
Avaya Article: Setting Up a SIP A/S Development Environment
IBM Article: How Cool Is Your Data Center?
Microsoft Article: Managing Virtual Machines with Microsoft System Center
HP eBook: Storage Networking , Part 1
Microsoft Article: Solving Data Center Complexity with Microsoft System Center Configuration Manager 2007
MORE WHITEPAPERS, EBOOKS, AND ARTICLES
Webcasts
Intel Video: Are Multi-core Processors Here to Stay?
On-Demand Webcast: Five Virtualization Trends to Watch
HP Video: Page Cost Calculator
Intel Video: APIs for Parallel Programming
HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
Microsoft Silverlight Video: Creating Fading Controls with Expression Design and Expression Blend 2
MORE WEBCASTS, PODCASTS, AND VIDEOS
Downloads and eKits
Sun Download: Solaris 8 Migration Assistant
Sybase Download: SQL Anywhere Developer Edition
Red Gate Download: SQL Backup Pro and free DBA Best Practices eBook
Red Gate Download: SQL Compare Pro 6
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
How-to-Article: Preparing for Hyper-Threading Technology and Dual Core Technology
eTouch PDF: Conquering the Tyranny of E-Mail and Word Processors
IBM Article: Collaborating in the High-Performance Workplace
HP Demo: StorageWorks EVA4400
Intel Featured Algorhythm: Intel Threading Building Blocks--The Pipeline Class
Microsoft How-to Article: Get Going with Silverlight and Windows Live
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES