mirror of
https://github.com/nasa/trick.git
synced 2025-01-30 08:03:51 +00:00
Fixed gitignore rules, added SatDisplay.java, and uncapitalized SIM_sun graphics directory. Ref #419
This commit is contained in:
parent
4d1c3eae4f
commit
9f7ab75a6b
4
trick_sims/.gitignore
vendored
4
trick_sims/.gitignore
vendored
@ -21,6 +21,8 @@ S_sie.resource
|
||||
S_source.cpp
|
||||
S_source.hh
|
||||
T_main_*
|
||||
trick
|
||||
**/SIM_*/trick
|
||||
**/graphics/dist/
|
||||
**/graphics/manifest
|
||||
jitlib
|
||||
build
|
||||
|
206
trick_sims/SIM_sat2d/models/graphics/src/trick/SatDisplay.java
Normal file
206
trick_sims/SIM_sat2d/models/graphics/src/trick/SatDisplay.java
Normal file
@ -0,0 +1,206 @@
|
||||
/*
|
||||
* Trick
|
||||
* 2016 (c) National Aeronautics and Space Administration (NASA)
|
||||
*/
|
||||
|
||||
package trick;
|
||||
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Image;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.image.AffineTransformOp;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.FileReader;
|
||||
import java.net.Socket;
|
||||
import java.util.*;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import java.awt.Color;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author penn
|
||||
*/
|
||||
|
||||
class SkyView extends JPanel {
|
||||
|
||||
private double scale; // Pixels per meter
|
||||
private Color skyColor;
|
||||
private Color planetColor;
|
||||
private Color satelliteColor;
|
||||
private int planetRadius;
|
||||
private double[] satellitePos;
|
||||
|
||||
// Origin of world coordinates in jpanel coordinates.
|
||||
private int worldOriginX;
|
||||
private int worldOriginY;
|
||||
|
||||
public SkyView( double mapScale ) {
|
||||
scale = mapScale;
|
||||
setScale(mapScale);
|
||||
skyColor = Color.BLACK;
|
||||
planetColor = new Color(100,200,200);
|
||||
satelliteColor = new Color(255,0,0);
|
||||
planetRadius = 6378000;
|
||||
satellitePos = new double[] {0.0, planetRadius + 200000};
|
||||
}
|
||||
|
||||
public void setSatPos (double x, double y) {
|
||||
satellitePos[0] = x;
|
||||
satellitePos[1] = y;
|
||||
}
|
||||
|
||||
public void setScale (double mapScale) {
|
||||
if (mapScale < 0.00005) {
|
||||
scale = 0.00005;
|
||||
} else {
|
||||
scale = mapScale;
|
||||
}
|
||||
}
|
||||
|
||||
public void drawCenteredCircle(Graphics2D g, int x, int y, int r) {
|
||||
x = x-(r/2);
|
||||
y = y-(r/2);
|
||||
g.fillOval(x,y,r,r);
|
||||
}
|
||||
|
||||
private void doDrawing(Graphics g) {
|
||||
Graphics2D g2d = (Graphics2D) g;
|
||||
|
||||
int width = getWidth();
|
||||
int height = getHeight();
|
||||
|
||||
worldOriginX = (width/2);
|
||||
worldOriginY = (height/2);
|
||||
|
||||
g2d.setPaint(Color.BLACK);
|
||||
g2d.fillRect(0, 0, width, height);
|
||||
|
||||
// Draw Planet
|
||||
g2d.setPaint(planetColor);
|
||||
drawCenteredCircle(g2d, worldOriginX, worldOriginY, (int)(scale * 2 * planetRadius));
|
||||
|
||||
// Draw Satellite
|
||||
g2d.setPaint(satelliteColor);
|
||||
int sx = (int)(worldOriginX + scale * satellitePos[0]);
|
||||
int sy = (int)(worldOriginY - scale * satellitePos[1]);
|
||||
drawCenteredCircle(g2d, sx, sy, (int)(10));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
doDrawing(g);
|
||||
}
|
||||
}
|
||||
|
||||
public class SatDisplay extends JFrame {
|
||||
|
||||
private SkyView skyView;
|
||||
private BufferedReader in;
|
||||
private DataOutputStream out;
|
||||
|
||||
public SatDisplay(SkyView sky) {
|
||||
skyView = sky;
|
||||
add( skyView);
|
||||
setTitle("Orbit Display");
|
||||
setSize(800, 800);
|
||||
setLocationRelativeTo(null);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
}
|
||||
|
||||
public void connectToServer(String host, int port ) throws IOException {
|
||||
Socket socket = new Socket(host, port);
|
||||
in = new BufferedReader( new InputStreamReader( socket.getInputStream()));
|
||||
out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
|
||||
}
|
||||
|
||||
public void drawSkyView() {
|
||||
skyView.repaint();
|
||||
}
|
||||
|
||||
private static void printHelpText() {
|
||||
System.out.println(
|
||||
"----------------------------------------------------------------------\n"
|
||||
+ "usage: java jar SatDisplay.jar <port-number>\n"
|
||||
+ "----------------------------------------------------------------------\n"
|
||||
);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
|
||||
String host = "localHost";
|
||||
int port = 0;
|
||||
String vehicleImageFile = null;
|
||||
|
||||
int ii = 0;
|
||||
while (ii < args.length) {
|
||||
switch (args[ii]) {
|
||||
case "-help" :
|
||||
case "--help" : {
|
||||
printHelpText();
|
||||
System.exit(0);
|
||||
} break;
|
||||
default : {
|
||||
port = (Integer.parseInt(args[ii]));
|
||||
} break;
|
||||
}
|
||||
++ii;
|
||||
}
|
||||
|
||||
if (port == 0) {
|
||||
System.out.println("No variable server port specified.");
|
||||
printHelpText();
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
double mapScale = 0.00005; // 20,000 meters per pixel
|
||||
SkyView skyview = new SkyView( mapScale);
|
||||
SatDisplay sd = new SatDisplay(skyview);
|
||||
sd.setVisible(true);
|
||||
double satX = 0.0;
|
||||
double satY = 0.0;
|
||||
|
||||
System.out.println("Connecting to: " + host + ":" + port);
|
||||
sd.connectToServer(host, port);
|
||||
|
||||
sd.out.writeBytes("trick.var_set_client_tag(\"SatDisplay\") \n");
|
||||
sd.out.flush();
|
||||
|
||||
sd.out.writeBytes("trick.var_add(\"dyn.satellite.pos[0]\") \n" +
|
||||
"trick.var_add(\"dyn.satellite.pos[1]\") \n" );
|
||||
sd.out.flush();
|
||||
|
||||
sd.out.writeBytes("trick.var_ascii() \n" +
|
||||
"trick.var_cycle(0.1) \n" +
|
||||
"trick.var_send() \n" );
|
||||
sd.out.flush();
|
||||
|
||||
Boolean go = true;
|
||||
|
||||
while (go) {
|
||||
String field[];
|
||||
try {
|
||||
String line;
|
||||
line = sd.in.readLine();
|
||||
field = line.split("\t");
|
||||
satX = Double.parseDouble( field[1] );
|
||||
satY = Double.parseDouble( field[2] );
|
||||
|
||||
// Set the Satellite position
|
||||
skyview.setSatPos(satX, satY);
|
||||
|
||||
} catch (IOException | NullPointerException e ) {
|
||||
go = false;
|
||||
}
|
||||
sd.drawSkyView();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user