Sponsors: Michael Fertik - Best JAVA Web hosting Company & 30% off


Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 02-10-2010, 06:58 AM
123 123 is offline
Member
 
Join Date: Feb 2010
Posts: 5
Rep Power: 0
123 is on a distinguished road
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 08:20 AM. Reason: Forgot to add stuff....heres the full post from my side!
Bookmark Post in Technorati
Reply With Quote
  #2 (permalink)  
Old 02-10-2010, 07:17 AM
Senior Member
 
Join Date: Mar 2009
Location: USA
Posts: 124
Rep Power: 0
Aseem is on a distinguished road
Default
so what exactly the problem is?
You can read the file using FileInputStream.
But again, what exactly is the problem?
Bookmark Post in Technorati
Reply With Quote
  #3 (permalink)  
Old 02-10-2010, 08:20 AM
123 123 is offline
Member
 
Join Date: Feb 2010
Posts: 5
Rep Power: 0
123 is on a distinguished road
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.
Quote:
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

Code:
 StarJPanel.java
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);
		}
	}
}
Code:
Star.java 
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 ???

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 08:37 AM.
Bookmark Post in Technorati
Reply With Quote
  #4 (permalink)  
Old 02-10-2010, 07:22 PM
123 123 is offline
Member
 
Join Date: Feb 2010
Posts: 5
Rep Power: 0
123 is on a distinguished road
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.
Bookmark Post in Technorati
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[SOLVED] How to. Files and Directory ocean New To Java 4 12-06-2009 06:23 PM
[SOLVED] opening directory (folder) to reveal contents. solris New To Java 6 06-28-2009 06:40 PM
Read contents of CD/DVD ankitmcgill New To Java 4 05-16-2009 03:38 AM
Read file from directory, update contents of the each file svpriyan New To Java 2 05-11-2009 10:07 AM
Is there a way to read a file directory willemjav Java Applets 2 04-17-2008 04:54 PM


Java Forums is supported by the best jsp hosting.

All times are GMT +2. The time now is 09:20 PM.



VBulletin, Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2009, Crawlability, Inc.
Copyright ©2006 - 2007, www.java-forums.org