com presentations: PHP in Space talk for PHP UK.: slides/space/2863d8cfddda939001b44506ab8e7a46.png slides/space/bill-explosion.xml slides/space/decimal_to_dms .xml slides/space/delta-v-specific-calculation.xml slid es/space/delta-v-specific-impulse.xml slides/space/delta-v .xml slides/space/direction.xml slides/space/distance-o n-kerbin.xml slides/space/distance-vincenty.xml slides/ space/distance.xml slides/space/dms_to_decimal.xml slides/space/duna
[email protected] (Derick Rethans)
| Newsgroups | php.pres |
|---|---|
| Message-ID | <[email protected]> |
Commit: 65fcd5c4edc6877ce4100ed7c22edebda74662a0 Author: Derick Rethans <[email protected]> Sat, 22 Feb 2014 12:47:57 +0000 Parents: cabb86a81a41fdfe83c2dfa62ee283d7409a9dde Branches: master Link: http://git.php.net/?p=presentations.git;a=commitdiff;h=65fcd5c4edc6877ce4100ed7c22edebda74662a0 Log: PHP in Space talk for PHP UK. Changed paths: A slides/space/2863d8cfddda939001b44506ab8e7a46.png A slides/space/bill-explosion.xml A slides/space/decimal_to_dms.xml A slides/space/delta-v-specific-calculation.xml A slides/space/delta-v-specific-impulse.xml A slides/space/delta-v.xml A slides/space/direction.xml A slides/space/distance-on-kerbin.xml A slides/space/distance-vincenty.xml A slides/space/distance.xml A slides/space/dms_to_decimal.xml A slides/space/duna-crash.webm A slides/space/duna.png A slides/space/duna.webm A slides/space/duna.xml A slides/space/duna5.webm A slides/space/eve.png A slides/space/eve.xml A slides/space/extensions.xml A slides/space/fl-t400.png A slides/space/get-it-right.xml A slides/space/getting-to-ksp.xml A slides/space/haversine.png A slides/space/jebediah-on-minmus.png A slides/space/jebediah.xml A slides/space/kerbals-like-flight-at-day.xml A slides/space/kerbin-system.png A slides/space/kerbin-system.xml A slides/space/kerbin.png A slides/space/kerbin.xml A slides/space/kerbol-inner.png A slides/space/kerbol-system.png A slides/space/kerbol.png A slides/space/ksp.png A slides/space/launch.png A slides/space/launch1.png A slides/space/launch2.png A slides/space/launch3.png A slides/space/minmus-only.png A slides/space/minmus.png A slides/space/minmus.xml A slides/space/mun-rocket.png A slides/space/mun.png A slides/space/mun.xml A slides/space/no-mun.png A slides/space/orbit1.png A slides/space/orbit1.xcf A slides/space/orbit2.png A slides/space/orbit3.png A slides/space/orbit4.png A slides/space/orbital-transfers.xml A slides/space/point-rocket-to-space.png A slides/space/resources.xml A slides/space/rocket-equation.png A slides/space/rockomax-48-7s.png A slides/space/something-about-the-line.xml A slides/space/specific-impulse.png A slides/space/still-to-do.xml A slides/space/sun-position.xml A slides/space/thrust-to-weight-max-weight.xml A slides/space/thrust-to-weight-ratio-calculation.xml A slides/space/thrust-to-weight-ratio.xml A slides/space/to-duna.xml A slides/space/twr-demo.webm A slides/space/twr.png A slides/space/vis-viva-circle.png A slides/space/vis-viva-circle2.png A slides/space/vis-viva-equation-circle.xml A slides/space/vis-viva-equation.xml A slides/space/vis-viva.png A slides/space/vis-viva2.png A space-phpuk14.xml
diff_65fcd5c4edc6877ce4100ed7c22edebda74662a0.txt
(text/plain, 28.9 KB)
diff --git a/slides/space/2863d8cfddda939001b44506ab8e7a46.png b/slides/space/2863d8cfddda939001b44506ab8e7a46.png
new file mode 100644
index 0000000..328a11f
Binary files /dev/null and b/slides/space/2863d8cfddda939001b44506ab8e7a46.png differ
diff --git a/slides/space/bill-explosion.xml b/slides/space/bill-explosion.xml
new file mode 100644
index 0000000..9c38d1c
--- /dev/null
+++ b/slides/space/bill-explosion.xml
@@ -0,0 +1,5 @@
+<slide>
+<title>First attempt...</title>
+
+<video filename="duna5.webm" autoplay="no"/>
+</slide>
diff --git a/slides/space/decimal_to_dms.xml b/slides/space/decimal_to_dms.xml
new file mode 100644
index 0000000..fca2176
--- /dev/null
+++ b/slides/space/decimal_to_dms.xml
@@ -0,0 +1,14 @@
+<slide>
+<title>Converting from decimal degrees to °, ′, and ″</title>
+
+<blurb>And we can do that the other way around too:</blurb>
+<example result="1"><![CDATA[
+<?php
+$jebLon = 45.74;
+$jebLat = -47.11;
+$lon = decimal_to_dms($jebLon, "longitude");
+$lat = decimal_to_dms($jebLat, "latitude");
+echo "{$lon['degrees']}°{$lon['minutes']}′{$lon['seconds']}″{$lon['direction']}\n";
+echo "{$lat['degrees']}°{$lat['minutes']}′{$lat['seconds']}″{$lat['direction']}\n";
+?>]]></example>
+</slide>
diff --git a/slides/space/delta-v-specific-calculation.xml b/slides/space/delta-v-specific-calculation.xml
new file mode 100644
index 0000000..410bf83
--- /dev/null
+++ b/slides/space/delta-v-specific-calculation.xml
@@ -0,0 +1,20 @@
+<slide>
+<title>Delta-V</title>
+
+<image align="left" filename="rockomax-48-7s.png"/>
+<image align="right" filename="fl-t400.png"/>
+<blurb>Specific impulse:</blurb>
+<image filename="specific-impulse.png"/>
+
+<blurb>Rocket equation:</blurb>
+<image filename="rocket-equation.png"/>
+
+<example result="3"><![CDATA[<?php
+function delta_v( $lsp, $g, $m0, $m1 )
+{
+ return ($lsp * $g) * log($m0/$m1);
+}
+echo delta_v( 300, 9.81, 3500, 1500 ), "\n";
+?>]]></example>
+
+</slide>
diff --git a/slides/space/delta-v-specific-impulse.xml b/slides/space/delta-v-specific-impulse.xml
new file mode 100644
index 0000000..cbaaa90
--- /dev/null
+++ b/slides/space/delta-v-specific-impulse.xml
@@ -0,0 +1,12 @@
+<slide>
+<title>Delta-V</title>
+
+<blurb>Specific impulse:</blurb>
+<image filename="specific-impulse.png"/>
+
+<list>
+<bullet>g₀: is the acceleration due to gravity at the Kerbin's surface, 9.81 m/s²</bullet>
+<bullet>Isp: is the specific impulse in seconds</bullet>
+</list>
+
+</slide>
diff --git a/slides/space/delta-v.xml b/slides/space/delta-v.xml
new file mode 100644
index 0000000..d013030
--- /dev/null
+++ b/slides/space/delta-v.xml
@@ -0,0 +1,15 @@
+<slide>
+<title>Delta-V</title>
+
+<blurb>Rocket equation:</blurb>
+<image filename="rocket-equation.png"/>
+
+<list>
+<bullet>m₀: is the initial total mass, including propellant</bullet>
+<bullet>m₁: is the final total mass</bullet>
+<bullet>delta-v: the maximum change of velocity</bullet>
+<bullet>ln: refers to the natural logarithm function</bullet>
+<bullet>ve: is the effective exhaust velocity</bullet>
+</list>
+
+</slide>
diff --git a/slides/space/direction.xml b/slides/space/direction.xml
new file mode 100644
index 0000000..8c970e0
--- /dev/null
+++ b/slides/space/direction.xml
@@ -0,0 +1,20 @@
+<slide>
+<title>Which direction does Jeb needs to head to?</title>
+
+<div effect="fade-out">
+<iframe width="1000" filename='../map/examples/3angle/?l=gcl&lon1=-74.575&lat1=-0.1025&lon2=45.74&lat2=-47.11&zoom=3&lat=-30&lon=75&kb=yes&gcl_segments=1'/>
+</div>
+<div effect="fade-in-out">
+<iframe width="1000" filename='../map/examples/3angle/?l=gcl&lon1=-74.575&lat1=-0.1025&lon2=45.74&lat2=-47.11&zoom=3&lat=-30&lon=75&kb=yes&gcl_segments=20'/>
+</div>
+<div effect="fade-in">
+<blurb>The geospatial extension has a function for this too:</blurb>
+<example result="1">
+<![CDATA[<?php
+$jeb = [ 'type' => 'Point', 'coordinates' => [ 45.74, -47.11 ] ];
+$ksp = [ 'type' => 'Point', 'coordinates' => [ -74.57527, -0.1025 ] ];
+var_dump((initial_bearing($jeb, $ksp) + 360) % 360);
+?>]]>
+</example>
+</div>
+</slide>
diff --git a/slides/space/distance-on-kerbin.xml b/slides/space/distance-on-kerbin.xml
new file mode 100644
index 0000000..24d74aa
--- /dev/null
+++ b/slides/space/distance-on-kerbin.xml
@@ -0,0 +1,20 @@
+<slide>
+<title>With coordinates, we calculate the distance</title>
+
+<list>
+ <bullet>Kerbin's diameter is 600 km, as compared to Earth's 6378.1 km</bullet>
+ <bullet>Haversine, because Vincenty is only for the WGS84 Earth Spheroid</bullet>
+</list>
+
+<example>
+Jeb lives at 45.74, -47.11
+KSP is at -74.575277777778, -0.1025
+</example>
+<example result="1"><![CDATA[
+<?php
+$jeb = [ 'type' => 'Point', 'coordinates' => [ 45.74, -47.11 ] ];
+$ksp = [ 'type' => 'Point', 'coordinates' => [ -74.57527, -0.1025 ] ];
+var_dump(haversine($jeb, $ksp, 600000));
+?>]]></example>
+
+</slide>
diff --git a/slides/space/distance-vincenty.xml b/slides/space/distance-vincenty.xml
new file mode 100644
index 0000000..e777437
--- /dev/null
+++ b/slides/space/distance-vincenty.xml
@@ -0,0 +1,18 @@
+<slide>
+<title>The Earth is not a sphere</title>
+
+<blurb>Vincenty</blurb>
+
+<blurb>Implemented in the geospatial extension:</blurb>
+
+<example>
+Jeb lives at 45.74, -47.11
+KSP is at -74.575277777778, -0.1025
+</example>
+<example result="1"><![CDATA[
+<?php
+$jeb = [ 'type' => 'Point', 'coordinates' => [ 45.74, -47.11 ] ];
+$ksp = [ 'type' => 'Point', 'coordinates' => [ -74.57527, -0.1025 ] ];
+var_dump(vincenty($jeb, $ksp));
+?>]]></example>
+</slide>
diff --git a/slides/space/distance.xml b/slides/space/distance.xml
new file mode 100644
index 0000000..ec4a51a
--- /dev/null
+++ b/slides/space/distance.xml
@@ -0,0 +1,21 @@
+<slide>
+<title>With coordinates, we calculate the distance</title>
+
+<blurb>Haversine:</blurb>
+
+<image filename="haversine.png"/>
+
+<blurb>Implemented in the geospatial extension:</blurb>
+
+<example>
+Jeb lives at 45.74, -47.11
+KSP is at -74.575277777778, -0.1025
+</example>
+<example result="1"><![CDATA[
+<?php
+$jeb = [ 'type' => 'Point', 'coordinates' => [ 45.74, -47.11 ] ];
+$ksp = [ 'type' => 'Point', 'coordinates' => [ -74.57527, -0.1025 ] ];
+var_dump(haversine($jeb, $ksp));
+?>]]></example>
+
+</slide>
diff --git a/slides/space/dms_to_decimal.xml b/slides/space/dms_to_decimal.xml
new file mode 100644
index 0000000..dccd337
--- /dev/null
+++ b/slides/space/dms_to_decimal.xml
@@ -0,0 +1,17 @@
+<slide>
+<title>Converting from °, ′, and ″ to decimal degrees</title>
+
+<blurb>From the php-geospatial extension:</blurb>
+
+<example result="1"><![CDATA[
+<?php
+$jebLon = 45.74;
+$jebLat = -47.11;
+echo "Jeb lives at $jebLon, $jebLat\n";
+
+$kspLon = dms_to_decimal(74, 34, 31, 'W');
+$kspLat = dms_to_decimal(0, 6, 9, 'S');
+echo "KSP is at $kspLon, $kspLat\n";
+?>]]>
+</example>
+</slide>
diff --git a/slides/space/duna-crash.webm b/slides/space/duna-crash.webm
new file mode 100644
index 0000000..1f23da5
Binary files /dev/null and b/slides/space/duna-crash.webm differ
diff --git a/slides/space/duna.png b/slides/space/duna.png
new file mode 100644
index 0000000..60047aa
Binary files /dev/null and b/slides/space/duna.png differ
diff --git a/slides/space/duna.webm b/slides/space/duna.webm
new file mode 100644
index 0000000..4b059f1
Binary files /dev/null and b/slides/space/duna.webm differ
diff --git a/slides/space/duna.xml b/slides/space/duna.xml
new file mode 100644
index 0000000..7d2cd2f
--- /dev/null
+++ b/slides/space/duna.xml
@@ -0,0 +1,7 @@
+<slide>
+<image filename="duna.png"/>
+<div class="float">
+<break lines="21"/>
+<blurb class="big-centre">|ffffff|Duna|</blurb>
+</div>
+</slide>
diff --git a/slides/space/duna5.webm b/slides/space/duna5.webm
new file mode 100644
index 0000000..490dc6e
Binary files /dev/null and b/slides/space/duna5.webm differ
diff --git a/slides/space/eve.png b/slides/space/eve.png
new file mode 100644
index 0000000..ca46e4d
Binary files /dev/null and b/slides/space/eve.png differ
diff --git a/slides/space/eve.xml b/slides/space/eve.xml
new file mode 100644
index 0000000..0082b42
--- /dev/null
+++ b/slides/space/eve.xml
@@ -0,0 +1,7 @@
+<slide>
+<image filename="eve.png"/>
+<div class="float">
+<break lines="21"/>
+<blurb class="big-centre">|ffffff|Eve|</blurb>
+</div>
+</slide>
diff --git a/slides/space/extensions.xml b/slides/space/extensions.xml
new file mode 100644
index 0000000..554eb5b
--- /dev/null
+++ b/slides/space/extensions.xml
@@ -0,0 +1,10 @@
+<slide>
+<title>Extensions extensions extensions</title>
+
+<blurb>Some of the functions I'm going to use are already in PHP, some we have to write.</blurb>
+<blurb>A few extensions are going to be used in this talk:</blurb>
+<list>
+ <bullet>*geospatial:*<br/>https://github.com/php-geospatial/geospatial</bullet>
+ <bullet>*solarsystem:*<br/>https://github.com/derickr/php-solarsystem</bullet>
+</list>
+</slide>
diff --git a/slides/space/fl-t400.png b/slides/space/fl-t400.png
new file mode 100644
index 0000000..168ace5
Binary files /dev/null and b/slides/space/fl-t400.png differ
diff --git a/slides/space/get-it-right.xml b/slides/space/get-it-right.xml
new file mode 100644
index 0000000..5cdafdb
--- /dev/null
+++ b/slides/space/get-it-right.xml
@@ -0,0 +1,5 @@
+<slide>
+<title>Get it right</title>
+
+<video filename="duna-crash.webm"/>
+</slide>
diff --git a/slides/space/getting-to-ksp.xml b/slides/space/getting-to-ksp.xml
new file mode 100644
index 0000000..6b6ffa8
--- /dev/null
+++ b/slides/space/getting-to-ksp.xml
@@ -0,0 +1,15 @@
+<slide>
+<title>How far is it to KSP?</title>
+
+<image filename="ksp.png" align="right"/>
+<list>
+ <bullet>Jebediah lives at 47.11°S, 45.74°E</bullet>
+ <bullet>KSP is at 0°6′9″S, 74°34′31″W</bullet>
+ <bullet>We need to figure out how far he has to walk, drive, or fly a plane to</bullet>
+</list>
+<break/>
+<list>
+ <bullet>°, ′, and ″ are units that are not often usable with algorithms</bullet>
+ <bullet>They need to be converted!</bullet>
+</list>
+</slide>
diff --git a/slides/space/haversine.png b/slides/space/haversine.png
new file mode 100644
index 0000000..328a11f
Binary files /dev/null and b/slides/space/haversine.png differ
diff --git a/slides/space/jebediah-on-minmus.png b/slides/space/jebediah-on-minmus.png
new file mode 100644
index 0000000..ce93d48
Binary files /dev/null and b/slides/space/jebediah-on-minmus.png differ
diff --git a/slides/space/jebediah.xml b/slides/space/jebediah.xml
new file mode 100644
index 0000000..45f1744
--- /dev/null
+++ b/slides/space/jebediah.xml
@@ -0,0 +1,7 @@
+<slide>
+<image filename="jebediah-on-minmus.png"/>
+<div class="float">
+<break lines="21"/>
+<blurb class="big-centre">|ffffff|Jebediah|</blurb>
+</div>
+</slide>
diff --git a/slides/space/kerbals-like-flight-at-day.xml b/slides/space/kerbals-like-flight-at-day.xml
new file mode 100644
index 0000000..2b96e09
--- /dev/null
+++ b/slides/space/kerbals-like-flight-at-day.xml
@@ -0,0 +1,18 @@
+<slide>
+<title>Launches at day time only!</title>
+
+<div effect="fade-out">
+<image filename="launch.png"/>
+</div>
+
+<blurb>PHP has a function for calculating sunset and sunrise—for Earth</blurb>
+
+<div effect="fade-in">
+<example result="1">
+<![CDATA[<?php
+$sun = date_sun_info(time(), 51.50, -0.127);
+var_dump( $sun );
+?>]]></example>
+</div>
+
+</slide>
diff --git a/slides/space/kerbin-system.png b/slides/space/kerbin-system.png
new file mode 100644
index 0000000..cce54e7
Binary files /dev/null and b/slides/space/kerbin-system.png differ
diff --git a/slides/space/kerbin-system.xml b/slides/space/kerbin-system.xml
new file mode 100644
index 0000000..e0a1dd4
--- /dev/null
+++ b/slides/space/kerbin-system.xml
@@ -0,0 +1,7 @@
+<slide>
+<image filename="kerbin-system.png"/>
+<div class="float">
+<break lines="21"/>
+<blurb class="big-centre">|ffffff|Kerbin and its moons|</blurb>
+</div>
+</slide>
diff --git a/slides/space/kerbin.png b/slides/space/kerbin.png
new file mode 100644
index 0000000..70f8fcd
Binary files /dev/null and b/slides/space/kerbin.png differ
diff --git a/slides/space/kerbin.xml b/slides/space/kerbin.xml
new file mode 100644
index 0000000..7c36d77
--- /dev/null
+++ b/slides/space/kerbin.xml
@@ -0,0 +1,7 @@
+<slide>
+<image filename="kerbin.png"/>
+<div class="float">
+<break lines="21"/>
+<blurb class="big-centre">|ffffff|Kerbin|</blurb>
+</div>
+</slide>
diff --git a/slides/space/kerbol-inner.png b/slides/space/kerbol-inner.png
new file mode 100644
index 0000000..78436b8
Binary files /dev/null and b/slides/space/kerbol-inner.png differ
diff --git a/slides/space/kerbol-system.png b/slides/space/kerbol-system.png
new file mode 100644
index 0000000..823152d
Binary files /dev/null and b/slides/space/kerbol-system.png differ
diff --git a/slides/space/kerbol.png b/slides/space/kerbol.png
new file mode 100644
index 0000000..11135ca
Binary files /dev/null and b/slides/space/kerbol.png differ
diff --git a/slides/space/ksp.png b/slides/space/ksp.png
new file mode 100644
index 0000000..8038e78
Binary files /dev/null and b/slides/space/ksp.png differ
diff --git a/slides/space/launch.png b/slides/space/launch.png
new file mode 100644
index 0000000..27427ab
Binary files /dev/null and b/slides/space/launch.png differ
diff --git a/slides/space/launch1.png b/slides/space/launch1.png
new file mode 100644
index 0000000..617f40d
Binary files /dev/null and b/slides/space/launch1.png differ
diff --git a/slides/space/launch2.png b/slides/space/launch2.png
new file mode 100644
index 0000000..5515fd1
Binary files /dev/null and b/slides/space/launch2.png differ
diff --git a/slides/space/launch3.png b/slides/space/launch3.png
new file mode 100644
index 0000000..8445895
Binary files /dev/null and b/slides/space/launch3.png differ
diff --git a/slides/space/minmus-only.png b/slides/space/minmus-only.png
new file mode 100644
index 0000000..265be47
Binary files /dev/null and b/slides/space/minmus-only.png differ
diff --git a/slides/space/minmus.png b/slides/space/minmus.png
new file mode 100644
index 0000000..0a664a0
Binary files /dev/null and b/slides/space/minmus.png differ
diff --git a/slides/space/minmus.xml b/slides/space/minmus.xml
new file mode 100644
index 0000000..2c8811e
--- /dev/null
+++ b/slides/space/minmus.xml
@@ -0,0 +1,7 @@
+<slide>
+<image filename="minmus.png"/>
+<div class="float">
+<break lines="21"/>
+<blurb class="big-centre">|ffffff|Minmus|</blurb>
+</div>
+</slide>
diff --git a/slides/space/mun-rocket.png b/slides/space/mun-rocket.png
new file mode 100644
index 0000000..886a7db
Binary files /dev/null and b/slides/space/mun-rocket.png differ
diff --git a/slides/space/mun.png b/slides/space/mun.png
new file mode 100644
index 0000000..7070a99
Binary files /dev/null and b/slides/space/mun.png differ
diff --git a/slides/space/mun.xml b/slides/space/mun.xml
new file mode 100644
index 0000000..75c022d
--- /dev/null
+++ b/slides/space/mun.xml
@@ -0,0 +1,7 @@
+<slide>
+<image filename="mun.png"/>
+<div class="float">
+<break lines="21"/>
+<blurb class="big-centre">|ffffff|Mun|</blurb>
+</div>
+</slide>
diff --git a/slides/space/no-mun.png b/slides/space/no-mun.png
new file mode 100644
index 0000000..6a94f95
Binary files /dev/null and b/slides/space/no-mun.png differ
diff --git a/slides/space/orbit1.png b/slides/space/orbit1.png
new file mode 100644
index 0000000..2a3d874
Binary files /dev/null and b/slides/space/orbit1.png differ
diff --git a/slides/space/orbit1.xcf b/slides/space/orbit1.xcf
new file mode 100644
index 0000000..5489e1d
Binary files /dev/null and b/slides/space/orbit1.xcf differ
diff --git a/slides/space/orbit2.png b/slides/space/orbit2.png
new file mode 100644
index 0000000..e25ea58
Binary files /dev/null and b/slides/space/orbit2.png differ
diff --git a/slides/space/orbit3.png b/slides/space/orbit3.png
new file mode 100644
index 0000000..dff2dc4
Binary files /dev/null and b/slides/space/orbit3.png differ
diff --git a/slides/space/orbit4.png b/slides/space/orbit4.png
new file mode 100644
index 0000000..fbf0035
Binary files /dev/null and b/slides/space/orbit4.png differ
diff --git a/slides/space/orbital-transfers.xml b/slides/space/orbital-transfers.xml
new file mode 100644
index 0000000..e6793ee
--- /dev/null
+++ b/slides/space/orbital-transfers.xml
@@ -0,0 +1,34 @@
+<slide>
+<title>Velocity calculation</title>
+
+<image filename="orbit1.png" align="right"/>
+<list>
+<bullet>a = semi major axis:<br/>a = (r₁ + r₂) / 2</bullet>
+<bullet>r₁ = 300 + 60</bullet>
+<bullet>r₂ = 998 + 60</bullet>
+<bullet>what is the velocity at r₂?</bullet>
+</list>
+size = 47 000 000 m
+Mass 2.6457897×10¹⁹ kg
+Gravitational parameter 1.7658000×10⁹ m³/s²
+
+G = 6.67 x 10¯¹¹
+M = 2.64 x 10¹⁹ kg
+µ = GM = 1760880000 (1.76 x 10⁹)kg
+
+r = 60+998 = 1058000m
+
+a = (360 + 1058) / 2 = 709000m
+
+v² = µ(2/r - 1/a)
+v² = 845
+v = 29
+
+
+CIRCLE:
+
+a = 1058000
+
+v² = µ(1/a) = 1664,
+v = 40.79
+</slide>
diff --git a/slides/space/point-rocket-to-space.png b/slides/space/point-rocket-to-space.png
new file mode 100644
index 0000000..de4d926
Binary files /dev/null and b/slides/space/point-rocket-to-space.png differ
diff --git a/slides/space/resources.xml b/slides/space/resources.xml
new file mode 100644
index 0000000..3fd20cf
--- /dev/null
+++ b/slides/space/resources.xml
@@ -0,0 +1,7 @@
+<slide type="thanks">
+<break/>
+<qrcode>http://derickrethans.nl/talks/:-:talk_id:-:</qrcode>
+<break/>
+<blurb align="center" class="pres-url-small">:-:joindin:-:</blurb>
+<blurb align="center" class="pres-url-small">:-:email:-:—@:-:twitter:-:</blurb>
+</slide>
diff --git a/slides/space/rocket-equation.png b/slides/space/rocket-equation.png
new file mode 100644
index 0000000..831e352
Binary files /dev/null and b/slides/space/rocket-equation.png differ
diff --git a/slides/space/rockomax-48-7s.png b/slides/space/rockomax-48-7s.png
new file mode 100644
index 0000000..64a4477
Binary files /dev/null and b/slides/space/rockomax-48-7s.png differ
diff --git a/slides/space/something-about-the-line.xml b/slides/space/something-about-the-line.xml
new file mode 100644
index 0000000..aaaf3b8
--- /dev/null
+++ b/slides/space/something-about-the-line.xml
@@ -0,0 +1,29 @@
+<slide>
+<title>Drawing the GC line</title>
+
+<iframe width="1000" height="250" filename='../map/examples/3angle/?l=gcl&lon1=-74.575&lat1=-0.1025&lon2=45.74&lat2=-47.11&zoom=2&lat=-30&lon=75&kb=yes&gcl_segments=20'/>
+
+<div effect="fade-out">
+<example>fraction_along_gc_line(GeoJSONPoint from, GeoJSONPoint to, double fraction)</example>
+</div>
+
+<div effect="fade-in">
+<example><![CDATA[
+function getPoint( $n, $e, $s, $w, $f, &$lat, &$lon )
+{
+ $lat1 = deg2rad( $n ); $lon1 = deg2rad( $w );
+ $lat2 = deg2rad( $s ); $lon2 = deg2rad( $e );
+
+ distance( $n, $e, $s, $w, $d );
+
+ $A = sin( ( 1 - $f ) * $d ) / sin( $d );
+ $B = sin( $f * $d ) / sin( $d );
+ $x = $A * cos($lat1) * cos($lon1) + $B * cos($lat2) * cos($lon2);
+ $y = $A * cos($lat1) * sin($lon1) + $B * cos($lat2) * sin($lon2);
+ $z = $A * sin($lat1) + $B * sin($lat2);
+
+ $lat = rad2deg( atan2( $z, sqrt( $x * $x + $y * $y ) ) );
+ $lon = rad2deg( atan2( $y, $x ) );
+}]]></example>
+</div>
+</slide>
diff --git a/slides/space/specific-impulse.png b/slides/space/specific-impulse.png
new file mode 100644
index 0000000..45e0473
Binary files /dev/null and b/slides/space/specific-impulse.png differ
diff --git a/slides/space/still-to-do.xml b/slides/space/still-to-do.xml
new file mode 100644
index 0000000..ca3978f
--- /dev/null
+++ b/slides/space/still-to-do.xml
@@ -0,0 +1,17 @@
+<slide>
+<title>Still to do</title>
+
+<list>
+<bullet>Implement more things for "solarsystem": Sun/Moon position
+(topographic, geocentric), planets (heliocentry, geocentric, phase,
+magnitute)</bullet>
+<bullet>Spacy-stuff: Oberth effect, aerobreaking, Hoffman and bi-elliptic
+transfers (also needs to go into an extension)</bullet>
+<bullet>Put all the equations of this presentation into an extension too</bullet>
+</list>
+<div effect="fade-in">
+<list>
+<bullet>Rescue Bill from Duna</bullet>
+</list>
+</div>
+</slide>
diff --git a/slides/space/sun-position.xml b/slides/space/sun-position.xml
new file mode 100644
index 0000000..a4e53e6
--- /dev/null
+++ b/slides/space/sun-position.xml
@@ -0,0 +1,18 @@
+<slide>
+<title>Calculating the position of the Sun in the sky</title>
+
+<image align="right" filename="kerbol.png"/>
+<example result="3"><![CDATA[<?php
+$pos = earth_sunpos( time(), 51.50, -0.127 );
+echo $pos, "\n";
+?>]]></example>
+
+<div effect="fade-in">
+<blurb>Actually, this only calculates the height over the horizon ☹.</blurb>
+</div>
+
+<div effect="fade-in">
+<image filename="no-mun.png" align="left"/>
+<blurb>I am working on the full position, and the moon as well. (Not the Mün).</blurb>
+</div>
+</slide>
diff --git a/slides/space/thrust-to-weight-max-weight.xml b/slides/space/thrust-to-weight-max-weight.xml
new file mode 100644
index 0000000..5bd47f7
--- /dev/null
+++ b/slides/space/thrust-to-weight-max-weight.xml
@@ -0,0 +1,17 @@
+<slide>
+<title>Thrust to Weight Ratio (TWR)</title>
+
+<image filename="point-rocket-to-space.png" align="right"/>
+
+<blurb>Max weight to satisfy TWR > 1:</blurb>
+<blurb>~thrust~ / ~surface_gravity~ =</blurb>
+<example result="1"><![CDATA[<?php
+function max_weight($thrust, $surface_gravity)
+{
+ return $thrust / $surface_gravity;
+}
+
+echo max_weight( 30000, 9.81 ), "\n";
+?>]]></example>
+
+</slide>
diff --git a/slides/space/thrust-to-weight-ratio-calculation.xml b/slides/space/thrust-to-weight-ratio-calculation.xml
new file mode 100644
index 0000000..5bd47f7
--- /dev/null
+++ b/slides/space/thrust-to-weight-ratio-calculation.xml
@@ -0,0 +1,17 @@
+<slide>
+<title>Thrust to Weight Ratio (TWR)</title>
+
+<image filename="point-rocket-to-space.png" align="right"/>
+
+<blurb>Max weight to satisfy TWR > 1:</blurb>
+<blurb>~thrust~ / ~surface_gravity~ =</blurb>
+<example result="1"><![CDATA[<?php
+function max_weight($thrust, $surface_gravity)
+{
+ return $thrust / $surface_gravity;
+}
+
+echo max_weight( 30000, 9.81 ), "\n";
+?>]]></example>
+
+</slide>
diff --git a/slides/space/thrust-to-weight-ratio.xml b/slides/space/thrust-to-weight-ratio.xml
new file mode 100644
index 0000000..1dada3c
--- /dev/null
+++ b/slides/space/thrust-to-weight-ratio.xml
@@ -0,0 +1,20 @@
+<slide>
+<title>Thrust to Weight Ratio (TWR)</title>
+
+<div effect="fade-out">
+<blurb>If it is > 1 one, you will take off. If it is < 1, you will not:</blurb>
+
+<video width="640" height="480" filename="twr-demo.webm" autoplay="0" align="center"/>
+</div>
+
+<div effect="fade-in-out">
+<image filename="launch2.png" align="center"/>
+<blurb align="center">Mass: 3 500 kg<br/>Engine thrust: 30kN<br/>Max acceleration: 8.751m/s²<br/>Surface TWR: 0.88</blurb>
+<break lines="7"/>
+</div>
+
+<div effect="fade-in">
+<image filename="launch3.png" align="center"/>
+<blurb align="center">Mass: 3 050 kg<br/>Engine thrust: 30kN<br/>Max acceleration: 9.851m/s²<br/>Surface TWR: 1.00</blurb>
+</div>
+</slide>
diff --git a/slides/space/to-duna.xml b/slides/space/to-duna.xml
new file mode 100644
index 0000000..65fbdc3
--- /dev/null
+++ b/slides/space/to-duna.xml
@@ -0,0 +1,5 @@
+<slide>
+<title>Getting to Duna</title>
+
+<video filename="duna.webm"/>
+</slide>
diff --git a/slides/space/twr-demo.webm b/slides/space/twr-demo.webm
new file mode 100644
index 0000000..5307cb2
Binary files /dev/null and b/slides/space/twr-demo.webm differ
diff --git a/slides/space/twr.png b/slides/space/twr.png
new file mode 100644
index 0000000..8ec95fe
Binary files /dev/null and b/slides/space/twr.png differ
diff --git a/slides/space/vis-viva-circle.png b/slides/space/vis-viva-circle.png
new file mode 100644
index 0000000..531e7f0
Binary files /dev/null and b/slides/space/vis-viva-circle.png differ
diff --git a/slides/space/vis-viva-circle2.png b/slides/space/vis-viva-circle2.png
new file mode 100644
index 0000000..80df593
Binary files /dev/null and b/slides/space/vis-viva-circle2.png differ
diff --git a/slides/space/vis-viva-equation-circle.xml b/slides/space/vis-viva-equation-circle.xml
new file mode 100644
index 0000000..4c30b95
--- /dev/null
+++ b/slides/space/vis-viva-equation-circle.xml
@@ -0,0 +1,42 @@
+<slide>
+<title>Vis-viva equation (circle)</title>
+
+<div effect="fade-out">
+<list>
+<bullet><image filename="vis-viva-circle.png"/></bullet>
+<bullet>*G* = 6.67 x 10¯¹¹</bullet>
+<bullet>*M* = 2.6457897×10¹⁹ kg</bullet>
+<!--<bullet>~µ~ = ~GM~: 1.76×10⁹ kg</bullet>-->
+<bullet>*a* = *r* = 1058 km</bullet>
+<bullet><image filename="vis-viva-circle2.png"/></bullet>
+</list>
+</div>
+<div effect="fade-in">
+<image filename="orbit3.png"/>
+</div>
+Size = 47 000 000 m
+Mass 2.6457897×10¹⁹ kg
+G
+Gravitational parameter
+1.7658000×10⁹ m³/s²
+
+G = 6.67 x 10¯¹¹
+M = 2.64 x 10¹⁹ kg
+µ = GM = 1760880000 (1.76 x 10⁹)kg
+
+r = 60+998 = 1058000m
+
+a = (360 + 1058) / 2 = 709000m
+
+v² = µ(2/r - 1/a)
+v² = 845
+v = 29
+
+
+CIRCLE:
+
+a = 1058000
+
+v² = µ(1/a) = 1664,
+v = 40.79
+</slide>
diff --git a/slides/space/vis-viva-equation.xml b/slides/space/vis-viva-equation.xml
new file mode 100644
index 0000000..0ffe2e6
--- /dev/null
+++ b/slides/space/vis-viva-equation.xml
@@ -0,0 +1,45 @@
+<slide>
+<title>Vis-viva equation</title>
+
+<div effect="fade-out">
+<image filename="minmus-only.png" align="right"/>
+<list>
+<bullet><image filename="vis-viva.png"/></bullet>
+<!-- <bullet>~v²~ = GM(2/r - 1/a)</bullet> -->
+<bullet>*G* = 6.67 x 10¯¹¹</bullet>
+<bullet>*M* = 2.6457897×10¹⁹ kg</bullet>
+<!--<bullet>~µ~ = ~GM~: 1.76×10⁹ kg</bullet>-->
+<bullet>*a* = (360 + 1058) / 2 = 709 km</bullet>
+<bullet>*r* = 998+60 = 1058 km</bullet>
+<bullet><image filename="vis-viva2.png"/></bullet>
+</list>
+</div>
+<div effect="fade-in">
+<image filename="orbit2.png"/>
+</div>
+Size = 47 000 000 m
+Mass 2.6457897×10¹⁹ kg
+G
+Gravitational parameter
+1.7658000×10⁹ m³/s²
+
+G = 6.67 x 10¯¹¹
+M = 2.64 x 10¹⁹ kg
+µ = GM = 1760880000 (1.76 x 10⁹)kg
+
+r = 60+998 = 1058000m
+
+a = (360 + 1058) / 2 = 709000m
+
+v² = µ(2/r - 1/a)
+v² = 845
+v = 29
+
+
+CIRCLE:
+
+a = 1058000
+
+v² = µ(1/a) = 1664,
+v = 40.79
+</slide>
diff --git a/slides/space/vis-viva.png b/slides/space/vis-viva.png
new file mode 100644
index 0000000..c672701
Binary files /dev/null and b/slides/space/vis-viva.png differ
diff --git a/slides/space/vis-viva2.png b/slides/space/vis-viva2.png
new file mode 100644
index 0000000..3e7506d
Binary files /dev/null and b/slides/space/vis-viva2.png differ
diff --git a/space-phpuk14.xml b/space-phpuk14.xml
new file mode 100644
index 0000000..c3514de
--- /dev/null
+++ b/space-phpuk14.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="10gen-strict.css">
+<topic>PHP</topic>
+<title>PHP in Space</title>
+<event>PHP UK Conference</event>
+<location>London, UK</location>
+<lat>45.49938</lat><lon>-73.56787</lon>
+<date>February 22nd, 2014</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<twitter>derickr</twitter>
+<joindin>http://joind.in/10709</joindin>
+
+<slide>slides/map/title.xml</slide>
+<!--
+Jebediah is an astronaut, who wants to go from his house to Eve.
+He lives a while from the space station so he needs to walk there first.
+- Calculate d.x from dms
+- Figure out the distance
+- Calculate initial bearing
+- At the half way point
+- Only in daylight, so we need to know when the sun is up
+- When it rises, is the sun up? earth_sunpos()
+- The first trip is to the Mun, so we need to calculate when it rises
+- Then we need to rocket into the sky. Thrust/Weight
+- Explain delta-v
+- Atmospheric drag
+- Three body system?
+- Mun landing
+- Minmus - plane change
+- Orbit to orbit - hoffman transfer
+- Eve landing
+- Not enough fuel to get off :-(
+-->
+<slide>slides/space/jebediah.xml</slide>
+<slide>slides/space/kerbin.xml</slide>
+<slide>slides/space/kerbin-system.xml</slide>
+<slide>slides/space/mun.xml</slide>
+<slide>slides/space/minmus.xml</slide>
+<slide>slides/space/eve.xml</slide>
+<slide>slides/space/duna.xml</slide>
+
+<slide>slides/space/getting-to-ksp.xml</slide>
+<slide>slides/space/extensions.xml</slide>
+<slide>slides/space/dms_to_decimal.xml</slide>
+<slide>slides/space/decimal_to_dms.xml</slide>
+<slide>slides/space/distance.xml</slide>
+<slide>slides/space/distance-vincenty.xml</slide>
+<slide>slides/space/kerbin.xml</slide>
+<slide>slides/space/distance-on-kerbin.xml</slide>
+<slide>slides/space/direction.xml</slide>
+<slide>slides/space/something-about-the-line.xml</slide>
+
+<slide>slides/space/kerbals-like-flight-at-day.xml</slide>
+<slide>slides/space/sun-position.xml</slide>
+<slide>slides/space/thrust-to-weight-ratio.xml</slide>
+<slide>slides/space/thrust-to-weight-ratio-calculation.xml</slide>
+<slide>slides/space/thrust-to-weight-max-weight.xml</slide>
+<slide>slides/space/get-it-right.xml</slide>
+
+<slide>slides/space/delta-v.xml</slide>
+<slide>slides/space/delta-v-specific-impulse.xml</slide>
+<slide>slides/space/delta-v-specific-calculation.xml</slide>
+
+<slide>slides/space/orbital-transfers.xml</slide>
+<slide>slides/space/vis-viva-equation.xml</slide>
+<slide>slides/space/vis-viva-equation-circle.xml</slide>
+
+<slide>slides/space/to-duna.xml</slide>
+<slide>slides/space/still-to-do.xml</slide>
+<slide>slides/space/bill-explosion.xml</slide>
+<slide>slides/space/resources.xml</slide>
+
+</presentation>