Results 1 to 4 of 4
  1. #1
    123
    123 is offline Member
    Join Date
    Feb 2010
    Posts
    5
    Rep Power
    0

    Default How to read from all files in a directory & plot the contents?

    Hi,
    I'm working on a star map (graphics program), the final output of the program is similar to:
    http://nifty.stanford.edu/2009/reid-.../starchart.jpg
    Last edited by 123; 02-10-2010 at 09:20 AM. Reason: Forgot to add stuff....heres the full post from my side!

  2. #2
    Aseem is offline Senior Member
    Join Date
    Mar 2009
    Location
    USA
    Posts
    127
    Rep Power
    0

    Default

    so what exactly the problem is?
    You can read the file using FileInputStream.
    But again, what exactly is the problem?

  3. #3
    123
    123 is offline Member
    Join Date
    Feb 2010
    Posts
    5
    Rep Power
    0

    Default

    Hi,
    I'm working on a star map (graphics program), the final output of the program is similar to:
    http://nifty.stanford.edu/2009/reid-.../starchart.jpg

    These are the steps i follow:
    Step 1
    Write a method to convert between star coordinate system to the Java picture coordinate system.
    The star coordinate system has (0,0) in the center, and −1 and 1 as the extremes.
    The Java graphics coordinate system has (0,0) as the top-left corner, and positive numbers extend down and right up to the screen size.
    ---->diagram: http://i45.tinypic.com/2z4fgog.jpg

    Step 2
    Read the contents of the star-data.txt file, and plot the stars on a Java graphics window. Use a black background, and plot the stars as white circles.
    star-data.txt contains info on 3,526 stars, this number appears on the first line of the file.
    Subsequent lines has the following fields:
    -x, y coordinates for stars (in star coordinate system, e.g. 0.512379, 0.020508)
    - Henry Draper number (just a unique identifer for the star)
    -magnitude (or brightness of star)
    -names of some stars. A star may have several names.
    Step 3
    Vary the size of the circles to reflect their magnitude. Since brighter stars have smaller magnitude values, you will need to calculate the circle radius, say, 10/(magnitude + 2).

    Step 4
    Read from all files in constellation folder, and plot them on top of the stars.
    Each file contains pairs of star names that make up lines in the constellation.


    I have already done Steps 1 - 3.
    I'm using files :
    -StarApp.java as my application class that has main() method
    -StarJFrame.java ,this class creates the window & defines its properties & behavior
    -StarJPanel.java ---> heres the code, for this class, below
    -Star.java -----> heres the code, for this class, below

    Java Code:
     [B]StarJPanel.java[/B]
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.Scanner;
    
    public class StarJPanel extends JPanel implements ActionListener {
    
    	private Star[] stars;
    	private Timer timer;
    
    	public StarJPanel() {
    
    		setBackground(Color.black);
    		timer = new Timer(5, this);
    
    		stars = getArrayOfStars();
    
    		timer.start();
    	}
    
    	private Star[] getArrayOfStars() {
    
    		// This method reads the Stars data from a file and stores it in the stars array.
    
    		int howMany = Integer.parseInt(Keyboard.readInput());
    		Star[] stars = new Star[howMany];
    
    		for (int i = 0; i < stars.length; i++) {
    			String input = Keyboard.readInput();
    			Scanner fields = new Scanner(input);
    			double x = Double.parseDouble(fields.next());
    			double y = Double.parseDouble(fields.next());
    			int draper = Integer.parseInt(fields.next());
    			double magnitude = Double.parseDouble(fields.next());
    			String namesString = "";
    			String[] names = {};
    			if (fields.hasNext()) {
    				namesString = fields.nextLine();
    				names = namesString.trim().split("; ");
    			}
    			stars[i] = new Star(x, y, draper, magnitude, names);
    		}
    		return stars;
    	}
    
    	public void actionPerformed(ActionEvent e) {
    		repaint();
    	}
    
    	public void paintComponent(Graphics g) {
    		super.paintComponent(g);
    
    		for(int i = 0; i < stars.length; i++) {
    			stars[i].coordinateToPixel(stars[i].getX(), stars[i].getY());
    
    			stars[i].drawStar(g);
    		}
    	}
    }
    Java Code:
    [B]Star.java[/B] 
    import java.awt.*;
    import javax.swing.*;
    
    public class Star {
    
    	private double x, y;		// coordinates of star
    	private int draper;			// Henry Draper number (unique identifier)
    	private double magnitude;	// Magnitude (brightness) of star
    	private String[] names;		// Star name(s) - not always present
    	private int newX;
    	private int newY;
    	private int size;
    
    	public Star( double x, double y, int draper, double magnitude, String[] names ) {
    		this.x = x;
    		this.y = y;
    		this.draper = draper;
    		this.magnitude = magnitude;
    		this.names = names;
    
    		size = (int)(10/(magnitude + 2));
    	}
    	public void coordinateToPixel(double x, double y) {
    		newX = (int) ( (x + 1) * 350);
    		newY = (int) ( (y - 1) * -350);
    	}
    	public void drawStar(Graphics g) {
    		g.setColor(Color.white);
    		g.drawOval( newX, newY, size, size);
    	}
    	public int getNumberOfNames() {
    		return names.length;
    	}
    	public double getX() {
    		return x;
    	}
    	public double getY() {
    		return y;
    	}
    }
    As you can see I have done:
    Step 1: in Star class, with method: coordinateToPixel(double x, double y)
    Step 2: in StarJPanel class with method: private Star[] getArrayOfStars()
    (PS: I'm also using Keyboard class to read lines from the stars.txtfile)
    Step 3: in Star class, with method: drawStar(Graphics g), where size = (int)(10/(magnitude + 2));

    Please tell me if I have done 3 steps without confusing & incoherent code, I guess I have written the code differently from what ppl write. Somehow thats how we were taught to write. For me, my way gets a bit confusing sometimes!!

    Now I'm left stuck with Step 4.
    I have a folder where all my StarApp, StarJPanel, etc files are & a folder called Constellation
    Inside constellation folder I have files that contain pairs of star names that make up lines in the constellation.
    --Heres the constellation folder & star-data.txt file:
    Constellations & star-data.rar


    Although I'm thinkin i can use below code to read contents in files & use g.drawLine somewhere in StarJPanel. But I'm not sure how to find same names of stars in constellation files with names in the already set array from star-data & then join the coordinates with g.drawLine ???

    Java Code:
     
    import java.io.*;
    
    public class reader {
    	public static void main(String args[]) throws Exception {
    		FileReader fr = new FileReader("Constellation/....");         /** Don't know what to put in ....... **/
    		BufferedReader br = new BufferedReader(fr);
    		String s;
    
    		while((s = br.readLine()) != null) {
    			System.out.println(s);
    
    		}
    
    		fr.close();
    	}
    }

    Not sure how Step 4 is done please guide me. :)
    Last edited by 123; 02-10-2010 at 09:37 AM.

  4. #4
    123
    123 is offline Member
    Join Date
    Feb 2010
    Posts
    5
    Rep Power
    0

    Default

    By the way, I'm using textpad as my editor & complier.
    So I have to go: Tools > Run in parameters i put: StarApp < star-data.txt inorder to load the Stars onto the screen.

    Please help me with this, I have already shown everything I have done & what I'm thinkin about for step 4.

Similar Threads

  1. Is there a way to read a file directory
    By willemjav in forum Java Applets
    Replies: 3
    Last Post: 09-05-2011, 02:01 AM
  2. How to. Files and Directory
    By ocean in forum New To Java
    Replies: 4
    Last Post: 12-06-2009, 07:23 PM
  3. opening directory (folder) to reveal contents.
    By solris in forum New To Java
    Replies: 6
    Last Post: 06-28-2009, 07:40 PM
  4. Read contents of CD/DVD
    By ankitmcgill in forum New To Java
    Replies: 4
    Last Post: 05-16-2009, 04:38 AM
  5. Replies: 2
    Last Post: 05-11-2009, 11:07 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •