/*PS: This topic has something to do with
Java graphics as well*/
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-starmap/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.
---->visualised as diagram:
coord systems
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
StarJPanel.java:-
Star.java:-
As you can see I have done:
Step 1: in
Star class, with method:
coordinateToPixel(double x, double y), where I'm using 350 as scaling factor since i have set 700 as width & height of JFrame.
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));
My output is similar to the final output:
http://nifty.stanford.edu/2009/reid-starmap/starchart.jpg .
Exept mine doesn't have the lines joing various dots. I guess thats what Step 4 does & I'm not sure how to make step 4 work!
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 JPanel.
I have a folder where all my StarApp, StarJPanel, etc files are & a folder called
Constellation
Inside constellation folder I have files which contain, pairs of star names that make up lines in the constellation.
**PS:----Heres the constellation folder & star-data.txt file:
http://www.mediafire.com/file/z2nze3qmnnw/Constellations & star-data.rar**
For step 4, I'm thinkin i can add a: read method (below code) to read contents in files from Cons. folder &
g.drawLine somewhere in
StarJPanel. I'm not sure on 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 ???
Not sure how Step 4 is done please guide me.
Also. Please tell me if I have done all the 3 steps without confusing & incoherent code, I guess my way of writing the code is different from other peoples way.
The way I was taught java is confusing for me sometimes!!