Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Analysis of Walker constellations (star pattern) following the 1970 report.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Walker star patterns\n",
"\n",
"We follow Walker \"Circular orbit patterns providing continuous whole Earth coverage\", 1970."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we derive again the equations as done in Appendix B:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from sympy import cos, sin, tan, csc, cot, acos, atan, pi\n",
"from sympy import init_printing, symbols, Eq, solve\n",
"from sympy.core.expr import UnevaluatedExpr\n",
"from sympy.printing.pycode import NumPyPrinter\n",
"\n",
"init_printing()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"PB, RP, AR, BR, BRP, ARP, BM, PM, POpM, OpM = symbols(\"PB, RP, AR, BR, BRP, ARP, BM, PM, POpM, OpM\", real=True)\n",
"a, b, α, β, γ = symbols(\"a, b, α, β, γ\", real=True)\n",
"n_, p_ = symbols(\"n, p\", natural=True)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\cos{\\left(PB \\right)} = \\sin{\\left(BR \\right)} \\sin{\\left(RP \\right)} \\cos{\\left(BRP \\right)} + \\cos{\\left(BR \\right)} \\cos{\\left(RP \\right)}$"
],
"text/plain": [
"cos(PB) = sin(BR)⋅sin(RP)⋅cos(BRP) + cos(BR)⋅cos(RP)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eq_b1 = Eq(cos(PB), cos(BR) * cos(RP) + sin(BR) * sin(RP) * cos(BRP))\n",
"eq_b1"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\tan{\\left(RP \\right)} = \\frac{\\cos{\\left(AR \\right)} - \\cos{\\left(BR \\right)}}{- \\sin{\\left(AR \\right)} \\cos{\\left(ARP \\right)} + \\sin{\\left(BR \\right)} \\cos{\\left(BRP \\right)}}$"
],
"text/plain": [
" cos(AR) - cos(BR) \n",
"tan(RP) = ────────────────────────────────────\n",
" -sin(AR)⋅cos(ARP) + sin(BR)⋅cos(BRP)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eq_b2 = Eq(tan(RP), (cos(AR) - cos(BR)) / (sin(BR) * cos(BRP) - sin(AR) * cos(ARP)))\n",
"eq_b2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"General case:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\sin{\\left(2 γ \\right)} \\cos{\\left(a \\right)} \\left(\\cos{\\left(\\frac{\\pi}{n} \\right)} - \\cos{\\left(- b + \\operatorname{atan}{\\left(\\frac{\\tan{\\left(a \\right)}}{\\cos{\\left(2 γ \\right)}} \\right)} + \\frac{\\pi}{n} \\right)} \\sin{\\left(\\operatorname{acos}{\\left(\\sin{\\left(2 γ \\right)} \\cos{\\left(a \\right)} \\right)} \\right)}\\right)^{-1}$"
],
"text/plain": [
" \n",
" ⎛ ⎛π⎞ ⎛ ⎛ tan(a) ⎞ π⎞ \n",
"sin(2⋅γ)⋅cos(a)⋅⎜cos⎜─⎟ - cos⎜-b + atan⎜────────⎟ + ─⎟⋅sin(acos(sin(2⋅γ)⋅cos(a\n",
" ⎝ ⎝n⎠ ⎝ ⎝cos(2⋅γ)⎠ n⎠ \n",
"\n",
" -1\n",
"\n",
")))⎟ \n",
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tan_RP = eq_b2.subs({\n",
" BR: pi / 2,\n",
" ARP: UnevaluatedExpr(atan(tan(a) / cos(2 * γ)) + pi / n_ - b),\n",
" cos(AR): cos(a) * cos(pi / 2 - 2 * γ),\n",
" sin(AR): sin(UnevaluatedExpr(acos(cos(a) * cos(pi / 2 - 2 * γ)))),\n",
" BRP: pi / n_\n",
"}).rhs\n",
"tan_RP"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\cos{\\left(PB \\right)} = \\cos{\\left(\\frac{\\pi}{n} \\right)} \\sin{\\left(\\operatorname{atan}{\\left(\\sin{\\left(2 γ \\right)} \\cos{\\left(a \\right)} \\left(\\cos{\\left(\\frac{\\pi}{n} \\right)} - \\cos{\\left(- b + \\operatorname{atan}{\\left(\\frac{\\tan{\\left(a \\right)}}{\\cos{\\left(2 γ \\right)}} \\right)} + \\frac{\\pi}{n} \\right)} \\sin{\\left(\\operatorname{acos}{\\left(\\sin{\\left(2 γ \\right)} \\cos{\\left(a \\right)} \\right)} \\right)}\\right)^{-1} \\right)} \\right)}$"
],
"text/plain": [
" ⎛ ⎛ \n",
" ⎛π⎞ ⎜ ⎜ ⎛ ⎛π⎞ ⎛ ⎛ tan(a) ⎞ \n",
"cos(PB) = cos⎜─⎟⋅sin⎜atan⎜sin(2⋅γ)⋅cos(a)⋅⎜cos⎜─⎟ - cos⎜-b + atan⎜────────⎟ + \n",
" ⎝n⎠ ⎝ ⎝ ⎝ ⎝n⎠ ⎝ ⎝cos(2⋅γ)⎠ \n",
"\n",
" -1⎞⎞\n",
"π⎞ ⎞ ⎟⎟\n",
"─⎟⋅sin(acos(sin(2⋅γ)⋅cos(a)))⎟ ⎟⎟\n",
"n⎠ ⎠ ⎠⎠"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eq_d = eq_b1.subs({\n",
" BR: pi / 2,\n",
" ARP: UnevaluatedExpr(atan(tan(a) / cos(2 * γ)) + pi / n_ - b),\n",
" cos(AR): cos(a) * cos(pi / 2 - 2 * γ),\n",
" sin(AR): sin(UnevaluatedExpr(acos(cos(a) * cos(pi / 2 - 2 * γ)))),\n",
" BRP: pi / n_,\n",
" RP: UnevaluatedExpr(atan(tan_RP)),\n",
"})\n",
"eq_d"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\operatorname{acos}{\\left(\\cos{\\left(\\frac{\\pi}{n} \\right)} \\sin{\\left(\\operatorname{atan}{\\left(\\sin{\\left(2 γ \\right)} \\cos{\\left(a \\right)} \\left(\\cos{\\left(\\frac{\\pi}{n} \\right)} - \\cos{\\left(- b + \\operatorname{atan}{\\left(\\frac{\\tan{\\left(a \\right)}}{\\cos{\\left(2 γ \\right)}} \\right)} + \\frac{\\pi}{n} \\right)} \\sin{\\left(\\operatorname{acos}{\\left(\\sin{\\left(2 γ \\right)} \\cos{\\left(a \\right)} \\right)} \\right)}\\right)^{-1} \\right)} \\right)} \\right)}$"
],
"text/plain": [
" ⎛ ⎛ ⎛ \n",
" ⎜ ⎛π⎞ ⎜ ⎜ ⎛ ⎛π⎞ ⎛ ⎛ tan(a) ⎞ π⎞ \n",
"acos⎜cos⎜─⎟⋅sin⎜atan⎜sin(2⋅γ)⋅cos(a)⋅⎜cos⎜─⎟ - cos⎜-b + atan⎜────────⎟ + ─⎟⋅si\n",
" ⎝ ⎝n⎠ ⎝ ⎝ ⎝ ⎝n⎠ ⎝ ⎝cos(2⋅γ)⎠ n⎠ \n",
"\n",
" -1⎞⎞⎞\n",
" ⎞ ⎟⎟⎟\n",
"n(acos(sin(2⋅γ)⋅cos(a)))⎟ ⎟⎟⎟\n",
" ⎠ ⎠⎠⎠"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d = acos(eq_d.rhs)\n",
"d"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"np.arccos(np.cos(np.pi/n)*np.sin(np.arctan(np.sin(2*γ)*np.cos(a)*(np.cos(np.pi/n) - np.cos(-b + np.arctan(np.tan(a)/np.cos(2*γ)) + np.pi/n)*np.sin(np.arccos(np.sin(2*γ)*np.cos(a))))**(-1.0))))\n"
]
}
],
"source": [
"print(NumPyPrinter().doprint(d).replace(\"numpy.\", \"np.\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At the passing points, case $a = b$ (Appendix B, equation B-4):"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAAAXCAYAAAC8hcCtAAANfUlEQVR4nO2de7RVRR3HP1dQMEGv4gsRQUQkQTteNMuV+EoRIxNLSVfKIx9LDctS8YErjHz0WNljGWnls1yKEpEYKmpqipSaVxQ1n6A8FDFALyoI0h/fmXXmzN2Ps/fZh3vOYX/XYs11z+zZv/nN7ze/x8wcmyZNmkSOHDly5MhRT9isownIEDcDy4CtOpqQGNQanUOADcBpHU1IAtQaDytFvYwnis6zkByN26gU1R7qTZ+ykL2oMcfxI3V9oxivA4BTgKuB1R1MSxSqQedOwHrgNynffxr4KzAZ6JYRTdVE1jw8DynHyRn0lQaNIrtDTPn0RqOoOqi2PvVF8nZTyv6zRFayFzXmOH6krm8U43UF8D4wpaMJiUE16Pwamse/VNDHVcDOwLmZUFRdZM3Djl50G0V2hwAfA/M3GkXVwaakT1nKXtSY4/iRqr4RjNcA4MvAVOCjDqYlCtWicyTwHvBoBX38G3gJOJPalolq8HAI0Aa8nFF/SdAostsFGATMA9ZtRLqqgU1Fn7KWvagxx/EjVX1Qw5OBPyNl/gBYATwJjI0g/FDgDmARsAZYCtwHHOe1awLGAI8gAfkYeAYYHdLvwcgDes20XWYGcpXTZpzp944I+j5v6hc79N0PnBjQ9kQkuKvQpD4HXIwU1MexwIOmvzXAEjO2swPaRtH5FZRKKOfffs57WwOHA3ejVAfAkabdVcBg4DbgHbRAzwEODPg+wO3Abub9INQ6DyGZ7F6N+DQQpSM+pcjjU1L0B8l53wiyC7APsDmKXgvANKTfqw2tgyPGVw1kqU+QTqeC9GkS8Ib5e7RHxxin3RjEw9fRPL4PPA58K+A7fSmmIfua7y5H6+VTwIiAdyB6TkcCnwD/AvqEvH+5+e4ZzrOoNSRufUlc39lr0B24BSnoP5Gx2BGF0jeYv3/itG8CrgG+ixh2D1KGPsBRwEEoXwmwpfn7KOSh3Qx0RYy6CegFXOn0fQkKa99EhnA5ykfvDwxDSgnyHtYDc0MGfToKi9cDfwNeMePYHynqVKftlabf5UhA24Dh5vkwQ/ta0/YM4DrgbSTsy02/+6LF7bceHVF0rjI0noXSLnc5dQOBUcBjwGzgWaduBLAFMN15ZpVxAJrH2YjXg4BjDA/6o8XYxeOmPBLx20U98DCp7P7H8GU0WoBmO3UPp+gPkvO+EWQXiqnXPkiOZgF/BL6I5Okhw5OVIe9njSz1CdLpVJA+PQw0o/XyWYprI0Cr8/cUQ/ejaD3tYb5zK7AXcFnAmPsgx/510247M84ZaP7+4bWPmtNlZozDgQuBc7z6fub5k8AfnOdRa0hUXar6Ju+ofDfz723vxZ7I+1yMJt/CKsw0tAi4m37dENMXmv+ejiKxSyiNnHZAIeFW5jsrkJFaDDwBHEFR6Sy2Rwq3FRLUF5H352NvJCQfoCjOz8fviqJFkKLNAd5C3q7lQWdD+wjgUooG9mnkhfVGkx1En0UcnSDeTEcGe6Lz/EK0SJ6GFgQXdyIB2x55WiAPZRTwLnA0WqQtpgHHA0PRguxiG7S4PInGb1EvPEwqu1BcxM8Ers+gvyS8byTZvQ7x8j20uDzj1N2CIln3+xsDx5GNPkE6nQrTp74o+rqZ0mjLxR4o2+RiC+QUDDV9LPb6A0V2lzvvDAPuNe8d4zwvZ067oPmcT/vIcibi04EourMIG3NcXap6P23YRntlBVn/JciaW7QAEwzxJ9P+tEobRcM1AgnTnZQaLpBAzETMajHPBgKd0CLhGy4oKlcv025pQBuQ59UZnVQJ2khe5Pxtj/j+mFIerAN+gNJK/nHNdSi8DqPPIo5OULoFSj0wKPLEf94VKdIsShXNeoljKVUykLDad32sMv3s5j2vFx4mkV0Ly1ufT2n7S8L7RpJdG3ldSKnhArjWlGGLZLVQMGWr9zypPkE6nQrTp3LgGy7QOngtkokjAuoXovl3cR/KXPnGoJw5XQO8QHsH7ViUlr2eUsMF0WOO40fiet94bYtC0rkoAlpPMSc7gFKFOc+8fxHBBsaFzYv6aRaL90zZyZTzDbHjUEg+ytDmo4cpV4T0+wVTzoqhD4pC/VBA3cto7LsjDwC0F/IZNMHXIOO8Q0jfcXRCUdme9Z63oIXmee/5kSgycFMc3YA9kSD/PeAb/UwZpBwA/0Nep4t64WES2XXp/QTtDVXaX1LeN4rsbo4M00IUZfmwxjTIYbJYQPl7VBuAP0X0ZVEwZSX6BJXpVJA+lYPdkKF6CfiQ4rinmfpeAe+0UrpPZ/EW7dfOctYjzPe3RlE+aOvnl8jBuSTknagxx/EjUb2757Uv2lzdCeVOb0dGZR0S/FMpFYRhaPB+LjUIhyAhDjuO3NOUb5pyOfAl4Ico3P0qmpjZKP1gvR97SiZMMZpNuTik3oVV7DBvZCkSqmZkWH9h6DwbHeH8HhKwR4ALKPVK4ugEKVsb8KrzrDvKpc9HnpCL45HTcI/XRxPi04aAb7QY2t8IqAMJp3/yqNmUtczDpLILkv190ALu8zZNfwWS8b5RZHcwSmndTfBJQ7vhvzCgzsIeyCoXS8poU6ByfbL9pNWpIH2KQz8kc9uiNOT9pv/1KEU4muADOCtD+ltH+yClnPUIZLxAKexFaItod+DbhBu+qDHH8SNRvWu8bkXCfRjaWHTxI1Naoe6KPLVWlJKIQndkvV8Nqe+EjNsy4L/O8+eBE5BiDEXR2wnoYl0vJHw2X9+DYKw0ZS+KExGGVabcmWAvqqfXDuRp3oL4dhA6fDIOhesDUUqUMuhsRko+h1IFKSDFafXad0IG/SGPHuuBBzkJ3VHE8AjBSriZocNXwpWmrGUeJpFdi72RHAelDNP0l5T3jSK7NmW4IKR+pCnvD6mH4DRYJWgmG32C9DoVpk9x+D7i9VjaX2Q+ifCT2UkQN6cWrvF6DaWFnwBuDGkfNeY4fiSutxa5N/I2H6a9sjZTPBpsJ7DJlDuGfMjFGjSxYWmJMUi5biR4UV0LPICOAT+GGL6TqVuKlGyvkL7tSZrhZdBpc/WHBtT1R6HzGwR7OCtRSuF0JHDbIYNrEUdnwZRBKQ5or2xDER/CTkX5C6utayI8+t2LYMWudR4mlV2Lgkdzpf0l5X2jyK41XkF7gD3RYZhXiDZeWaNgykr1CdLrVJg+2dReJ4LR35TTAuoOCXknKeLm1MI1Xr9Cwc45BK/TED7muLpU9dZ42ZC9H8phW/RA9wB2ReGnffEjFBntQvB9kwEUJ2ctCoN7o+OZLo5ATFlA8SDHfui0jY/+KEXxJsX9hg3oOOn2FCfdxRRD92VoAnzs6vx9gyknUmpoOwE/R7xyTycdRtGIu7AG/UPnWRydBVO2es/t/Rh/T2YkinhneM9bEL/nBXzDLjJBkQYU91j8NHCt8zCp7Lr1oDs0LtL2l5T3jSK71iCcROnv43VDkV0XlJrcmJeXC6Zs9Z4n1SdIr1Nh+rQC8TTsYMICUx7qPR9Gdr+XGDenFq8iY3sCOqQxhfbOnouwMcfVpaq3acN3Uch8OLqY9gDymoabxp+ivQE3L30ROkxxOwpl5yPPdD+kWD2dtpeidMRMdDdlCfA5NCEL0WapDdfHo2hsLvJ22tBCcqypH0dpqnIa8HXTl5+afAHl9X+HmD4DeYE9UPrxfaTIoBTDT1Fo/Dy6G7La8GAwivp+5vQ93dA2FwlcEzrSfADyxB7waImis2BK31O03uwgM5ZF5jvHofD9HadtF7TIzSP4AE3czyAdhQTVV+Ba52Ea2XX5cIWhbTWS4TtT9JeW9/Uuu51RlPoMOgDSiu4udUF7SLug/bR723GkuiiYshJ9gsp0Kkyf2pBcHUzxAry9xzcP3bEbi+TwLrRWDkYnIaeiw2tZIEr2LNaiiL0/SjVODGlnETbmuLpU9e5G3jdRrr83Oqa7B8q/Xmna+WHzPcg7mIXumZyH8sYrgPO9tg+iKGsOEurvIAM3GQm/y7wZaFJ7ICN2PrK6tyGD96DX9zTE2FNDBv17dPhjpqH3AmQI36V4jNdiAvIgXzH9nWvGPhEZWFeAL0J3DlrQIjMWeeoT0KLiH0OOorOAFkXfI5yKDgpcgeYHdEG1N+1/e20wWkyC0hsQ/TNI2yAFnolOJ/modR4mlV2Q5zkeLfLj0eGgQsr+0vK+3mV3ENo3fArp93MoTTgGOQKHA78OGVs1UaByfYL08xqnT6eg9fNoJHeTKUaw89AczEHRzlnozMDxyJHJCnGyZ2FThxNovx/oImrMcfxIVe9fUq5XXIwWlhaiw9qORhZ02ovh/Ui+GRyG8WiRORh56bWMepnrclEv46kXOpNiU9ancub0MRScdKc0newjasxx/EhV3yjGqys6qTgPRX+1iizofBEdgilkRNOW6CTRHOAbGfVZTdTLXJeLehlPvdCZFJuyPsXNaRNKT79F8L6rRdSY4/iRur5zQON6xMcoFD8MbRr7v/ZRK8iCzs9mSpHujlxPbfz/hcpBvcx1uaiX8dQLnUmxKetT3JzuiQ7exEXafQkfc1RdRfWNEnnlyJEjR45sMQodyLsAnVqtKTRK5JUjR44cObLFHUT/73o6FP7PhuTIkSNHjhw1j9x45ciRI0eOusP/AfK+uUO6Tp4KAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\operatorname{acos}{\\left(\\cos{\\left(\\frac{\\pi}{n} \\right)} \\cos{\\left(\\operatorname{atan}{\\left(\\cos{\\left(b - \\frac{\\pi}{n} \\right)} \\tan{\\left(γ \\right)} \\right)} \\right)} \\right)}$"
],
"text/plain": [
" ⎛ ⎛π⎞ ⎛ ⎛ ⎛ π⎞ ⎞⎞⎞\n",
"acos⎜cos⎜─⎟⋅cos⎜atan⎜cos⎜b - ─⎟⋅tan(γ)⎟⎟⎟\n",
" ⎝ ⎝n⎠ ⎝ ⎝ ⎝ n⎠ ⎠⎠⎠"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d_b4 = acos(\n",
" cos(BM) * cos(PM)\n",
").subs({\n",
" PM: UnevaluatedExpr(atan(tan(POpM) * sin(OpM))),\n",
"}).subs({\n",
" BM: pi / n_,\n",
" POpM: γ,\n",
" OpM: pi / 2 - (pi / n_ - b),\n",
"})\n",
"d_b4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For $p + n$ even (equation 3):"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\operatorname{acos}{\\left(\\cos{\\left(\\frac{\\pi}{n} \\right)} \\cos{\\left(\\operatorname{atan}{\\left(\\cos{\\left(\\frac{\\pi}{2 n} \\right)} \\tan{\\left(β \\right)} \\right)} \\right)} \\right)}$"
],
"text/plain": [
" ⎛ ⎛π⎞ ⎛ ⎛ ⎛ π ⎞ ⎞⎞⎞\n",
"acos⎜cos⎜─⎟⋅cos⎜atan⎜cos⎜───⎟⋅tan(β)⎟⎟⎟\n",
" ⎝ ⎝n⎠ ⎝ ⎝ ⎝2⋅n⎠ ⎠⎠⎠"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d_max_eq3 = d_b4.subs({\n",
" a: pi / (2 * n_),\n",
" b: pi / (2 * n_),\n",
" γ: β\n",
"})\n",
"d_max_eq3"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"np.arccos(np.cos(np.pi/n)*np.cos(np.arctan(np.cos((1/2)*np.pi/n)*np.tan(β))))\n"
]
}
],
"source": [
"print(NumPyPrinter().doprint(d_max_eq3).replace(\"numpy.\", \"np.\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For $p + n$ odd (equation 4):"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\operatorname{acos}{\\left(\\cos{\\left(\\frac{\\pi}{n} \\right)} \\cos{\\left(β \\right)} \\right)}$"
],
"text/plain": [
" ⎛ ⎛π⎞ ⎞\n",
"acos⎜cos⎜─⎟⋅cos(β)⎟\n",
" ⎝ ⎝n⎠ ⎠"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d_max_eq4 = d_b4.subs({\n",
" a: pi / n_,\n",
" b: pi / n_,\n",
" γ: β\n",
"}).subs(atan(tan(β)), β)\n",
"d_max_eq4"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"np.arccos(np.cos(np.pi/n)*np.cos(β))\n"
]
}
],
"source": [
"print(NumPyPrinter().doprint(d_max_eq4).replace(\"numpy.\", \"np.\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Inclination $\\alpha$ at which the minimum value of $d_{max}$ is obtained, for $n + p$ even:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\cos{\\left(\\frac{\\pi}{n} \\right)} \\csc{\\left(2 α \\right)} - \\cot{\\left(2 α \\right)} = \\cos{\\left(\\frac{\\pi}{2 n} \\right)} \\cot{\\left(α \\left(p - 1\\right) \\right)}$"
],
"text/plain": [
" ⎛π⎞ ⎛ π ⎞ \n",
"cos⎜─⎟⋅csc(2⋅α) - cot(2⋅α) = cos⎜───⎟⋅cot(α⋅(p - 1))\n",
" ⎝n⎠ ⎝2⋅n⎠ "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha_eq3 = Eq(\n",
" cos(pi / n_) * csc(2 * α) - cot(2 * α),\n",
" cos(pi / (2 * n_)) * cot((p_ - 1) * α)\n",
")\n",
"alpha_eq3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Same thing, for $n + p$ odd:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAAXCAYAAAAhiMklAAALFElEQVR4nO2dfbBVVRnGfxdQIPm4gZGpQ8SQUpLcLmFhg4kCRqKBmdQ0pZBF1wG9jfbBjNadrHTU0mBKNGvAssIiNBPFSiWJSKQuiGIUwzX8KjEuhIoZ0h/P2nP2WXvtz7vPufvUfmburMNee79n7ed593rXx7sPTR0dHZQoUaJEiRJZ0ae3GxCB5cA/gCN6uyEGE4BDwIW93ZCE6C3+Go2nWqLUoPdRCw2K1jfliSjfCa0raiCZCHwcuBp4MSebbwQOAksyXr8JuAO4EhiUU5tqBRd/w5EDrAL+CrwM7AXWAZ8kP19oJJ6yYBR6mJbFnBfmw/XQodRAqEU/UgubtcS5qM97CNiHePthxPlRvhNaV9RA8jV00zfmaPOD6H5/3gMbVwFHARfn0qLawcXfh4HvAu8G/gDcAKwExgG3ALcDTTl9f6PwVEuE+XC9dCg1qE0/UgubtcTlwAKgBXg64TVRvuOsK2IgOQ6Yih6ol3O0Oxt4AfhtD2w8DDwBzKeY3EE4f9uBs4FjgY8Bi4B5wFhgF/Ah4Jyc2tAIPNUSUT5cLx1KDfLvR2rVN9USn0XtHgK0JbwmynecdS4HOwlYgaLXK8CzwH3AedZ556FOeS8i9VH0UPQPadzZwG+MvVeAZ4C1wEXWefPQiGyFw8aZaGqW5O+dvuuGAKcBd6HlLQ/TzLlXoRHhj4C/A/uB9WjUaOMnwEhzrQtJ+UvKR1q7Yfzdj+7/Nev4c8BS8/nUkO8+DGgHOpHWTwHXA4cDr0Oc3WZdE8dTPZCUM0jmzx3ATvP5fKr97QLfeVE+nFWHUgOhg55r4CEtp3E2J5l2LAE+ipaT9qL7fhiYEtGWWuEB4C+mXWkQ5TuBun7WCZ9CU7aDwC9MA0YA70Id3O3mvK8jgXejznc/MMMcPwOYDvzbZ/fTwE3oYbnLXDcCOBGYC3zHd+5U8/0bHDew17SvDXgM+JmvbiwwB601/wrY7KubiZxjlWXPCzbHARvNdcuBE4APGA7GAP/yXfM7U04D1lj2kvKXho80diGavzC8asr/OOqGAfeiteFfonueiR7Ap1GHOAz4snVdFE/1QBrOkvrzg0AzcAnyrzt8Njp9n7NoAOE6lBrkr0EWTuNsTvCd1wbcjQYHrebYauB44G8h1xcJUb4TqPMHkrejDmwfMBl11H4ca8pJSPBdaLTxnDm+CHXUM4HLkAN4mI+cYDzKdvDjSN/nI9Ba3jbcG1nrzPltyIE6fHWfR4FkGfA967rZxt591vFWU04G3gv80Ve3Ei0xtKCRhYeNpjzFspWUP0jOR1q7cfy50A/4hPl8r6N+BXrYLgEWm2PXotHbDNO+ZWjj2I8wnuqBNJyl8ecHgS7ERSfV/uchiwYQrUM9NGhHHXRSdFLdidsougZpOU1i0+tPjkazynW+usXAQrS3cFnI9UVClO8E6vyBpM38+0qCooMIBk3vAL5KRXDQKOpSNJK/kOpA4tW/ShC7fZ+PAfqi6W8YWkzZaR1vDTk+AHg/cA9wwKrzZiRzqQ4iIIfxrvdjr7Ez0jqelD8PSfhIazcJfzauRst6qwmOPKaav4eoznbbjR7m09C0/SsOu2E81QNpOMvqz2HIogGE61AvDdqBN6do73KiA0mRNcjCaRJdvT5oIdVBBJRIsRAFqEZAlO8E6vx7JO8x5T0xX+CRdb+jbjtykLcAQ33Hb0Nrjo+jNchZwBsc1w835Z6I728x5WbreCtyvK3W8WkoVc1e1hoEvBV4Ej28Nkabcoej7p8EZw5J+YPkfKS1m4Q/Py5GD+oTKKXRhnfsBoJrrF5QvgmNJF1w8eRCF8n3vuLSFyEdZ1n8OQppNYBoHeqlwSi0/p/074IYe0XWIAuncTb7oyCxC7d/vmDKw0Kuh/yfg54iyneq6vwzkmZTxqWIeWKGReZnUaRqRpEL4Jso2l+EHpp2RMRa4HPAI+Y8LxPCngX40YLWT/3T+MFoL+MxNJLw4xy0jHS3w04T2hdxbUS1mvbvdNQNJJi10WzKJCl2SflIazcJfx4WAN9Cwex05Bg23odmTa4lL4CXiB4lunhyYQfB2WIUnompbzZlEs6y+HMU0mgA8TrUS4O80WzKImqQhdM4m+9AQWINwUQKUKCG6P2RvJ+DniLKd6rq/IGk25THoJFRGDwhj8I9Wn+TdZ6HW81fM3Ay2reYh4gfCzxPZb9gOG40o+n3eqo7/xYUFDqt8/sCZ6GRjt0ebxS0yfE9g9EG/FqCQaaPaYcdYLpNGcefhyR8pLUbx5+HdjQT2oo6L3ufBuQoI5HGL1l1o00b16PMFhfCeHLh9ATnpEG3KZNwltWfw5BUA4jXoZ4atJPvHkm3KYumQVZO43T1+pOukPozTWnv0/qR93PQE0T5TqDOH0g2oGyKGUQL/ydE2qkERR+DNtF2UnEkG91oKWm1adA8tGmzEo08nkeZDS60mNK1rAXBQHIKEt5e1oLK/sgjIXVNuIPM8biDVlL+bHQTzkdau3H8AXwBrcd3omU/e0/Gw0B0n67R1fVoKu/K8vIQxlM9kIaztP7spY/3DbGXRANIpkM9NWgn3z2SomqQldM4Xb0+qNlRNwxlau4C7gy5vmiI8p1AnX+P5EZE4BW4N4S8LIvvm/Jyqtf1+wLXGZt21tQU3G/rjjClNzI4hPLIj0QOZKPFlJ3W8XGmfNQ6Phs5jEu8VrTktcVR56Xx2RvwUFn7fcA6npQ/SM5HWrtx/F2BOq9NaPQTFkRAa8H7jZ0Tfcfb0DswED2CDeOpHkjDWVp/3oN4DtvAjtMAkutQTw1Gke8eSVE1yMppnK5en3Eu1b/BNQilMw9HwTrN0lVvIsp3AnX+GcnjaM1+KRoh3InyvoejNLl9qANcD1yD0m23onc5XkQjj3EoW+Fa64tXIfE2oKlfE0oJnIgepl/7zl2J3u49g2A6Y4sp7RnJMFOeYO7jKfMds4DfE5ymehtjW6h+38WD5xSuGcl0NCKyg1NS/iAdH2nsQjh/56MslIMoW8X18wddVH6/6JD5vMC056do6WG2acNQNIJcih7yjVQjjKd6IA1naf15P/ppk8koaWI7lfckvEFJlA+n0aHUIH8NesJpmM1+aI9ks7l+i2lLf/TTTEejVOae/DxTVswyf6D7BKVbLzOfd+NOR47ynUBdk+Nn5CcZw5NRZN6NiLmF6hcAP4LEGI82mXagyPsNglH3M4j88eZmDqBsqR+jkYv/hb/D0RSwi+Cb5Z1IsMFUj9rnAN9GmVBfQqOYieht0kvR5rYfE9CS1s3onQ4b29CIaQjVeyRDUXriGiri2EjCXxo+0tiFcP46CL6wZmMt1W9VD0ApmXNMO/cAPwC+iJb/bkXT3OkoacFDEp7qgaScQTp/HoOWQU4GXo8GAnOpPJxRPtxBOh1KDfLXICunYTbHo75pKeprFqP30ppQwLuG6L2RWqKDaH97kkoigIco33HWuQJJEbAIZU20otFMFnhvyo4m2WZjEixETjKZYJ54kZAHfz1Bo/BUS5Qa9D5qoYHL5ly0PDcfDU4bHVG+46wraiAZAPwZjVzOymhjG0oFbsmpTQPRCGk9WgctMvLgLysaiadaotSg91ELDVw2l6CZ1EkElxcbDVG+E1rXj2LiAHppaArauMryu/9vy7VFmv7dTPz/gVAE5MFfVoyicXiqJUoNeh+10MBl03sZ2k72aUSMItx3QuuKOiMpUaJEiUZAH5Q40EUle/T/DkWdkZQoUaJEI+A1/jf/F8pU6BN/SokSJUqUKBGOMpCUKFGiRIke4b/4T6IDbby6bAAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle \\cos{\\left(\\frac{\\pi}{n} \\right)} \\csc{\\left(2 α \\right)} - \\cot{\\left(2 α \\right)} = \\cot{\\left(α \\left(p - 1\\right) \\right)}$"
],
"text/plain": [
" ⎛π⎞ \n",
"cos⎜─⎟⋅csc(2⋅α) - cot(2⋅α) = cot(α⋅(p - 1))\n",
" ⎝n⎠ "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha_eq4 = Eq(\n",
" cos(pi / n_) * csc(2 * α) - cot(2 * α),\n",
" cot((p_ - 1) * α)\n",
")\n",
"alpha_eq4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some particular cases are derived in the paper ($p = 2$, $p = 3$) for both $p + n$ even and odd. With some tedious algebraic manipulations that are not reproduced in the paper, solutions might be obtained for larger values of $p$. A general solution is not described.\n",
"\n",
"As an alternative, a numerical solution can be found:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"from sympy import nsolve"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle 0.911738290968488$"
],
"text/plain": [
"0.911738290968488"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nsolve(\n",
" (alpha_eq4.rhs - alpha_eq4.lhs).subs({p_: 2, n_: 3}),\n",
" α,\n",
" cos(pi / 3) / 2,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle 0.911738290968488$"
],
"text/plain": [
"0.911738290968488"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(acos((cos(pi / 3) - 1) / 2) / 2).evalf() # Same solution"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAKoAAAAPCAYAAAB0p1TfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAG9UlEQVRoBe2a2XUVORCGezgOwAMR4MmAJQM7g2GIAMgADk/wxoEMgAhYMmCIAEMGMBEAzsDzfbKqUS+3VXe2p9E5ulKX/volVZWWbns4Pz8f/s8/bPDo0aMj8l3y4T9pF/iuzfnsg3w0l2ef/w3ObN//Ne5gaNLjx4+f1sevlL+QnyL70kA2q2CfN4DL1O8gO2tkpZrBgTkE/LDR9fkN8t8bWalm+ASCO6K4V5SGQT6fnWPLeQ2Z83iOnGKRzpD/vJAiQK7uPcroo4W9R26fn6rQuun6RTH9BRu+iIZXyEI3ZGlOdLu+AZOxT/Rdyt44aXeeKT9KuItvDFQAH8E9oXxbFezgI88n5M1gpb1gwevcZ1Vfp/3B8/XQz+LUJxlAE4fzbKAekidjBLvZr2TqUTygHDmp/4rsHeUtcuHk+SbZwF2b8zHyB+Rd6Q0N82AK7Lda0S5y25/2PqvyUvBssMjjWMsCovTZ7ObRpi4nuvv4JmOf0v8e4+z6UcIeXwlUQHfBjgFQFd05NKYr8UTZRnpJ22XwJUjFUf9EPqXa6qdw6DkeF8483UHwnhxBleKrJHLehdvADP3YSV3xIRtoX8wXmQFk24jzORLy+1HfUWqPWzvaWrEB6e4ZY7PNYFtbOBnOrI3S9nFApO44mUPWj12+S6XLYdCAazvBB+THdKihtpI706ohkbf6WZw7xyJYVgaQ5VPV+bl7mUtiXmM9ZJTOeS0tdoYAweMuOeGOtn1KeJyPXC9aPeSeahl7tGpRz9ooa59hj3Gm/Jjhi6PfI21inDrLCD7bd+0khxUbx1B9LIV3XdMNBnN6UR02cWDcSQyW++i8o/RYjoDy3uYOPSBL9Qs0jk/Lyd0SDp1oKpxWkC3micx+n9i+I90GMzk2d+B6Yq8lnmQx3x5+sx2etI3ApuxTO8yOs+vHLN9BM5mtSV/e1ahRyTavYa5UvSMNkcGJB/fWTNVA+k7de6Grczy2kaX6RWc1oe/iMwB9+VlbpEWPNo/8a5Srd1PkHvljoBelHT9gPQoNHu0ir3dUd7JIN6h8QeauepscL7WrL5EqbXHS9pdthO6WfVLjhKPrR+dA6vIdAIoA21rFsTIL68qPQeXE5kmDm0I/ixuYpDupAaBzDSh3d8s2pflCCU7H5Fh9aTJITslbyT7n/RY8XAabwRAnzxaPNngNtti56n6m9Fgvuz7tYSdPoHFhUHex+gXF+bYpw7mXjegjY5/0OOHL+LHLd6md9UY9dsZdEF9yBgY1Bmud8FlVCEdmcXK5m6rvTqojDQodqzxSmi8U0PcF5BnZe/krsl82Ws6ADsjt85gyAmlsq5XN3bgFw2FAhj0G6tpE3vlVxt17vsO/BvcSeTi0UPO8yVlAfCK0BNvzTXBu2qcZQ2qc4Df9mOUzUNfujGXQ/MRuG3fNkE9KOtMBV8muHu+W7kA6OV5MSqDugXMX1Qne+zwKT+Qmm0aHZfku1Ja/6LvbOPby2WuJKN9cY5FNmtF1jKkjf6I4fZDba5G2irTWn19ADNIbAdooJ5x/x0Yd+3THWW3U9WOdyybfgRMhi52s1qocsjWSCrko5KE2fqNUiiyOzFE/iVPPwB8Tet533F0/k90dyjGY5BvAlWsIZXsnlP+08o2cCmtyNxjHHkI4DKxDykVbYNoSnC+Ffr5b/bgfXLSrph13pTGgM5xBArbrGzAp+8hFljozzq4f4dKvXb5LIkhxtF48/fiNHXXX0fcDuV5z8r5EbU1KzREH9pBng2Chg8zAMEBjXFRX08jXtLoreczL300VZ2AsxoFM+U0w7sRjRma/XhWUxSJFVHbCtX7LPMDG4tHOazg5TO3CcHddw845i+LKz9xG+9inO07m5NiyfuzyHdQJvKFsDRvzcgfwznIWgrWSdncePyxfDWwd6DGycRfJ4NSv2SOxdUx0rQHKwsnwhRKlc1hbNHGcFs4GH/LF1Yh+xc7xA/LvtY+4pgTdC9rGl6MQUmqflserhL6YJ22oXVpsihOdlG/kJ2ftkxonfTvmrh/pt8tXdlTIvLx/q5OiWo5tA+I3crmMhwzMOdnV1yZ3mLlDNbgvG7FbiM/idPTi3giX90I/UUUAZ/ns20DxCB4TPDrReTpOHdUm5aa5/EK6/qtO6LUI/8Q7uc/yHH/JGoMamaeFwTJuGtTlm/ihEqc4wWZtlLbPHuNM+THD95P/BWOqBtFAOuYr+SZ5/p1PnHdEjbnrPhqOMtDaHQC1yb21h/NoekhuF8CCkz7CqZt8tW93sDEwqOtE/+K0Nk7bXJB3aC/3YeqriXaDULz8JvEfkLd/UrY9dlWPZ+fly6L2niRkzinmI3bhBxXApTgrnyrBubBj5Uvbp+K746TvlB97fH8CPheTUuaBuWMAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle 0.998937456593686$"
],
"text/plain": [
"0.998937456593686"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nsolve(\n",
" (alpha_eq3.rhs - alpha_eq3.lhs).subs({p_: 2, n_: 2}),\n",
" α,\n",
" cos(pi / 3) / 2,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle 0.998937456593686$"
],
"text/plain": [
"0.998937456593686"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(acos((cos(pi / 2) - cos(pi / 4)) / (1 + cos(pi / 4))) / 2).evalf() # Same solution"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now code these solutions to reproduce the paper results:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"def walker_star(n, p):\n",
" \"\"\"Walker star constellation.\n",
"\n",
" Parameters\n",
" ----------\n",
" n : int\n",
" Number of satellites per plane.\n",
" p : int\n",
" Total number of planes.\n",
"\n",
" \"\"\"\n",
" if (p % 2 == 0 and n % 2 == 0) or (p % 2 == 1 and n % 2 == 1):\n",
" a = b = np.pi / (2 * n)\n",
" # Solve for α from appropriate equation\n",
" if p == 2:\n",
" alpha = np.arccos(\n",
" (np.cos(np.pi / n) - np.cos(np.pi / (2 * n))) / (1 + np.cos(np.pi / (2 * n)))\n",
" ) / 2\n",
" elif p == 3:\n",
" alpha = np.arccos(\n",
" np.cos(np.pi / n) / (1 + np.cos(np.pi / (2 * n)))\n",
" ) / 2\n",
" else:\n",
" alpha = float(nsolve(\n",
" (alpha_eq3.rhs - alpha_eq3.lhs).subs({p_: p, n_: n}),\n",
" α,\n",
" cos(pi / 3) / 2,\n",
" ))\n",
" # Solve for β from equation 1\n",
" beta = np.pi / 2 - (p - 1) * alpha\n",
" # Compute d_max using equation 3\n",
" d_max = np.arccos(\n",
" np.cos(np.pi / n) * np.cos(np.arctan(np.cos(np.pi / (2 * n)) * np.tan(beta)))\n",
" )\n",
" else:\n",
" a = b = pi / n\n",
" # Solve for α from appropriate equation\n",
" if p == 2:\n",
" alpha = np.arccos(\n",
" (np.cos(np.pi / n) - 1) / 2\n",
" ) / 2\n",
" elif p == 3:\n",
" alpha = np.arccos(\n",
" np.cos(np.pi / n) / 2\n",
" ) / 2\n",
" else:\n",
" alpha = float(nsolve(\n",
" (alpha_eq4.rhs - alpha_eq4.lhs).subs({p_: p, n_: n}),\n",
" α,\n",
" cos(pi / 3) / 2,\n",
" ))\n",
" # Solve for β from equation 1\n",
" beta = np.pi / 2 - (p - 1) * alpha\n",
" # Compute d_max using equation 4\n",
" d_max = np.arccos(np.cos(np.pi / n) * np.cos(beta))\n",
"\n",
" return d_max, alpha, beta"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Results from Table 1:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"import ipytest\n",
"ipytest.autoconfig()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"........ [100%]\n",
"8 passed in 0.05s\n"
]
}
],
"source": [
"%%run_pytest[clean]\n",
"import pytest\n",
"\n",
"# Table 1\n",
"@pytest.mark.parametrize(\"p,n,expected_d_max,expected_α,expected_β\", [\n",
" (2, 3, 66.7, 52.2, 37.8),\n",
" (2, 4, 57.0, 48.4, 41.6),\n",
" (2, 5, 53.2, 47.7, 42.3),\n",
" (3, 4, 48.6, 34.7, 20.7),\n",
" (3, 5, 42.1, 32.8, 24.5),\n",
" (3, 6, 38.7, 32.2, 25.7),\n",
" (3, 7, 36.3, 31.4, 27.2),\n",
" (4, 6, 33.5, 24.7, 16.0),\n",
"])\n",
"def test_walker_star(p, n, expected_d_max, expected_α, expected_β):\n",
" d_max, α, β = walker_star(n, p)\n",
"\n",
" assert np.degrees(d_max) == pytest.approx(expected_d_max, abs=1e-1)\n",
" assert np.degrees(α) == pytest.approx(expected_α, abs=1e-0)\n",
" assert np.degrees(β) == pytest.approx(expected_β, abs=1e-0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And we reproduce Figure 9:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"from scipy.interpolate import InterpolatedUnivariateSpline"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 0, 'Number of satellites in system $np$')"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"p_arr = np.arange(2, 7)\n",
"n_arr = np.arange(1, 20)\n",
"d_max_arr = np.zeros((len(p_arr), len(n_arr)), dtype=np.float)\n",
"for ii in range(len(p_arr)):\n",
" for jj in range(len(n_arr)):\n",
" d_max_arr[ii, jj], *_ = walker_star(n_arr[jj], p_arr[ii])\n",
"\n",
"fig, ax = plt.subplots(figsize=(7, 10))\n",
"\n",
"markers = {1: \"*\", 2: \"o\", 3: \"P\", 4: \"s\", 5: \"X\", 6: \"^\"}\n",
"for ii in range(len(p_arr)):\n",
" ax.scatter(\n",
" n_arr * p_arr[ii],\n",
" np.degrees(d_max_arr[ii]),\n",
" label=f\"p = {p_arr[ii]}\",\n",
" marker=markers[p_arr[ii]],\n",
" s=100,\n",
" )\n",
"\n",
" # Spline for visualization\n",
" x_ = np.linspace((n_arr * p_arr[ii]).min(), 25)\n",
" spline_ = InterpolatedUnivariateSpline(n_arr * p_arr[ii], np.degrees(d_max_arr[ii]))\n",
" ax.plot(x_, spline_(x_))\n",
"\n",
"ax.set_xlim(0, 25)\n",
"ax.set_ylim(20, 90)\n",
"ax.grid()\n",
"ax.legend(loc=3)\n",
"ax.set_title(\"Figure 9\")\n",
"ax.set_ylabel(\"Minimum value of maximum sub-satellite distance $d_{max}$\")\n",
"ax.set_xlabel(\"Number of satellites in system $np$\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And finally, we create a function to produce the relevant orbital elements of the constellation:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"from collections import namedtuple\n",
"\n",
"Plane = namedtuple(\"Plane\", [\"p\", \"inclination\", \"raan\"])\n",
"Satellite = namedtuple(\"Satellite\", [\"plane\", \"n\", \"arglat\"])"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"def walker_star_constellation(n, p):\n",
" _, alpha, beta = walker_star(n, p)\n",
" for ii in range(p):\n",
" plane = Plane(ii, np.pi / 2, beta + 2 * ii * alpha)\n",
" for jj in range(n):\n",
" yield Satellite(plane, jj, jj * 2 * np.pi / n)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Satellite(plane=Plane(p=0, inclination=1.5707963267948966, raan=0.23007887092788004), n=0, arglat=0.0),\n",
" Satellite(plane=Plane(p=0, inclination=1.5707963267948966, raan=0.23007887092788004), n=1, arglat=1.2566370614359172),\n",
" Satellite(plane=Plane(p=0, inclination=1.5707963267948966, raan=0.23007887092788004), n=2, arglat=2.5132741228718345),\n",
" Satellite(plane=Plane(p=0, inclination=1.5707963267948966, raan=0.23007887092788004), n=3, arglat=3.7699111843077517),\n",
" Satellite(plane=Plane(p=0, inclination=1.5707963267948966, raan=0.23007887092788004), n=4, arglat=5.026548245743669),\n",
" Satellite(plane=Plane(p=1, inclination=1.5707963267948966, raan=1.1238905081725576), n=0, arglat=0.0),\n",
" Satellite(plane=Plane(p=1, inclination=1.5707963267948966, raan=1.1238905081725576), n=1, arglat=1.2566370614359172),\n",
" Satellite(plane=Plane(p=1, inclination=1.5707963267948966, raan=1.1238905081725576), n=2, arglat=2.5132741228718345),\n",
" Satellite(plane=Plane(p=1, inclination=1.5707963267948966, raan=1.1238905081725576), n=3, arglat=3.7699111843077517),\n",
" Satellite(plane=Plane(p=1, inclination=1.5707963267948966, raan=1.1238905081725576), n=4, arglat=5.026548245743669),\n",
" Satellite(plane=Plane(p=2, inclination=1.5707963267948966, raan=2.0177021454172355), n=0, arglat=0.0),\n",
" Satellite(plane=Plane(p=2, inclination=1.5707963267948966, raan=2.0177021454172355), n=1, arglat=1.2566370614359172),\n",
" Satellite(plane=Plane(p=2, inclination=1.5707963267948966, raan=2.0177021454172355), n=2, arglat=2.5132741228718345),\n",
" Satellite(plane=Plane(p=2, inclination=1.5707963267948966, raan=2.0177021454172355), n=3, arglat=3.7699111843077517),\n",
" Satellite(plane=Plane(p=2, inclination=1.5707963267948966, raan=2.0177021454172355), n=4, arglat=5.026548245743669),\n",
" Satellite(plane=Plane(p=3, inclination=1.5707963267948966, raan=2.9115137826619133), n=0, arglat=0.0),\n",
" Satellite(plane=Plane(p=3, inclination=1.5707963267948966, raan=2.9115137826619133), n=1, arglat=1.2566370614359172),\n",
" Satellite(plane=Plane(p=3, inclination=1.5707963267948966, raan=2.9115137826619133), n=2, arglat=2.5132741228718345),\n",
" Satellite(plane=Plane(p=3, inclination=1.5707963267948966, raan=2.9115137826619133), n=3, arglat=3.7699111843077517),\n",
" Satellite(plane=Plane(p=3, inclination=1.5707963267948966, raan=2.9115137826619133), n=4, arglat=5.026548245743669)]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(walker_star_constellation(5, 4))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.0"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment