Skip to content

Instantly share code, notes, and snippets.

@hoorayimhelping
Created December 20, 2015 18:54
Show Gist options
  • Select an option

  • Save hoorayimhelping/0e6e2e464c2820863225 to your computer and use it in GitHub Desktop.

Select an option

Save hoorayimhelping/0e6e2e464c2820863225 to your computer and use it in GitHub Desktop.
diff --git a/js/maps/solar_system.js b/js/maps/solar_system.js
index ea5dd0b..d464e79 100644
--- a/js/maps/solar_system.js
+++ b/js/maps/solar_system.js
@@ -17,6 +17,9 @@ var SolarSystem = function() {
low_moon_orbit: new Node('Low Moon Orbit'),
moon: new Node('Moon'),
earth_transfer: new Node('Earth Transfer'),
+ venus_transfer: new Node('Venus Transfer'),
+ low_venus_orbit: new Node('Low Venus Orbit'),
+ venus: new Node('Venus'),
mars_transfer: new Node('Mars Transfer'),
low_mars_orbit: new Node('Low Mars Orbit'),
mars: new Node('Mars'),
@@ -36,6 +39,9 @@ var SolarSystem = function() {
moon_transfer_low_moon_orbit: newEdge({ deltav: 680, name: 'moon_transfer-low_moon_orbit' }),
low_moon_orbit_moon_landing: newEdge({ deltav: 1730, name: 'low_moon_orbit-moon_landing' }),
low_earth_orbit_earth_transfer: newEdge({ deltav: 3210, name: 'low_earth_orbit-earth_transfer' }),
+ earth_transfer_venus_transfer: newEdge({ deltav: 640, name: 'earth_transfer-venus_transfer' }),
+ venus_transfer_low_venus_orbit: newEdge({ deltav: 2940, name: 'venus_transfer-low_venus_orbit' }),
+ low_venus_orbit_venus_landing: newEdge({ deltav: 2000, name: 'low_venus_orbit-venus_landing' }),
earth_transfer_mars_transfer: newEdge({ deltav: 1060, name: 'earth_transfer-mars_transfer' }),
mars_transfer_low_mars_orbit: newEdge({ deltav: 1440, name: 'mars_transfer-low_mars_orbit' }),
low_mars_orbit_mars_landing: newEdge({ deltav: 2000, name: 'low_mars_orbit-mars_landing' }),
@@ -56,6 +62,7 @@ SolarSystem.prototype = {
},
buildGraph: function(graph, edges, nodes) {
+ // earth
graph.addEdge(edges.low_earth_orbit, nodes.earth, nodes.low_earth_orbit);
graph.addEdge(edges.low_earth_orbit_geostationary_transfer, nodes.low_earth_orbit, nodes.geostationary_transfer);
@@ -66,8 +73,14 @@ SolarSystem.prototype = {
graph.addEdge(edges.low_moon_orbit_moon_landing, nodes.low_moon_orbit, nodes.moon);
graph.addEdge(edges.low_earth_orbit_earth_transfer, nodes.low_earth_orbit, nodes.earth_transfer);
- graph.addEdge(edges.earth_transfer_mars_transfer, nodes.earth_transfer, nodes.mars_transfer);
+ // venus
+ graph.addEdge(edges.earth_transfer_venus_transfer, nodes.earth_transfer, nodes.venus_transfer);
+ graph.addEdge(edges.venus_transfer_low_venus_orbit, nodes.venus_transfer, nodes.low_venus_orbit);
+ graph.addEdge(edges.low_venus_orbit_venus_landing, nodes.low_venus_orbit, nodes.venus);
+
+ // mars
+ graph.addEdge(edges.earth_transfer_mars_transfer, nodes.earth_transfer, nodes.mars_transfer);
graph.addEdge(edges.mars_transfer_low_mars_orbit, nodes.mars_transfer, nodes.low_mars_orbit);
graph.addEdge(edges.low_mars_orbit_mars_landing, nodes.low_mars_orbit, nodes.mars);
diff --git a/test/solar_system.js b/test/solar_system.js
index 5cd1f48..3e8289a 100644
--- a/test/solar_system.js
+++ b/test/solar_system.js
@@ -42,6 +42,38 @@ describe("one-way trips from earth", function() {
});
});
+ describe("to venutian space", function() {
+ it("calculates the delta-v to venus transfer orbit", function() {
+ var total_value = graph.walk(nodes.earth, nodes.venus_transfer);
+ var expected_value = edges.low_earth_orbit.value +
+ edges.low_earth_orbit_earth_transfer.value +
+ edges.earth_transfer_venus_transfer.value;
+
+ expect(total_value).to.equal(expected_value);
+ });
+
+ it("calculates the delta-v to low venus orbit", function() {
+ var total_value = graph.walk(nodes.earth, nodes.low_venus_orbit);
+ var expected_value = edges.low_earth_orbit.value +
+ edges.low_earth_orbit_earth_transfer.value +
+ edges.earth_transfer_venus_transfer.value +
+ edges.venus_transfer_low_venus_orbit.value;
+
+ expect(total_value).to.equal(expected_value);
+ });
+
+ it("calculates the delta-v to a venus landing", function() {
+ var total_value = graph.walk(nodes.earth, nodes.venus);
+ var expected_value = edges.low_earth_orbit.value +
+ edges.low_earth_orbit_earth_transfer.value +
+ edges.earth_transfer_venus_transfer.value +
+ edges.venus_transfer_low_venus_orbit.value +
+ edges.low_venus_orbit_venus_landing.value;
+
+ expect(total_value).to.equal(expected_value);
+ });
+ });
+
describe("to martian space", function() {
it("calculates the delta-v to mars transfer orbit", function() {
var total_value = graph.walk(nodes.earth, nodes.mars_transfer);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment