package com.billkuker.rocketry.motorsim.io;\r
\r
-import java.io.File;\r
-import java.io.FileOutputStream;\r
import java.io.OutputStream;\r
import java.io.PrintWriter;\r
import java.lang.reflect.InvocationTargetException;\r
import com.billkuker.rocketry.motorsim.Burn;\r
import com.billkuker.rocketry.motorsim.BurnSummary;\r
import com.billkuker.rocketry.motorsim.GraphSimplifier;\r
-import com.billkuker.rocketry.motorsim.Motor;\r
import com.billkuker.rocketry.motorsim.RocketScience;\r
-import com.billkuker.rocketry.motorsim.motors.kuker.PVC9;\r
\r
public class HTMLExporter {\r
+ static final int WIDTH=400;\r
+ static final int HEIGHT=200;\r
\r
@SuppressWarnings("deprecation")\r
private static String encode(String s) {\r
sb.append("<img src='");\r
sb.append("http://chart.apis.google.com/chart?chxt=x,x,y,y"\r
+ (y2 ? ",r,r" : "") + (x2 ? ",t,t" : "")\r
- + "&chs=640x240&cht=lxy&chco=3072F3");\r
+ + "&chs="+WIDTH+"x"+HEIGHT+"&cht=lxy&chco=3072F3");\r
sb.append("&chds=" + nf.format(xMin) + "," + nf.format(xMax) + ","\r
+ nf.format(yMin) + "," + nf.format(yMax));\r
sb.append("&chxr=" + "0," + nf.format(xMin) + "," + nf.format(xMax)\r
sb.append("|5,50");\r
if (x2)\r
sb.append("|7,50");\r
- sb.append("&chtt=" + title);\r
- sb.append("' width='640' height='240' alt='" + title + "' />");\r
+ if ( title != null )\r
+ sb.append("&chtt=" + title);\r
+ sb.append("' width='"+WIDTH+"' height='"+HEIGHT+"' alt='" + title + "' />");\r
\r
return sb.toString();\r
}\r
BurnSummary bs = new BurnSummary(b);\r
\r
out.println("<!--Begin motor " + b.getMotor().getName() + " HTML export from MotorSim-->");\r
- out.print("<table class='motor'>");\r
+ out.print("<table class='motor' style='text-align: left; border: 1px solid black'>");\r
\r
out.print("<tr>");\r
out.print("<th colspan='6' class='title'>" + b.getMotor().getName() + "</th>");\r
out.print("</tr>");\r
\r
out.print("<tr class='summary'>");\r
+\r
out.print("<th>Rating:</th>");\r
- \r
out.print("<td>" + bs.getRating() + "</td>");\r
+ \r
+ \r
+ out.print("<th>Max Pressure:</th>");\r
+ out.print("<td>"\r
+ + RocketScience.ammountToRoundedString(bs.maxPressure())\r
+ + "</td>");\r
+\r
+ out.print("</tr>");\r
+ \r
+ \r
+ out.print("<tr class='summary'>");\r
+ \r
out.print("<th>Total Impulse:</th>");\r
- \r
out.print("<td>"\r
+ RocketScience.ammountToRoundedString(bs.totalImpulse())\r
+ "</td>");\r
+ \r
+ \r
out.print("<th>Specific Impulse:</th>");\r
out.print("<td>"\r
+ RocketScience.ammountToRoundedString(bs.specificImpulse())\r
+ "</td>");\r
out.print("</tr>");\r
\r
- \r
out.print("<tr class='summary'>");\r
- out.print("<th>Max Thrust:</th>");\r
- \r
\r
+ out.print("<th>Max Thrust:</th>");\r
out.print("<td>"\r
+ RocketScience.ammountToRoundedString(bs.maxThrust())\r
+ "</td>");\r
+ \r
+ out.print("<th>Volume Loading:</th>");\r
+ out.print("<td>"\r
+ + (int)(bs.getVolumeLoading()*100)\r
+ + "%</td>");\r
+ out.print("</tr>");\r
+ \r
+ out.print("<tr class='summary'>");\r
+ \r
out.print("<th>Average Thrust:</th>");\r
- \r
out.print("<td>"\r
+ RocketScience.ammountToRoundedString(bs.averageThrust())\r
+ "</td>");\r
- out.print("<th>Max Pressure:</th>");\r
+ out.print("<th>Fuel Mass:</th>");\r
out.print("<td>"\r
- + RocketScience.ammountToRoundedString(bs.maxPressure())\r
+ + RocketScience.ammountToRoundedString(bs.getPropellantMass())\r
+ "</td>");\r
+\r
out.print("</tr>");\r
+ \r
\r
out.print("<tr>");\r
- out.print("<td colspan='6' class='thrust'>");\r
+ out.print("<td colspan='4' class='thrust'>");\r
GraphSimplifier<Duration, Force> thrust = new GraphSimplifier<Duration, Force>(\r
b, "thrust", b.getData().keySet().iterator());\r
\r
out.print(toChart(SI.SECOND, SI.NEWTON, thrust, "value", thrust\r
- .getDomain().iterator(), "Thrust"));\r
+ .getDomain().iterator(), null));\r
out.print("</td>");\r
/*\r
out.print("<td colspan='3' class='pressure'>");\r
out.print("</td>");\r
*/\r
out.print("</tr>");\r
- \r
+ /*\r
out.print("<tr>");\r
out.print("<th colspan='3'>.ENG File</th>");\r
out.print("<th colspan='3'>MotorSim File</th>");\r
out.print("</textarea>");\r
out.print("</td>");\r
out.print("</tr>");\r
- \r
+ */\r
out.print("</table>");\r
\r
out.println("\n<!--End motor " + b.getMotor().getName() + "-->");\r
out.close();\r
}\r
\r
- public static void main(String args[]) throws Exception {\r
-\r
- Motor m = new PVC9();\r
- Burn b = new Burn(m);\r
-\r
- File f = new File("test.html");\r
- export(b, System.out);\r
- export(b, new FileOutputStream(f));\r
-\r
- /*\r
- * \r
- * EndBurner g = new EndBurner(); g.setLength(Amount.valueOf(70,\r
- * SI.MILLIMETER)); g.setoD(Amount.valueOf(30, SI.MILLIMETER));\r
- * g.setPuntDepth(Amount.valueOf(10, SI.MILLIMETER));\r
- * g.setPuntDiameter(Amount.valueOf(10, SI.MILLIMETER));\r
- * \r
- * Chart<Length, Area> c = new Chart<Length, Area>(SI.MILLIMETER,\r
- * SI.MILLIMETER.pow(2).asType(Area.class), g, "surfaceArea");\r
- * c.setDomain(c.new IntervalDomain(Amount.valueOf(0, SI.CENTIMETER), g\r
- * .webThickness()));\r
- * \r
- * GraphSimplifier<Length, Area> gs = new GraphSimplifier<Length,\r
- * Area>(g, "surfaceArea", c.new IntervalDomain(Amount.valueOf(0,\r
- * SI.CENTIMETER), g.webThickness()).iterator());\r
- * \r
- * System.out.print(toChart(SI.MILLIMETER,\r
- * SI.MILLIMETER.pow(2).asType(Area.class), gs, "value", gs\r
- * .getDomain().iterator(), "Area"));\r
- */\r
- }\r
-\r
}\r