1
0
mirror of https://github.com/christiaangoossens/Planetary-Orbit-Simulator synced 2024-11-22 03:04:10 +00:00

October 2016 Revision

This commit is contained in:
Christiaan Goossens 2016-11-01 15:51:06 +01:00
parent 8926fbae33
commit 50dba493ff
22 changed files with 695 additions and 285 deletions

View File

@ -7,15 +7,24 @@
</component>
<component name="ChangeListManager">
<list default="true" id="17f368cb-44f8-4101-9a29-49a0f4ff1f92" name="Default" comment="Update workspace">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AOP.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/ObjectProcessor.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/ProcessingException.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/Processor.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/out/artifacts/simulator_jar/simulator.jar" afterPath="$PROJECT_DIR$/out/artifacts/simulator_jar/simulator.jar" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/Main.class" afterPath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/Main.class" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/Object.class" afterPath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/Object.class" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/Simulator.class" afterPath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/Simulator.class" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/SimulatorConfig.class" afterPath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/SimulatorConfig.class" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/dataWriter/DataWriter.class" afterPath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/dataWriter/DataWriter.class" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/mathUtils/AU.class" afterPath="$PROJECT_DIR$/out/production/simulator/com/verictas/pos/simulator/mathUtils/AU.class" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/out/artifacts/simulator_jar/run.bat" afterPath="$PROJECT_DIR$/out/artifacts/simulator_jar/run.bat" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/com/verictas/pos/simulator/Main.java" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/Main.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/com/verictas/pos/simulator/Object.java" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/Object.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/com/verictas/pos/simulator/Simulator.java" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/Simulator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/com/verictas/pos/simulator/SimulatorConfig.java" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/SimulatorConfig.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/DataWriter.java" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/DataWriter.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AU.java" afterPath="$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AU.java" />
</list>
<ignored path="simulator.iws" />
<ignored path=".idea/workspace.xml" />
@ -36,7 +45,70 @@
<favorites_list name="simulator" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="SimulatorConfig.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/SimulatorConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="272">
<caret line="16" column="0" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ObjectProcessor.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/ObjectProcessor.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-105">
<caret line="78" column="41" selection-start-line="78" selection-start-column="41" selection-end-line="78" selection-end-column="41" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#processAphelionAndPerihelion#0;class#ObjectProcessor#0" expanded="false" />
<element signature="method#processRoundCheck#0;class#ObjectProcessor#0" expanded="false" />
<element signature="method#reset#0;class#ObjectProcessor#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Main.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="731">
<caret line="45" column="37" selection-start-line="45" selection-start-column="37" selection-end-line="45" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Processor.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/Processor.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1972">
<caret line="123" column="13" selection-start-line="123" selection-start-column="13" selection-end-line="123" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#objectArrayToHashMap#0;class#Processor#0" expanded="false" />
<element signature="method#close#0;class#Processor#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DataWriter.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/DataWriter.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2006">
<caret line="145" column="35" selection-start-line="145" selection-start-column="35" selection-end-line="145" selection-end-column="35" />
<folding>
<element signature="method#write#0;class#DataWriter#0" expanded="false" />
<element signature="method#save#0;class#DataWriter#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
@ -72,17 +144,22 @@
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/WritingException.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/DataWriter.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/WritingException.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AU.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/DataWriter.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/Processor.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/ProcessingException.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/Object.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/SimulatorConfig.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/Main.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/Simulator.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AU.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AOP.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/DataWriter.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/ObjectProcessor.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/Main.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/Processor.java" />
<option value="$PROJECT_DIR$/src/com/verictas/pos/simulator/SimulatorConfig.java" />
</list>
</option>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="-1928" />
<option name="x" value="-8" />
<option name="y" value="-8" />
<option name="width" value="1936" />
<option name="height" value="1056" />
@ -128,9 +205,6 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="PackagesPane" />
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<PATH>
@ -181,6 +255,28 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="simulator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="simulator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="simulator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="processor" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="simulator" />
@ -205,6 +301,9 @@
</PATH>
</subPane>
</pane>
<pane id="Scratches" />
<pane id="Scope" />
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
@ -222,13 +321,14 @@
</component>
<component name="RunManager" selected="Application.Main">
<configuration default="false" name="Main" type="Application" factoryName="Application" temporary="true">
<output_file path="$USER_HOME$/simulatorExports/console.txt" is_save="true" />
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.verictas.pos.simulator.Main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
@ -506,18 +606,16 @@
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-1928" y="-8" width="1936" height="1056" extended-state="6" />
<editor active="false" />
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.2653277" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3245243" sideWeight="0.415625" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3012685" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
@ -526,14 +624,16 @@
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39852008" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39852008" sideWeight="0.49791667" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.2653277" sideWeight="0.49791667" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Documentation" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="FLOATING" visible="false" show_stripe_button="true" weight="0.48125" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" x="1312" y="663" width="586" height="345" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3245243" sideWeight="0.584375" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32980973" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="Vcs.Log.UiProperties">
@ -553,7 +653,7 @@
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="8" />
<option name="time" value="31" />
</breakpoint-manager>
<watches-manager />
</component>
@ -562,80 +662,11 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Simulator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2156">
<caret line="99" column="0" selection-start-line="99" selection-start-column="0" selection-end-line="99" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="770">
<caret line="35" column="54" selection-start-line="35" selection-start-column="54" selection-end-line="35" selection-end-column="54" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Simulator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="66">
<caret line="4" column="24" selection-start-line="4" selection-start-column="24" selection-end-line="4" selection-end-column="24" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/SimulatorConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="88">
<caret line="4" column="24" selection-start-line="4" selection-start-column="24" selection-end-line="4" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Object.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#getSpeed#0;class#Object#0" expanded="false" />
<element signature="method#getPosition#0;class#Object#0" expanded="false" />
<element signature="method#setAcceleration#1;class#Object#0" expanded="false" />
<element signature="method#getAcceleration#0;class#Object#0" expanded="false" />
<element signature="method#setOldAcceleration#1;class#Object#0" expanded="false" />
<element signature="method#getOldAcceleration#0;class#Object#0" expanded="false" />
<element signature="method#toString#0;class#Object#0" expanded="false" />
<element signature="method#getForceOnObject#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#0;class#Object#0" expanded="false" />
<element signature="method#updatePosition#0;class#Object#0" expanded="false" />
<element signature="method#updateSpeed#0;class#Object#0" expanded="false" />
<element signature="method#enactForceOnObject#0;class#Object#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/nBabel.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="88">
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/nBabel.java" />
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/Vector3dMatrix.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2442">
<caret line="116" column="5" selection-start-line="116" selection-start-column="5" selection-end-line="116" selection-end-column="5" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -643,9 +674,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -655,6 +683,7 @@
<caret line="4" column="24" selection-start-line="4" selection-start-column="24" selection-end-line="4" selection-end-column="24" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#accelerate#0;class#Simulator#0" expanded="false" />
</folding>
</state>
</provider>
@ -663,9 +692,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="836">
<caret line="38" column="23" selection-start-line="38" selection-start-column="23" selection-end-line="38" selection-end-column="23" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -675,6 +701,7 @@
<caret line="55" column="39" selection-start-line="55" selection-start-column="39" selection-end-line="55" selection-end-column="39" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#accelerate#0;class#Simulator#0" expanded="false" />
</folding>
</state>
</provider>
@ -693,7 +720,7 @@
<element signature="method#getOldAcceleration#0;class#Object#0" expanded="false" />
<element signature="method#toString#0;class#Object#0" expanded="false" />
<element signature="method#getForceOnObject#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#1;class#Object#0" expanded="false" />
<element signature="method#updatePosition#0;class#Object#0" expanded="false" />
<element signature="method#updateSpeed#0;class#Object#0" expanded="false" />
<element signature="method#enactForceOnObject#0;class#Object#0" expanded="false" />
@ -705,9 +732,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -715,9 +739,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -727,6 +748,7 @@
<caret line="55" column="39" selection-start-line="55" selection-start-column="39" selection-end-line="55" selection-end-column="39" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#accelerate#0;class#Simulator#0" expanded="false" />
</folding>
</state>
</provider>
@ -745,7 +767,7 @@
<element signature="method#getOldAcceleration#0;class#Object#0" expanded="false" />
<element signature="method#toString#0;class#Object#0" expanded="false" />
<element signature="method#getForceOnObject#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#1;class#Object#0" expanded="false" />
<element signature="method#updatePosition#0;class#Object#0" expanded="false" />
<element signature="method#updateSpeed#0;class#Object#0" expanded="false" />
<element signature="method#enactForceOnObject#0;class#Object#0" expanded="false" />
@ -757,9 +779,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="88">
<caret line="5" column="45" selection-start-line="5" selection-start-column="45" selection-end-line="5" selection-end-column="45" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -767,9 +786,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -779,6 +795,7 @@
<caret line="55" column="39" selection-start-line="55" selection-start-column="39" selection-end-line="55" selection-end-column="39" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#accelerate#0;class#Simulator#0" expanded="false" />
</folding>
</state>
</provider>
@ -797,7 +814,7 @@
<element signature="method#getOldAcceleration#0;class#Object#0" expanded="false" />
<element signature="method#toString#0;class#Object#0" expanded="false" />
<element signature="method#getForceOnObject#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#1;class#Object#0" expanded="false" />
<element signature="method#updatePosition#0;class#Object#0" expanded="false" />
<element signature="method#updateSpeed#0;class#Object#0" expanded="false" />
<element signature="method#enactForceOnObject#0;class#Object#0" expanded="false" />
@ -809,9 +826,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="88">
<caret line="5" column="45" selection-start-line="5" selection-start-column="45" selection-end-line="5" selection-end-column="45" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -819,9 +833,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="19" column="0" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -831,6 +842,7 @@
<caret line="35" column="30" selection-start-line="35" selection-start-column="30" selection-end-line="35" selection-end-column="30" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#accelerate#0;class#Simulator#0" expanded="false" />
</folding>
</state>
</provider>
@ -849,7 +861,7 @@
<element signature="method#getOldAcceleration#0;class#Object#0" expanded="false" />
<element signature="method#toString#0;class#Object#0" expanded="false" />
<element signature="method#getForceOnObject#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#1;class#Object#0" expanded="false" />
<element signature="method#updatePosition#0;class#Object#0" expanded="false" />
<element signature="method#updateSpeed#0;class#Object#0" expanded="false" />
<element signature="method#enactForceOnObject#0;class#Object#0" expanded="false" />
@ -861,9 +873,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1173">
<caret line="74" column="46" selection-start-line="74" selection-start-column="46" selection-end-line="74" selection-end-column="46" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -871,9 +880,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
<caret line="12" column="33" selection-start-line="12" selection-start-column="33" selection-end-line="12" selection-end-column="33" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -891,7 +897,7 @@
<element signature="method#getOldAcceleration#0;class#Object#0" expanded="false" />
<element signature="method#toString#0;class#Object#0" expanded="false" />
<element signature="method#getForceOnObject#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#1;class#Object#0" expanded="false" />
<element signature="method#updatePosition#0;class#Object#0" expanded="false" />
<element signature="method#updateSpeed#0;class#Object#0" expanded="false" />
<element signature="method#enactForceOnObject#0;class#Object#0" expanded="false" />
@ -904,9 +910,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -926,50 +929,19 @@
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/nBable.java" />
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/nBabel.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="88">
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/nBabel.java" />
<entry file="jar://C:/Program Files/Java/jdk1.8.0_91/src.zip!/java/lang/Object.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="697">
<caret line="234" column="18" selection-start-line="234" selection-start-column="18" selection-end-line="234" selection-end-column="18" />
<folding>
<element signature="e#10065#10066#0" expanded="false" />
<element signature="e#10148#10149#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Test.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="153">
<caret line="9" column="47" selection-start-line="9" selection-start-column="47" selection-end-line="9" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Test.java" />
<entry file="jar://C:/Program Files/Java/jdk1.8.0_91/src.zip!/java/lang/Exception.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="238">
<caret line="44" column="13" selection-start-line="44" selection-start-column="13" selection-end-line="44" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AU.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="578">
<caret line="56" column="7" selection-start-line="56" selection-start-column="7" selection-end-line="56" selection-end-column="7" />
<folding>
<element signature="method#convertToMeter#0;class#AU#0" expanded="false" />
<element signature="method#convertToMetersPerSecond#0;class#AU#0" expanded="false" />
<element signature="method#convertFromMeter#0;class#AU#0" expanded="false" />
<element signature="method#convertFromMetersPerSecond#0;class#AU#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -977,42 +949,41 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1887">
<caret line="116" column="5" selection-start-line="116" selection-start-column="5" selection-end-line="116" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/WritingException.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="6" column="62" selection-start-line="6" selection-start-column="62" selection-end-line="6" selection-end-column="62" />
<folding />
<state relative-caret-position="34">
<caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="7" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/SimulatorConfig.java">
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/ProcessingException.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="119">
<caret line="7" column="1" selection-start-line="7" selection-start-column="1" selection-end-line="7" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AU.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-116">
<caret line="7" column="7" selection-start-line="7" selection-start-column="7" selection-end-line="7" selection-end-column="7" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/mathUtils/AOP.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="170">
<caret line="10" column="0" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/DataWriter.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="361">
<caret line="99" column="0" selection-start-line="99" selection-start-column="0" selection-end-line="99" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#write#0;class#DataWriter#0" expanded="false" />
<element signature="method#save#0;class#DataWriter#0" expanded="false" />
</folding>
<caret line="10" column="47" selection-start-line="10" selection-start-column="47" selection-end-line="10" selection-end-column="47" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Object.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="352">
<caret line="24" column="49" selection-start-line="24" selection-start-column="46" selection-end-line="24" selection-end-column="49" />
<state relative-caret-position="71">
<caret line="146" column="7" selection-start-line="146" selection-start-column="7" selection-end-line="146" selection-end-column="7" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#getSpeed#0;class#Object#0" expanded="false" />
@ -1023,7 +994,7 @@
<element signature="method#getOldAcceleration#0;class#Object#0" expanded="false" />
<element signature="method#toString#0;class#Object#0" expanded="false" />
<element signature="method#getForceOnObject#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#0;class#Object#0" expanded="false" />
<element signature="method#getDistance#1;class#Object#0" expanded="false" />
<element signature="method#updatePosition#0;class#Object#0" expanded="false" />
<element signature="method#updateSpeed#0;class#Object#0" expanded="false" />
<element signature="method#enactForceOnObject#0;class#Object#0" expanded="false" />
@ -1031,22 +1002,72 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Main.java">
<entry file="jar://$PROJECT_DIR$/vecmath-1.5.2.jar!/javax/vecmath/Tuple3d.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="279">
<caret line="35" column="0" selection-start-line="35" selection-start-column="0" selection-end-line="35" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
<state relative-caret-position="205">
<caret line="31" column="0" selection-start-line="31" selection-start-column="0" selection-end-line="31" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Simulator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1598">
<caret line="94" column="82" selection-start-line="94" selection-start-column="82" selection-end-line="94" selection-end-column="82" />
<state relative-caret-position="527">
<caret line="45" column="20" selection-start-line="45" selection-start-column="20" selection-end-line="45" selection-end-column="21" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#accelerate#0;class#Simulator#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/dataWriter/DataWriter.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2006">
<caret line="145" column="35" selection-start-line="145" selection-start-column="35" selection-end-line="145" selection-end-column="35" />
<folding>
<element signature="method#write#0;class#DataWriter#0" expanded="false" />
<element signature="method#save#0;class#DataWriter#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="731">
<caret line="45" column="37" selection-start-line="45" selection-start-column="37" selection-end-line="45" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/Processor.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1972">
<caret line="123" column="13" selection-start-line="123" selection-start-column="13" selection-end-line="123" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#objectArrayToHashMap#0;class#Processor#0" expanded="false" />
<element signature="method#close#0;class#Processor#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/SimulatorConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="272">
<caret line="16" column="0" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/verictas/pos/simulator/processor/ObjectProcessor.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-105">
<caret line="78" column="41" selection-start-line="78" selection-start-column="41" selection-end-line="78" selection-end-column="41" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#processAphelionAndPerihelion#0;class#ObjectProcessor#0" expanded="false" />
<element signature="method#processRoundCheck#0;class#ObjectProcessor#0" expanded="false" />
<element signature="method#reset#0;class#ObjectProcessor#0" expanded="false" />
</folding>
</state>
</provider>

