Finished section 2!

This commit is contained in:
Connor
2022-01-08 19:21:58 -07:00
parent 678b0438db
commit 5c0232dbd7
3 changed files with 692 additions and 19 deletions

535
LaTeX/flowcharts/kepler.svg Normal file
View File

@@ -0,0 +1,535 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="11in"
height="8.5in"
viewBox="0 0 279.4 215.9"
version="1.1"
id="svg5"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
sodipodi:docname="kepler.svg"
inkscape:export-filename="/home/connor/projects/thesis/LaTeX/fig/kepler.png"
inkscape:export-xdpi="300"
inkscape:export-ydpi="300"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:document-units="mm"
showgrid="false"
units="in"
showborder="true"
inkscape:showpageshadow="false"
inkscape:snap-smooth-nodes="false"
inkscape:snap-intersection-paths="true"
inkscape:snap-grids="false"
inkscape:snap-object-midpoints="false"
inkscape:zoom="1.4361764"
inkscape:cx="566.78273"
inkscape:cy="346.05776"
inkscape:window-width="1912"
inkscape:window-height="1039"
inkscape:window-x="1920"
inkscape:window-y="33"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2">
<marker
style="overflow:visible;"
id="marker78240"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;"
id="path78238" />
</marker>
<marker
style="overflow:visible"
id="marker78230"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mstart"
inkscape:isstock="true">
<path
transform="scale(0.6) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round"
id="path78228" />
</marker>
<marker
style="overflow:visible;"
id="marker7218"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;"
id="path7216" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Mstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mstart"
inkscape:isstock="true">
<path
transform="scale(0.6) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round"
id="path1892" />
</marker>
<marker
style="overflow:visible;"
id="marker6814"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;"
id="path6812" />
</marker>
<marker
style="overflow:visible;"
id="Arrow2Mend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;"
id="path1895" />
</marker>
<marker
style="overflow:visible;"
id="Arrow2Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="scale(1.1) rotate(180) translate(1,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;"
id="path1889" />
</marker>
<marker
style="overflow:visible;"
id="Arrow1Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1871" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
style="fill:#5fd35f;stroke:#55ddff;stroke-width:0.472389;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
d="m 682.78696,207.41832 c -1.09237,0.8287 -2.55888,2.07069 -1.88935,3.62091 12.72215,40.24259 25.67916,80.41044 38.52508,120.61373 0.48879,1.34788 2.00367,1.11034 3.13933,1.01693 2.29264,-0.1731 4.66561,0.23899 6.55565,1.61488 2.74264,1.80611 4.42192,5.00393 4.43959,8.28027 0.18369,1.41388 1.74,1.58933 2.88857,1.45188 23.32499,-0.003 46.64998,-0.005 69.97497,-0.008 1.60502,-0.0567 1.54282,-2.01462 2.72162,-2.71705 0.91267,-0.62616 2.37301,-0.87236 2.49815,-2.21946 0.19834,-0.8154 -0.41606,-1.50841 -0.84438,-2.03654 -0.0528,-1.76867 -0.26337,-3.57231 -0.099,-5.32561 0.67291,-1.20751 0.0711,-2.50284 -0.29091,-3.68099 -0.28034,-4.75334 -1.66225,-9.36637 -2.99489,-13.91308 -6.46901,-20.8521 -19.32612,-39.24086 -34.87186,-54.36547 -21.49281,-20.86826 -47.81733,-36.15274 -75.35336,-47.59836 -4.29215,-1.75642 -8.60984,-3.49369 -12.98409,-5.01227 -0.54219,-0.15818 -0.9407,0.024 -1.41515,0.2783 z m 42.7683,114.94061 c -1.24556,0.0932 0.09,-0.83707 0,0 z"
id="path239901"
transform="scale(0.26458333)" />
<path
style="fill:#55ddff;stroke:#55ddff;stroke-width:2.91779532;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
d="m 683.04995,339.62571 -2.10796,-2.12215 0.16516,-61.9756 0.16517,-61.97559 18.83052,58.84681 18.83052,58.84682 -2.82499,2.50333 c -1.98763,1.76132 -3.0501,3.34496 -3.58441,5.34268 l -0.7594,2.83934 -13.30333,-0.0917 -13.30333,-0.0917 z m 19.26928,-28.77903 c 0,-0.35617 -0.28518,-0.64759 -0.63372,-0.64759 -0.38992,0 -0.35717,-0.60694 0.0851,-1.5777 0.39536,-0.86773 0.54397,-2.03341 0.33023,-2.59039 -0.48877,-1.27374 -3.66724,-1.36208 -3.66724,-0.10192 0,0.59193 0.45341,0.7922 1.2952,0.57206 0.71235,-0.18628 1.29519,-0.0585 1.29519,0.28406 0,0.34252 -0.58284,1.15022 -1.29519,1.79489 -1.89794,1.71761 -1.63204,2.91419 0.64759,2.91419 1.06854,0 1.9428,-0.29142 1.9428,-0.6476 z m -8.41877,-3.01455 c 0,-0.99729 0.0823,-0.99729 1.18429,0 0.65136,0.58947 1.72584,1.07176 2.38775,1.07176 1.04699,0 0.97853,-0.23477 -0.52655,-1.80575 l -1.73002,-1.80574 1.75604,-1.75604 c 1.53985,-1.53986 1.60468,-1.75604 0.52655,-1.75604 -0.67622,0 -1.76241,0.48229 -2.41377,1.07177 -1.1268,1.01973 -1.18429,0.95686 -1.18429,-1.2952 0,-1.67223 -0.28511,-2.36696 -0.97139,-2.36696 -0.77712,0 -0.9714,0.9714 -0.9714,4.85698 0,3.88559 0.19428,4.85698 0.9714,4.85698 0.53426,0 0.97139,-0.48229 0.97139,-1.07176 z"
id="path239308"
transform="scale(0.26458333)" />
<ellipse
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path77"
cx="144.70644"
cy="90.797829"
rx="69.896774"
ry="41.877117" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:1.6,0.8;stroke-dashoffset:0"
id="path205"
cx="144.70644"
cy="90.797829"
r="69.622986" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 144.70644,14.892184 V 166.70347 Z"
id="path1135" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 66.738119,90.797829 H 222.67475 Z"
id="path1137" />
<circle
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path1285"
cx="144.70653"
cy="90.799385"
r="1" />
<circle
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path1285-3"
cx="179.89606"
cy="90.799385"
r="1" />
<circle
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path1285-3-7"
cx="179.89606"
cy="54.425362"
r="1" />
<circle
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path1285-3-7-5"
cx="179.89606"
cy="30.521255"
r="1" />
<circle
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path1285-3-7-5-3"
cx="214.57874"
cy="90.969757"
r="1" />
<circle
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path1285-3-6"
cx="111.35923"
cy="90.799385"
r="1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 144.70644,90.797829 179.89606,30.521256 V 90.799384 Z"
id="path1864" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
d="m 155.37536,89.913546 c 0,0 0.86315,-5.904653 -4.49532,-7.075844"
id="path1866" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 179.89606,54.42536 11.579,36.171113 z"
id="path2185" />
<circle
style="fill:#0000ff;stroke:#000000;stroke-width:0.4;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path1499"
cx="191.47507"
cy="90.596474"
r="2.8067961" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6814)"
d="m 196.57172,89.709224 c 0,0 -0.51831,-5.025607 -5.44376,-4.367408"
id="path6810" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-linejoin:miter"
id="rect6912"
width="3.4127772"
height="3.4127772"
x="176.48328"
y="87.386604" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:0.8,1.59999999;stroke-dashoffset:0"
d="m 179.89606,90.799384 v 8.211987 z"
id="path7137" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:0.8,1.59999999;stroke-dashoffset:0"
d="M 191.47506,90.596473 V 105.44434 Z"
id="path7139" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:0.8,1.59999999;stroke-dashoffset:0"
d="M 214.57873,90.969755 V 116.7699 Z"
id="path7141" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:0.8,1.59999999;stroke-dashoffset:0"
d="m 179.89606,54.42536 h -10.791 z"
id="path7143" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:0.8,1.59999999;stroke-dashoffset:0"
d="m 179.89606,30.521256 h 43.21083 z"
id="path7145" />
<path
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:0.8,1.59999999;stroke-dashoffset:0"
d="M 144.76101,48.794 H 95.996478 Z"
id="path7180" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#marker7218)"
d="m 101.10909,48.858169 v 41.93966"
id="path7212" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#marker7218)"
d="M 172.48932,54.347093 V 90.799056"
id="path7339" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#marker7218)"
d="m 144.68862,95.379856 h 35.20744"
id="path7341" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#marker7218)"
d="m 144.71652,103.94751 h 46.75854"
id="path7343" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#marker7218)"
d="m 144.67203,114.30076 h 69.9067"
id="path7345" />
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="176.89294"
y="116.85059"
id="text16281"><tspan
sodipodi:role="line"
id="tspan16279"
style="font-size:3.175px;stroke-width:0.264583"
x="176.89294"
y="116.85059">a</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="165.22083"
y="107.9572"
id="text26263"><tspan
sodipodi:role="line"
id="tspan26261"
style="stroke-width:0.264583"></tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="167.08392"
y="106.60025"
id="text41753"><tspan
sodipodi:role="line"
id="tspan41751"
style="font-size:3.175px;stroke-width:0.264583"
x="167.08392"
y="106.60025">ae</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="158.1091"
y="98.358513"
id="text48543"><tspan
sodipodi:role="line"
id="tspan48541"
style="font-size:3.175px;stroke-width:0.264583"
x="158.1091"
y="98.358513">acos(E)</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="155.18155"
y="85.501823"
id="text52381"><tspan
sodipodi:role="line"
id="tspan52379"
style="font-size:3.175px;stroke-width:0.264583"
x="155.18155"
y="85.501823">E</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="196.15579"
y="86.180817"
id="text70799"><tspan
sodipodi:role="line"
id="tspan70797"
style="font-size:3.175px;stroke-width:0.264583"
x="196.15579"
y="86.180817">υ</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-start:url(#marker78230);marker-end:url(#marker78240)"
d="m 179.89606,95.379854 h 11.579"
id="path78226" />
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="180.64381"
y="98.320885"
id="text84296"><tspan
sodipodi:role="line"
id="tspan84294"
style="font-size:3.175px;stroke-width:0.264583"
x="180.64381"
y="98.320885">rcos(υ)</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="187.06061"
y="72.504166"
id="text96020"><tspan
sodipodi:role="line"
id="tspan96018"
style="stroke-width:0.264583;font-size:3.175px"
x="187.06061"
y="72.504166">r</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="-78.814697"
y="171.40031"
id="text102558"
transform="rotate(-90)"><tspan
sodipodi:role="line"
id="tspan102556"
style="stroke-width:0.264583;font-size:3.175px"
x="-78.814697"
y="171.40031">rsin(υ)</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="196.8791"
y="75.566528"
id="text125862"><tspan
sodipodi:role="line"
id="tspan125860"
style="font-size:3.175px;stroke-width:0.264583"
x="196.8791"
y="75.566528">k</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="182.85774"
y="81.685913"
id="text129232"><tspan
sodipodi:role="line"
id="tspan129230"
style="font-size:3.175px;stroke-width:0.264583"
x="182.85774"
y="81.685913">k<tspan
style="font-size:65%;baseline-shift:sub"
id="tspan144096">2</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="181.26367"
y="53.410671"
id="text166154"><tspan
sodipodi:role="line"
id="tspan166152"
style="stroke-width:0.264583"
x="181.26367"
y="53.410671">B</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="176.30115"
y="94.058624"
id="text179952"><tspan
sodipodi:role="line"
id="tspan179950"
style="stroke-width:0.264583"
x="176.30115"
y="94.058624">C</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="194.20917"
y="94.516365"
id="text184464"><tspan
sodipodi:role="line"
id="tspan184462"
style="stroke-width:0.264583"
x="194.20917"
y="94.516365">Primary</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="216.1391"
y="89.377853"
id="text189808"><tspan
sodipodi:role="line"
id="tspan189806"
style="stroke-width:0.264583"
x="216.1391"
y="89.377853">P</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="141.03665"
y="94.09967"
id="text197018"><tspan
sodipodi:role="line"
id="tspan197016"
style="stroke-width:0.264583"
x="141.03665"
y="94.09967">O</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="180.54257"
y="28.544504"
id="text202206"><tspan
sodipodi:role="line"
id="tspan202204"
style="stroke-width:0.264583"
x="180.54257"
y="28.544504">B'</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="160.72346"
y="58.705368"
id="text213948"><tspan
sodipodi:role="line"
id="tspan213946"
style="stroke-width:0.264583"
x="160.72346"
y="58.705368">a</tspan></text>
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583;fill:#000000"
x="101.87127"
y="70.425194"
id="text220678"><tspan
sodipodi:role="line"
id="tspan220676"
style="stroke-width:0.264583;fill:#000000"
x="101.87127"
y="70.425194">b</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker78230);marker-end:url(#marker78240)"
d="M 220.51863,90.709561 V 30.521256"
id="path240119" />
<text
xml:space="preserve"
style="font-size:3.175px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
x="54.715576"
y="-221.37309"
id="text244369"
transform="rotate(90)"><tspan
sodipodi:role="line"
id="tspan244367"
style="stroke-width:0.264583"
x="54.715576"
y="-221.37309">asin(E)</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -131,6 +131,8 @@ Monotonic Basin Hopping}
\tableofcontents
\listoffigures
\newpage
\section{Introduction}
@@ -230,37 +232,173 @@ Monotonic Basin Hopping}
Where $\mu = G m_1$ is the specific gravitational parameter for our primary body of interest.
\subsubsection{Kepler's Equations}
\subsubsection{Kepler's Laws and Equations}
Now that we've fully qualified the forces acting within the Two Body Problem, we can note
that the Problem is actually analytically solvable in the case when the position of the
spacecraft and the $\mu$ value of the primary body are known. This can be easily observed by
noting that there are three one-dimensional equations (one for each component of the
three-dimensional position) and three unknowns (the three components of the second
derivative of the position).
% TODO: Can I segue better from 2BP to Keplerian geometry?
Therefore, we can use this analytically solvable force model to model the spacecraft's
motion in time, a more useful re-interpretation of the equations of motion.
Now that we've fully qualified the forces acting within the Two Body Problem, we can concern
ourselves with more practical applications of this as a force model. It should be noted,
firstly, that the spacecraft's position and velocity (given an initial position and velocity
and of course the $\mu$ value of the primary body) is actually analytically solvable for all
future points in time. This can be easily observed by noting that there are three
one-dimensional equations (one for each component of the three-dimensional position) and
three unknowns (the three components of the second derivative of the position).
In the early 1600s, Johannes Kepler produced just such a solution. By taking advantages of
what is also known as ``Kepler's Laws'' which are:
\begin{enumerate}
\item Each planet's orbit is an ellipse with the Sun at one of the foci. This can be
expanded to any orbit by re-wording as ``all orbital paths follow a conic section
(circle, ellipse, parabola, or hyperbola) with a primary body at one of the foci''.
\item The area swept out by the imaginary line connecting the primary and secondary
bodies increases linearly with respect to time. This implies that the magnitude of the
orbital speed is not constant.
\item The square of the orbital period is proportional to the cube of the semi-major
axis of the orbit, regardless of eccentricity. Specifically, the relationship is: $T = 2
\pi \sqrt{\frac{a^3}{\mu}}$ where $T$ is the period and $a$ is the semi-major axis.
\end{enumerate}
\subsection{Analytical Solutions to Kepler's Equations}
Discuss how, since the 2BP is analytically solvable, there exists algorithms for solving
these equations.
Kepler was able to produce an equation to represent the angular displacement of an orbiting
body around a primary body as a function of time, which we'll derive now for the elliptical
case. Since the total area of an ellipse is the product of $\pi$, the semi-major axis, and
the semi-minor axis ($\pi a b$), we can relate (by Kepler's second law) the area swept out
by an orbit as a function of time:
\begin{equation}\label{swept}
\frac{\Delta t}{T} = \frac{k}{\pi a b}
\end{equation}
This leaves just one unknown variable $k$, which we can determine through use of the
geometric auxiliary circle, which is a circle with radius equal to the ellipse's semi-major
axis and center directly between the two foci, as in Figure~\ref{aux_circ}.
\begin{figure}
\centering
\includegraphics[width=0.8\textwidth]{LaTeX/fig/kepler}
\caption{Geometric Representation of Auxiliary Circle}\label{aux_circ}
\end{figure}
In order to find the area swept by the spacecraft, $k$, we can take advantage of the fact
that that area is the triangle $k_1$ subtracted from the elliptical segment $PCB$:
\begin{equation}\label{areas_eq}
k = area(seg_{PCB}) - area(k_1)
\end{equation}
Where the area of the triangle $k_1$ can be found easily using geometric formulae:
\begin{align}
area(k_1) &= \frac{1}{2} \left( ae - a \cos E \right) \left( \frac{b}{a} a \sin E \right) \\
&= \frac{ab}{2} \left(e \sin E - \cos E \sin E \right)
\end{align}
Now we can find the area for the elliptical segment $PCB$ by first finding the circular
segment $POB'$, subtracting the triangle $OB'C$, then applying the fact that an ellipse is
merely a vertical scaling of a circle by the amount $\frac{b}{a}$.
\begin{align}
area(PCB) &= \frac{b}{a} \left( \frac{a^2 E}{2} - \frac{1}{2} \left( a \cos E \right)
\left( a \sin E \right) \right) \\
&= \frac{abE}{2} - \frac{ab}{2} \left( \cos E \sin E \right) \\
&= \frac{ab}{2} \left( E - \cos E \sin E \right)
\end{align}
By substituting the two areas back into Equation~\ref{areas_eq} we can get the $k$ area
swept out by the spacecraft:
\begin{equation}
k = \frac{ab}{2} \left( E - e \sin E \right)
\end{equation}
Which we can then substitute back into the equation for the swept area as a function of
time (Equation~\ref{swept}):
\begin{equation}
\frac{\Delta t}{T} = \frac{E - e \sin E}{2 \pi}
\end{equation}
Which is, effectively, Kepler's equation. It is commonly known by a different form:
\begin{align}
M &= E - e \sin E \\
&= \sqrt{\frac{\mu}{a^3}} \Delta t
\end{align}
Where we've defined the mean anomaly as $M$ and used the fact that $T =
\sqrt{\frac{a^3}{\mu}}$. This provides us a useful relationship between Eccentric Anomaly
($E$) which can be related to spacecraft position, and time, but we still need a useful
algorithm for solving this equation.
\subsubsection{LaGuerre-Conway Algorithm}
Step through the LaGuerre-Conway algorithm, as it's used in this implementation.
For this application, I used an algorithm known as the LaGuerre-Conway algorithm, which was
presented in 1986 as a faster algorithm for directly solving Kepler's equation and has been
in use in many applications since. This algorithm is known for its convergence robustness
and also its speed of convergence when compared to higher order Newton methods.
This thesis will omit a step-through of the algorithm itself, but the code will be present
in the Appendix.
\subsection{Non-Linear Problem Optimization}
Discuss the concept of a non-linear problem as it related to the study of optimization.
Now we can consider the formulation of the problem in a more useful way. For instance, given a
desired final state in position and velocity we can relatively easily determine the initial
state necessary to end up at that desired state over a pre-defined period of time by solving
Kepler's equation. In fact, this is often how impulsive trajectories are calculated since,
other than the impulsive thrusting event itself, the trajectory is entirely natural.
However, often in trajectory design we want to consider a number of other inputs. For
instance, a low thrust profile, a planetary flyby, the effects of rotating a solar panel on
solar radiation pressure, etc. Once these inputs have been accepted as part of the model, the
system is generally no longer analytically solvable, or, if it is, is too complex to calculate
directly.
Therefore an approach is needed, in trajectory optimization and many other fields, to optimize
highly non-linear, unpredictable systems such as this. The field that developed to approach
this problem is known as Non-Linear Problem (NLP) Optimization. In these cases, generally
speaking, direct methods are impossible, so a number of tools have been developed to optimize
NLPs in the general case, via indirect, iterative methods.
\subsubsection{Non-Linear Solvers}
Mention common non-linear solvers (Ipopt, SNOPT, etc.).
For these types of non-linear, constrained problems, a number of tools have been developed
that act as frameworks for applying a large number of different algorithms. This allows for
simple testing of many different algorithms to find what works best for the nuances of the
problem in question.
\subsubsection{Newton Trust-Region Method}
Discuss how the Newton Trust-Region method works.
One of the most common of these NLP optimizers is SNOPT, which is a proprietary package
written primarily using a number of Fortran libraries by the Systems Optimization Laboratory
at Stanford University. It uses a sparse sequential quadratic programming approach.
Another common NLP optimization packages (and the one used in this implementation) is the
Interior Point Optimizer or IPOPT. It can be used in much the same way as SNOPT and uses an
Interior Point Linesearch Filter Method and was developed as an open-source project by the
organization COIN-OR under the Eclipse Public License.
Both of these methods utilize similar approaches to solve general constrained non-linear
problems iteratively. Both of them can make heavy use of derivative Jacobians and Hessians
to improve the convergence speed and both have been ported for use in a number of
programming languages, including in Julia, which was used for this project.
This is by no means an exhaustive list, as there are a number of other optimization
libraries that utilize a massive number of different algorithms. For the most part, the
libraries that port these are quite modular in the sense that multiple algorithms can be
tested without changing much source code.
\subsubsection{Linesearch Method}
I may take this section out, because I'm not currently using a linesearch. But I would cover
the additions of linesearch methods.
As mentioned above, this project utilized IPOPT which leveraged an Interior Point Linesearch
method. A linesearch algorithm is one which attempts to find the optimum of a non-linear
problem by first taking an initial guess $x_k$. The algorithm then determines a step
direction (in this case through the use of automatic differentiation to calculate the
derivatives of the non-linear problem) and a step length. The linesearch algorithm then
continues to step the initial guess, now labeled $x_{k+1}$ after the addition of the
``step'' vector and iterates this process until predefined termination conditions are met.
In this case, the IPOPT algorithm was used, not as an optimizer, but as a solver. For
reasons that will be explained in the algorithm description in Section~\ref{algorithm} it
was sufficient merely that the non-linear constraints were met, therefore optimization (in
the particular step in which IPOPT was used) was unnecessary.
\section{Low-Thrust Considerations} \label{low_thrust}
Highlight the differences between high and low-thrust mission profiles.

View File

@@ -55,7 +55,7 @@ end
log(_::Nothing, _::Vector{Mission}, _::Vector{Body}) = println("No Mission Found...")
planets = [Earth, Venus, Venus Jupiter, Saturn]
planets = [Earth, Venus, Venus, Jupiter, Saturn]
best, archive = mbh(planets)
log(best, archive, planets)