View File

@ -1,2 +1,2 @@
java -jar simulator.jar
java -jar simulator.jar > log.txt
pause

View File

@ -23,12 +23,21 @@ public class Main {
/**
* Object definitions
*/
Object sun = new Object("Sun", 1.988544E30, AU.convertToMeter(new Vector3d(3.621484938699030E-03,3.203347049968909E-03,-1.609087138389905E-04)), AU.convertToMetersPerSecond(new Vector3d(-1.730306264794065E-06,6.909301960615850E-06,3.332250766613383E-08)));
/**
* Definitions for the ecliptic plane
*/
//Object sun = new Object("Sun", 1.988544E30, AU.convertToMeter(new Vector3d(3.621484938699030E-03,3.203347049968909E-03,-1.609087138389905E-04)), AU.convertToMetersPerSecond(new Vector3d(-1.730306264794065E-06,6.909301960615850E-06,3.332250766613383E-08)));
//Object venus = new Object("Venus", 48.685E23, AU.convertToMeter(new Vector3d(-3.786926829662159E-01,-6.122709221027441E-01,1.346180701578967E-02)), AU.convertToMetersPerSecond(new Vector3d(1.703979708314098E-02,-1.075790617185284E-02,-1.130972411646143E-03)));
Object earth = new Object("Earth", 5.97219E24, AU.convertToMeter(new Vector3d(1.000272608326749E+00,-1.305632418724720E-01,-1.614384880329670E-04)), AU.convertToMetersPerSecond(new Vector3d(2.003180730888720E-03,1.698793770993201E-02,5.869001824818362E-08)));
// Object mars = new Object("Mars", 6.4185E23, AU.convertToMeter(new Vector3d(8.638055532014732E-01,-1.094520306989018E+00,-4.427515002554464E-02)), AU.convertToMetersPerSecond(new Vector3d(1.154235320339802E-02,9.839355267552327E-03,-7.723750026136471E-05)));
// Object jupiter = new Object("Jupiter", 1898.13E24, AU.convertToMeter(new Vector3d(-5.440309619306835E+00,-2.383659935837559E-01,1.226571001615609E-01)), AU.convertToMetersPerSecond(new Vector3d(2.422143907277735E-04,-7.182284468246539E-03,2.440789748210396E-05)));
Object moon = new Object("The Moon", 734.9E20, AU.convertToMeter(new Vector3d(1.002390058141768E+00,-1.318677081380600E-01,-1.051759034600983E-04)), AU.convertToMetersPerSecond(new Vector3d(2.294349896503608E-03,1.752303034437222E-02,-5.522655228080146E-05)));
//Object earth = new Object("Earth", 5.97219E24, AU.convertToMeter(new Vector3d(1.000272608326749E+00,-1.305632418724720E-01,-1.614384880329670E-04)), AU.convertToMetersPerSecond(new Vector3d(2.003180730888720E-03,1.698793770993201E-02,5.869001824818362E-08)));
//Object mars = new Object("Mars", 6.4185E23, AU.convertToMeter(new Vector3d(8.638055532014732E-01,-1.094520306989018E+00,-4.427515002554464E-02)), AU.convertToMetersPerSecond(new Vector3d(1.154235320339802E-02,9.839355267552327E-03,-7.723750026136471E-05)));
//Object jupiter = new Object("Jupiter", 1898.13E24, AU.convertToMeter(new Vector3d(-5.440309619306835E+00,-2.383659935837559E-01,1.226571001615609E-01)), AU.convertToMetersPerSecond(new Vector3d(2.422143907277735E-04,-7.182284468246539E-03,2.440789748210396E-05)));
//Object moon = new Object("The Moon", 734.9E20, AU.convertToMeter(new Vector3d(1.002390058141768E+00,-1.318677081380600E-01,-1.051759034600983E-04)), AU.convertToMetersPerSecond(new Vector3d(2.294349896503608E-03,1.752303034437222E-02,-5.522655228080146E-05)));
// 1 januari startdag
Object sun = new Object("Sun", 1.988544E30, AU.convertToMeter(new Vector3d(3.737881713150281E-03,1.402397586692506E-03,-1.612700291840256E-04)), AU.convertToMetersPerSecond(new Vector3d(8.619338996535534E-07,6.895607793642275E-06,-2.794074909231784E-08)));
Object earth = new Object("Earth", 5.97219E24, AU.convertToMeter(new Vector3d(-1.630229002588497E-01,9.704723344534316E-01,-1.955367328932975E-04)), AU.convertToMetersPerSecond(new Vector3d(-1.723383356491747E-02,-2.969134550063944E-03,-4.433758674928828E-07)));
Object moon = new Object("The Moon", 734.9E20, AU.convertToMeter(new Vector3d(-1.657103868749121E-01,9.706382026425473E-01,-1.879812512691582E-04)), AU.convertToMetersPerSecond(new Vector3d(-1.728100931961937E-02,-3.525371122447976E-03,4.909148618073602E-05)));
/**
* Object listing
@ -36,6 +45,7 @@ public class Main {
Object[] objects = {sun, earth, moon};
/**
* Run the simulator for the specified objects
*/

View File

@ -10,11 +10,6 @@ public class Object {
public Vector3d acceleration;
public Vector3d oldAcceleration;
public Vector3d aphelion;
public Vector3d perihelion;
public double aphelionDistance = 0;
public double perihelionDistance = 0;
public String name;
private double gravitationalConstant = 6.67384E-11;
@ -145,6 +140,17 @@ public class Object {
return distance;
}
/**
* Get the vector distance between the current position vector and a given position.
* @param position The position vector you want the distance to.
* @return Vector3d The distance vector
*/
public Vector3d getDistance(Vector3d position) {
Vector3d distance = new Vector3d(0,0,0); // Empty
distance.sub(this.position, position);
return distance;
}
/**
* Updates the position based on dt
* @param dt The difference in time
@ -202,38 +208,4 @@ public class Object {
acceleration.scale(factor);
this.acceleration = acceleration;
}
/**
* Processes the aphelion & perihelion
* @param sun
*/
public void processAphelionAndPerihelion(Object sun) {
double sunDistance = this.getDistance(sun).length();
/**
* Set the defaults
*/
if (this.aphelionDistance == 0) {
this.aphelionDistance = sunDistance;
}
if (this.perihelionDistance == 0) {
this.perihelionDistance = sunDistance;
}
/**
* Check if the aphelion or perihelion should be changed
*/
if (sunDistance > aphelionDistance) {
this.aphelion = position;
this.aphelionDistance = sunDistance;
}
if (sunDistance < perihelionDistance) {
this.perihelion = position;
this.perihelionDistance = sunDistance;
}
}
}

View File

@ -1,9 +1,10 @@
package com.verictas.pos.simulator;
import javax.vecmath.*;
import com.verictas.pos.simulator.dataWriter.DataWriter;
import com.verictas.pos.simulator.dataWriter.WritingException;
import com.verictas.pos.simulator.mathUtils.Vector3dMatrix;
import com.verictas.pos.simulator.processor.ProcessingException;
import com.verictas.pos.simulator.processor.Processor;
public class Simulator {
public static void run(Object[] objects) {
@ -28,18 +29,10 @@ public class Simulator {
/**
* Define the forces matrix and the DataWriter
*/
Vector3dMatrix matrix = new Vector3dMatrix(objects.length,objects.length);
Vector3dMatrix matrix = new Vector3dMatrix(objects.length, objects.length);
try {
DataWriter writer = new DataWriter();
/**
* Write begin values
*/
for(int i = 0; i < objects.length; i++) {
writer.write(objects[i], objects[0]);
}
Processor processor = new Processor(objects);
/**
* Start the leap frog integration!
@ -54,7 +47,8 @@ public class Simulator {
/**
* The round has started
*/
System.out.println("\nRound " + (t + 1) + " started!");
//System.out.println("\nRound " + (t + 1) + " started!");
System.out.println("Round " + (t + 1) + " started!");
for(int i = 0; i < objects.length; i++) {
objects[i].updatePosition(time);
@ -65,14 +59,12 @@ public class Simulator {
for(int i = 0; i < objects.length; i++) {
objects[i].updateSpeed(time);
writer.write(objects[i], objects[0]);
}
/**
* Do some processing to get the aphelion & perihelion
* Do the processing on the objects
*/
objects[i].processAphelionAndPerihelion(objects[0]);
}
processor.process(objects);
/**
* The round has ended
@ -82,23 +74,16 @@ public class Simulator {
/**
* Log that the simulation has finished and save info to file
*/
writer.save();
processor.close();
System.out.println("========== Simulation Finished ==========");
// TEST
System.out.println("\n\n============== Simulation data =============");
System.out.println("Position during aphelion: " + objects[1].aphelion);
System.out.println("Distance from the sun during aphelion in km: " + objects[1].aphelionDistance);
System.out.println("Position during perihelion: " + objects[1].perihelion);
System.out.println("Distance from the sun during perihelion in km: " + objects[1].perihelionDistance);
System.out.println("===========================================\n\n");
/**
* Display information about the program runtime
*/
long stopTime = System.currentTimeMillis();
System.out.println("Simulation took: " + (stopTime - startTime) + "ms");
} catch(ProcessingException e) {
e.printStackTrace();
} catch(WritingException e) {
e.printStackTrace();
}
@ -124,27 +109,27 @@ public class Simulator {
Vector3d force = objects[i].getForceOnObject(objects[o]);
matrix.setPosition(force, i, o);
System.out.println("Force " + (i + 1) + " on " + (o + 1) + " - " + force);
//System.out.println("Force " + (i + 1) + " on " + (o + 1) + " - " + force);
/**
* Also put in the opposite force
*/
force.scale(-1);
matrix.setPosition(force, o, i);
System.out.println("Force " + (o + 1) + " on " + (i + 1) + " - " + force);
//System.out.println("Force " + (o + 1) + " on " + (i + 1) + " - " + force);
}
}
System.out.println("\n");
System.out.println(matrix);
//System.out.println("\n");
//System.out.println(matrix);
for(int i = 0; i < objects.length; i++) {
/**
* Progress forces on the object
*/
Vector3d forceOnI = matrix.getColumnTotal(i);
System.out.println("All forces on " + (i + 1) + " - " + forceOnI);
//System.out.println("All forces on " + (i + 1) + " - " + forceOnI);
objects[i].enactForceOnObject(forceOnI);
}
}

View File

@ -1,10 +1,33 @@
package com.verictas.pos.simulator;
public class SimulatorConfig {
// The amount of rounds and the time step
public static int rounds = 525960;
public static double time = 60; // in seconds
/**
* Time settings
*/
// Set the skipLines integer to skip lines (for example: every 5th line is written) in the output file (for smaller files), if this is set to 1, it has no effect and all lines will be written.
public static int skipLines = 5;
public static int rounds = 526100 * 35 * 60; // Amount of rounds to run the simulator for
public static double time = 1; // Time steps in seconds
/**
* Object settings
*/
public static String sunName = "Sun"; // The name of the sun to calculate values TO
public static String[] objectNames = { "Earth" }; // The name of the object(s) your want to calculate the values OF
/**
* Ascending & descending node detection
*/
public static double z = -22439680.6; // Reference z height for the used system in meters
public static double zThreshold = 100; // Threshold value to specify the maximum value (in meters) the z difference can be to be considered close to the reference plane (To eliminate all bending points that are to far away from the z-axis to count as nodes)
/**
* Output preferences
*/
public static String outputUnit = "AU"; // Preferred output unit preference (AU => AU/day, m => m/s)
public static int outputNumbers = 0; // Preferred way of outputting numbers: (0 => comma for decimals, dot in large numbers OR 1 => comma for large numbers, dot with decimals)
public static int skipLines = 2629743; // Set the skipLines integer to skip lines (for example: every 5th line is written) in the output file (for smaller files), if this is set to 1, it has no effect and all lines will be written.
public static boolean skipUnnecessary = true; // Skip the unnecessary objects in the export
}

View File

@ -1,15 +1,19 @@
package com.verictas.pos.simulator.dataWriter;
import com.verictas.pos.simulator.Object;
import com.verictas.pos.simulator.Simulator;
import com.verictas.pos.simulator.SimulatorConfig;
import com.verictas.pos.simulator.mathUtils.AU;
import com.verictas.pos.simulator.processor.ObjectProcessor;
import javax.vecmath.Vector3d;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.math.RoundingMode;
import java.text.*;
import java.util.Date;
import java.util.Locale;
public class DataWriter {
private FileWriter writer = null;
@ -22,11 +26,22 @@ public class DataWriter {
private int counter = 0;
/**
* Decimal formatter
*/
public DecimalFormat formatter = new DecimalFormat();
/**
* Constructor
* @throws WritingException
*/
public DataWriter() throws WritingException {
/**
* Prepare the locale
*/
try {
/**
* Define the save path
@ -48,8 +63,33 @@ public class DataWriter {
* Open a file to write to and write the header
*/
this.writer = new FileWriter(path);
this.writer.write("Object" + DELIMITER + "Position (m)" + DELIMITER + "Position (AU)" + DELIMITER+ "Distance from the sun (m)" + DELIMITER + "Speed (m/s)" + DELIMITER + "Speed (AU/day)" + DELIMITER + "Old Acceleration" + DELIMITER + "Acceleration" + DELIMITER + "Mass" + NEW_LINE);
/**
* Write the lines with information about the columns
*/
if (SimulatorConfig.outputUnit.equals("AU")) {
this.writer.write("Object" + DELIMITER + "X (AU)" + DELIMITER + "Y (AU)" + DELIMITER + "Z (AU)" + DELIMITER + "VX (AU/day)" + DELIMITER + "VY (AU/day)" + DELIMITER + "VZ (AU/day)" + NEW_LINE);
} else {
this.writer.write("Object" + DELIMITER + "X (m)" + DELIMITER + "Y (m)" + DELIMITER + "Z (m)" + DELIMITER + "VX (m/s)" + DELIMITER + "VY (m/s)" + DELIMITER + "VZ (m/s)" + NEW_LINE);
}
this.counter++;
/**
* Configure the decimal formatter
*/
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
if (SimulatorConfig.outputNumbers == 0) {
symbols.setDecimalSeparator(',');
symbols.setGroupingSeparator('.');
} else {
symbols.setDecimalSeparator('.');
symbols.setGroupingSeparator(',');
}
this.formatter.setDecimalFormatSymbols(symbols);
this.formatter.setMinimumFractionDigits(0);
this.formatter.setMaximumFractionDigits(25);
} catch(IOException e) {
throw new WritingException("The destination file couldn't be created.");
} catch(Exception e) {
@ -88,20 +128,19 @@ public class DataWriter {
String id = object.name;
Vector3d position = object.position;
Vector3d speed = object.speed;
Vector3d oldAcceleration = object.oldAcceleration;
Vector3d acceleration = object.acceleration;
double mass = object.mass;
Vector3d AUposition = AU.convertFromMeter(position);
Vector3d AUspeed = AU.convertFromMetersPerSecond(speed);
if (this.writer == null) {
throw new WritingException("The writer isn't defined yet");
} else {
try {
if (this.counter % SimulatorConfig.skipLines == 0) {
// Calculate the distance to the sun
double sunDistance = object.getDistance(reference).length();
this.writer.append(id + DELIMITER + position.toString() + DELIMITER + AU.convertFromMeter(position).toString() + DELIMITER + String.valueOf(sunDistance) + DELIMITER + speed.toString() + DELIMITER + AU.convertFromMetersPerSecond(speed).toString() + DELIMITER + oldAcceleration.toString() + DELIMITER + acceleration.toString() + DELIMITER + String.valueOf(mass) + NEW_LINE);
if (SimulatorConfig.outputUnit.equals("AU")) {
this.writer.append(id + DELIMITER + decimalFormatter(AUposition.getX()) + DELIMITER + decimalFormatter(AUposition.getY()) + DELIMITER + decimalFormatter(AUposition.getZ()) + DELIMITER + decimalFormatter(AUspeed.getX()) + DELIMITER + decimalFormatter(AUspeed.getY()) + DELIMITER + decimalFormatter(AUspeed.getZ()) + NEW_LINE);
} else {
this.writer.append(id + DELIMITER + decimalFormatter(position.getX()) + DELIMITER + decimalFormatter(position.getY()) + DELIMITER + decimalFormatter(position.getZ()) + DELIMITER + decimalFormatter(speed.getX()) + DELIMITER + decimalFormatter(speed.getY()) + DELIMITER + decimalFormatter(speed.getZ()) + NEW_LINE);
}
}
this.counter++;
} catch (Exception e) {
@ -111,6 +150,10 @@ public class DataWriter {
}
}
private String decimalFormatter(double input) {
return this.formatter.format(input);
}
/**
* Saves the file to disk
* @throws WritingException

View File

@ -0,0 +1,14 @@
package com.verictas.pos.simulator.mathUtils;
import javax.vecmath.Vector3d;
public class AOP {
/**
* Helper class for calculating the argument of periapsis
*/
public static double calculate(Vector3d ascendingNode, Vector3d perihelion, Vector3d aphelion) {
Vector3d eccentricity = new Vector3d(0,0,0);
eccentricity.sub(perihelion, aphelion);
return ascendingNode.angle(eccentricity);
}
}

View File

@ -0,0 +1,184 @@
package com.verictas.pos.simulator.processor;
import com.verictas.pos.simulator.Object;
import com.verictas.pos.simulator.SimulatorConfig;
import com.verictas.pos.simulator.mathUtils.AU;
import javax.vecmath.Vector3d;
public class ObjectProcessor {
public Vector3d aphelion;
public Vector3d perihelion;
public double aphelionDistance = -1;
public double perihelionDistance = -1;
public Object thisObject;
public Object referenceObject;
public Vector3d startingPosition;
public double lastStartDistance = -1;
public double beforeLastStartDistance = -1;
public Vector3d ascendingNode;
public Vector3d descendingNode;
public double zAxisDistance = -1;
public double pastzAxisDistance = -1;
public Vector3d lastPos;
public void setStartingPosition(Vector3d position) {
this.startingPosition = position;
}
public void setObjectData(Object object) {
this.thisObject = object;
}
public void setReferenceObjectData(Object object) {
this.referenceObject = object;
}
/**
* Processes the aphelion & perihelion
*/
public void processAphelionAndPerihelion() {
double sunDistance = this.thisObject.getDistance(this.referenceObject).length();
/**
* Set the defaults
*/
if (this.aphelionDistance == -1) {
this.aphelionDistance = sunDistance;
}
if (this.perihelionDistance == -1) {
this.perihelionDistance = sunDistance;
}
/**
* Check if the aphelion or perihelion should be changed
*/
if (sunDistance > aphelionDistance) {
this.aphelion = this.thisObject.position;
this.aphelionDistance = sunDistance;
}
if (sunDistance < perihelionDistance) {
this.perihelion = this.thisObject.position;
this.perihelionDistance = sunDistance;
}
}
/**
* Get the ascending node
*/
public void processNodes() {
double zAxisDistance = Math.abs(this.thisObject.position.getZ() - SimulatorConfig.z);
if (this.pastzAxisDistance == -1) {
this.pastzAxisDistance = zAxisDistance;
}
if (this.pastzAxisDistance != -1 && this.zAxisDistance == -1) {
this.zAxisDistance = zAxisDistance;
}
if (this.zAxisDistance != -1 && this.pastzAxisDistance != 1) {
if ((this.pastzAxisDistance > this.zAxisDistance && zAxisDistance > this.zAxisDistance) && (this.zAxisDistance < SimulatorConfig.zThreshold)) {
if (SimulatorConfig.outputUnit.equals("AU")) {
System.out.println("INFO:: Found a node within the threshold at " + AU.convertFromMeter(this.lastPos) + " (in AU) for object " + this.thisObject.name + "!");
} else {
System.out.println("INFO:: Found a node within the threshold at " + this.lastPos + " (in m) for object " + this.thisObject.name + "!");
}
if ((this.lastPos.getZ() - this.thisObject.position.getZ()) < 0) {
if (SimulatorConfig.z < 0) {
// The reference plane is in negative z, so you have gone up!
this.ascendingNode = this.lastPos;
System.out.println("INFO:: Detected node as: ASCENDING NODE!");
} else {
// The reference plane is in positive z, so you have gone down!
this.descendingNode = this.lastPos;
System.out.println("INFO:: Detected node as: DESCENDING NODE!");
}
} else {
if (SimulatorConfig.z < 0) {
// The reference plane is in negative z, so you have gone down!
this.descendingNode = this.lastPos;
System.out.println("INFO:: Detected node as: DESCENDING NODE!");
} else {
// The reference plane is in positive z, so you have gone up!
this.ascendingNode = this.lastPos;
System.out.println("INFO:: Detected node as: ASCENDING NODE!");
}
}
}
this.pastzAxisDistance = this.zAxisDistance;
this.zAxisDistance = zAxisDistance;
}
this.lastPos = this.thisObject.position;
}
/**
* Processes the round check
*/
public boolean processRoundCheck() {
double startDistance = this.thisObject.getDistance(this.startingPosition).length();
boolean fullRotation = false;
/**
* Check if all are set and shuffle!
*/
if (beforeLastStartDistance != -1 && lastStartDistance != -1) {
// Ready to go!
if (beforeLastStartDistance > lastStartDistance && startDistance > lastStartDistance) {
// Last point was the closest to the starting position overall!
fullRotation = true;
System.out.println("INFO:: Object " + this.thisObject.name + " has made a full rotation last round.");
}
beforeLastStartDistance = lastStartDistance;
lastStartDistance = startDistance;
}
/**
* Check if 1st distance is set and 2nd isn't set
*/
if (beforeLastStartDistance != -1 && lastStartDistance == -1) {
lastStartDistance = startDistance;
}
/**
* Check if the 1st distance isn't set
*/
if (beforeLastStartDistance == -1) {
beforeLastStartDistance = startDistance;
}
if(fullRotation) {
return true;
} else {
return false;
}
}
public void reset() {
aphelionDistance = -1;
perihelionDistance = -1;
lastStartDistance = -1;
beforeLastStartDistance = -1;
aphelion = null;
perihelion = null;
ascendingNode = null;
descendingNode = null;
zAxisDistance = -1;
lastPos = null;
}
}

View File

@ -0,0 +1,8 @@
package com.verictas.pos.simulator.processor;
public class ProcessingException extends Exception {
public ProcessingException() { super(); }
public ProcessingException(String message) { super(message); }
public ProcessingException(String message, Throwable cause) { super(message, cause); }
public ProcessingException(Throwable cause) { super(cause); }
}

View File

@ -0,0 +1,150 @@
package com.verictas.pos.simulator.processor;
import com.verictas.pos.simulator.Object;
import com.verictas.pos.simulator.SimulatorConfig;
import com.verictas.pos.simulator.dataWriter.DataWriter;
import com.verictas.pos.simulator.dataWriter.WritingException;
import com.verictas.pos.simulator.mathUtils.AOP;
import com.verictas.pos.simulator.mathUtils.AU;
import java.util.HashMap;
public class Processor {
private DataWriter writer;
public HashMap<String, Object> initialObjectValues = new HashMap<>();
public HashMap<String, ObjectProcessor> objects = new HashMap<>();
public Processor(Object[] objects) throws ProcessingException, WritingException {
/**
* Initialize DataWriter
*/
this.writer = new DataWriter();
/**
* Store the initial values of all the objects in memory (and to a file) for later use
*/
this.initialObjectValues = objectArrayToHashMap(objects);
// Write initial values to file
this.write(initialObjectValues);
/**
* Create the object processing array
*/
for (Object object : initialObjectValues.values()) {
this.objects.put(object.name, new ObjectProcessor());
this.objects.get(object.name).setStartingPosition(object.position);
}
}
public void process(Object[] objectArray) throws ProcessingException, WritingException {
HashMap<String, Object> objects = objectArrayToHashMap(objectArray);
/**
* Only do the processing for the asked planet(s)
*/
for(String objectName : SimulatorConfig.objectNames) {
ObjectProcessor object = this.objects.get(objectName);
object.setObjectData(objects.get(objectName));
object.setReferenceObjectData(objects.get(SimulatorConfig.sunName));
// Check if the object has gone round last round
boolean round = object.processRoundCheck();
if (round) {
// Object has gone full circle last round!
System.out.println("\n\n============== ROTATION DATA: " + objectName.toUpperCase() + " =============");
System.out.println("Current position (AU): " + AU.convertFromMeter(objects.get(objectName).position));
System.out.println("Current position (m): " + objects.get(objectName).position + "\n");
if (object.ascendingNode != null) {
System.out.println("Ascending node (AU): " + AU.convertFromMeter(object.ascendingNode));
System.out.println("Ascending node (m): " + object.ascendingNode + "\n");
} else {
if (object.descendingNode != null) {
System.out.println("WARNING:: Ascending node not found. Because a descending node was found, you can assume the current position is the ascending node (or it is between the starting position and the current.\n");
} else {
System.out.println("WARNING:: Ascending node not found. Have you set the reference plane height correctly?\n");
}
}
if (object.descendingNode != null) {
System.out.println("Descending node (AU): " + AU.convertFromMeter(object.descendingNode));
System.out.println("Descending node (m): " + object.descendingNode + "\n");
} else {
if (object.ascendingNode != null) {
System.out.println("WARNING:: Descending node not found. Because a ascending node was found, you can assume the current position is the descending node (or it is between the starting position and the current).\n");
} else {
System.out.println("WARNING:: Descending node not found. Have you set the reference plane height correctly?\n");
}
}
System.out.println("Position during apastron (AU): " + AU.convertFromMeter(object.aphelion));
System.out.println("Position during apastron (m): " + object.aphelion);
System.out.println("Distance from (the) " + SimulatorConfig.sunName + " during apastron in m: " + object.aphelionDistance + "\n");
System.out.println("Position during periastron (AU): " + AU.convertFromMeter(object.perihelion));
System.out.println("Position during periastron (m): " + object.perihelion);
System.out.println("Distance from (the) " + SimulatorConfig.sunName + " during periastron in m: " + object.perihelionDistance + "\n");
if (object.ascendingNode != null) {
System.out.println("Argument of periapsis (range: 0 - PI): " + AOP.calculate(object.ascendingNode, object.perihelion, object.aphelion) + " rad");
System.out.println("Argument of periapsis: " + Math.toDegrees(AOP.calculate(object.ascendingNode, object.perihelion, object.aphelion)) + " degrees");
} else {
if (object.descendingNode != null) {
System.out.println("WARNING:: Ascending node not found. The argument is calculated with the current position as ascending node).\n");
System.out.println("Argument of periapsis (range: 0 - PI): " + AOP.calculate(objects.get(objectName).position, object.perihelion, object.aphelion) + " rad");
System.out.println("Argument of periapsis: " + Math.toDegrees(AOP.calculate(objects.get(objectName).position, object.perihelion, object.aphelion)) + " degrees");
}
System.out.println("ERROR:: Can't calculate the argument of periapsis because the ascending node is missing.");
}
System.out.println("=======================================================================================\n\n");
object.reset();
// Reset starting position
this.objects.get(objectName).setStartingPosition(objects.get(objectName).position);
}
// Process values for this round
object.processAphelionAndPerihelion();
object.processNodes();
this.objects.put(objectName, object);
}
this.write(objects);
}
private void write(HashMap<String, Object> objects) throws ProcessingException, WritingException {
if (SimulatorConfig.skipUnnecessary) {
for (String name : SimulatorConfig.objectNames) {
this.writer.write(objects.get(name), objects.get(SimulatorConfig.sunName));
}
} else {
for (Object object : objects.values()) {
this.writer.write(object, objects.get(SimulatorConfig.sunName));
}
}
}
private HashMap<String, Object> objectArrayToHashMap(Object[] objects) {
// Create the return map
HashMap<String, Object> objectMap = new HashMap<>();
for(int i = 0; i < objects.length; i++) {
objectMap.put(objects[i].name, objects[i]);
}
return objectMap;
}
public void close() throws ProcessingException {
try {
this.writer.save();
} catch(WritingException e) {
throw new ProcessingException("An error occurred during creation of the file writer: " + e.toString());
}
}
}