Skip to content
Snippets Groups Projects
navipy_maths_coordinates_py.html 29.82 KiB



<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    
    <meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
    <title>Coverage for navipy/maths/coordinates.py: 70%</title>
    <link rel="stylesheet" href="style.css" type="text/css">
    
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="jquery.hotkeys.js"></script>
    <script type="text/javascript" src="jquery.isonscreen.js"></script>
    <script type="text/javascript" src="coverage_html.js"></script>
    <script type="text/javascript">
        jQuery(document).ready(coverage.pyfile_ready);
    </script>
</head>
<body class="pyfile">

<div id="header">
    <div class="content">
        <h1>Coverage for <b>navipy/maths/coordinates.py</b> :
            <span class="pc_cov">70%</span>
        </h1>

        <img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />

        <h2 class="stats">
            46 statements &nbsp;
            <span class="run hide_run shortkey_r button_toggle_run">32 run</span>
            <span class="mis shortkey_m button_toggle_mis">14 missing</span>
            <span class="exc shortkey_x button_toggle_exc">0 excluded</span>

            
        </h2>
    </div>
</div>

<div class="help_panel">
    <img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
    <p class="legend">Hot-keys on this page</p>
    <div>
    <p class="keyhelp">
        <span class="key">r</span>
        <span class="key">m</span>
        <span class="key">x</span>
        <span class="key">p</span> &nbsp; toggle line displays
    </p>
    <p class="keyhelp">
        <span class="key">j</span>
        <span class="key">k</span> &nbsp; next/prev highlighted chunk
    </p>
    <p class="keyhelp">
        <span class="key">0</span> &nbsp; (zero) top of page
    </p>
    <p class="keyhelp">
        <span class="key">1</span> &nbsp; (one) first highlighted chunk
    </p>
    </div>
</div>

<div id="source">
    <table>
        <tr>
            <td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm mis"><a href="#n22">22</a></p>
<p id="n23" class="stm mis"><a href="#n23">23</a></p>
<p id="n24" class="stm mis"><a href="#n24">24</a></p>
<p id="n25" class="stm mis"><a href="#n25">25</a></p>
<p id="n26" class="stm mis"><a href="#n26">26</a></p>
<p id="n27" class="stm mis"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="stm run hide_run"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="stm run hide_run"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="stm mis"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="stm mis"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm mis"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="stm mis"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="stm mis"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm mis"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="stm mis"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="stm mis"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="stm run hide_run"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>

            </td>
            <td class="text">
<p id="t1" class="pln"><span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="str"> Conversion between coordinates systems</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">import</span> <span class="nam">numpy</span> <span class="key">as</span> <span class="nam">np</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">navipy</span><span class="op">.</span><span class="nam">scene</span> <span class="key">import</span> <span class="nam">is_numeric_array</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"><span class="key">def</span> <span class="nam">cartesian_to_spherical</span><span class="op">(</span><span class="nam">x</span><span class="op">,</span> <span class="nam">y</span><span class="op">,</span> <span class="nam">z</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln">    <span class="str">""" Cartesian to spherical coordinates</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="str">    :param x: position along x-axis</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="str">    :param y: position along y-axis</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="str">    :param z: position along z-axis</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="str">    :returns: elevation,azimuth,radius</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="str">    inverse transform of :</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="str">    x = radius*cos(elevation) * cos(azimuth)</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="str">    y = radius*cos(elevation) * sin(azimuth)</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="str">    z = radius*sin(elevation)</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="str">    """</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm mis">    <span class="nam">radius</span> <span class="op">=</span> <span class="nam">np</span><span class="op">.</span><span class="nam">sqrt</span><span class="op">(</span><span class="nam">x</span><span class="op">**</span><span class="num">2</span> <span class="op">+</span> <span class="nam">y</span><span class="op">**</span><span class="num">2</span> <span class="op">+</span> <span class="nam">z</span><span class="op">**</span><span class="num">2</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm mis">    <span class="nam">elevation</span> <span class="op">=</span> <span class="nam">np</span><span class="op">.</span><span class="nam">arctan2</span><span class="op">(</span><span class="nam">z</span><span class="op">,</span> <span class="nam">np</span><span class="op">.</span><span class="nam">sqrt</span><span class="op">(</span><span class="nam">x</span><span class="op">**</span><span class="num">2</span> <span class="op">+</span> <span class="nam">y</span><span class="op">**</span><span class="num">2</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm mis">    <span class="nam">azimuth</span> <span class="op">=</span> <span class="nam">np</span><span class="op">.</span><span class="nam">arctan2</span><span class="op">(</span><span class="nam">y</span><span class="op">,</span> <span class="nam">x</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm mis">    <span class="nam">spherical</span> <span class="op">=</span> <span class="nam">np</span><span class="op">.</span><span class="nam">zeros_like</span><span class="op">(</span><span class="nam">x</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm mis">    <span class="nam">spherical</span> <span class="op">=</span> <span class="nam">np</span><span class="op">.</span><span class="nam">tile</span><span class="op">(</span><span class="nam">spherical</span><span class="op">[</span><span class="op">...</span><span class="op">,</span> <span class="nam">np</span><span class="op">.</span><span class="nam">newaxis</span><span class="op">]</span><span class="op">,</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm mis">    <span class="key">return</span> <span class="nam">elevation</span><span class="op">,</span> <span class="nam">azimuth</span><span class="op">,</span> <span class="nam">radius</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"><span class="key">def</span> <span class="nam">spherical_to_cartesian</span><span class="op">(</span><span class="nam">elevation</span><span class="op">,</span> <span class="nam">azimuth</span><span class="op">,</span> <span class="nam">radius</span><span class="op">=</span><span class="num">1</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln">    <span class="str">"""Spherical to cartesian coordinates</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="str">    :param elevation: elevation</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="str">    :param azimuth: azimuth</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="str">    :param radius: radius</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="str">    :returns: x,y,z</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="str">    transform :</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="str">    x = radius*cos(elevation) * cos(azimuth)</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="str">    y = radius*cos(elevation) * sin(azimuth)</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="str">    z = radius*sin(elevation)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="str">    """</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run">    <span class="nam">x</span> <span class="op">=</span> <span class="nam">radius</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">elevation</span><span class="op">)</span> <span class="op">*</span> <span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">azimuth</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run">    <span class="nam">y</span> <span class="op">=</span> <span class="nam">radius</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">elevation</span><span class="op">)</span> <span class="op">*</span> <span class="nam">np</span><span class="op">.</span><span class="nam">sin</span><span class="op">(</span><span class="nam">azimuth</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run">    <span class="nam">z</span> <span class="op">=</span> <span class="nam">radius</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">sin</span><span class="op">(</span><span class="nam">elevation</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm run hide_run">    <span class="key">return</span> <span class="nam">x</span><span class="op">,</span> <span class="nam">y</span><span class="op">,</span> <span class="nam">z</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm run hide_run"><span class="key">def</span> <span class="nam">cartesian_to_spherical_vectors</span><span class="op">(</span><span class="nam">cart_vec</span><span class="op">,</span> <span class="nam">viewing_direction</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln">    <span class="str">"""Now we need the cartesian vector as a spherical vecotr.</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="str">    A vector in cartesian coordinates can be transform as one in</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="str">    the spherical coordinates following the transformation:</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="str">    A_rho    =+A_x.*cos(epsilon).*cos(phi)</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="str">              +A_y.*cos(epsilon).*sin(phi)</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="str">              +A_z.*sin(epsilon)</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="str">    A_epsilon=-A_x.*sin(epsilon).*cos(phi)</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="str">              -A_y.*sin(epsilon).*sin(phi)</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="str">              +A_z.*cos(epsilon)</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="str">    A_phi    =-A_x.*sin(phi)+A_y.*cos(phi)</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="str">    for epsilon in [-pi/2 +pi/2] and phi in [0 2pi]</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="str">    reverse tajectory, needed because the frame x,y,z is expressed in</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="str">    the orientation Yaw=pitch=roll=0"""</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run">    <span class="key">if</span> <span class="nam">cart_vec</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm mis">        <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="str">"cartesian vector must not be None"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run">    <span class="key">if</span> <span class="nam">viewing_direction</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm mis">        <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="str">"viewing direction must not be None"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run">    <span class="key">if</span> <span class="op">(</span><span class="key">not</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">cart_vec</span><span class="op">,</span> <span class="nam">np</span><span class="op">.</span><span class="nam">ndarray</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm mis">        <span class="key">raise</span> <span class="nam">TypeError</span><span class="op">(</span><span class="str">"vector must be of type np.ndarray"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run">    <span class="key">if</span> <span class="nam">cart_vec</span><span class="op">.</span><span class="nam">shape</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="op">!=</span> <span class="num">3</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm mis">        <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">"first dimension of cartesian vector\</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="str">                         must have size three"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run">    <span class="key">if</span> <span class="key">not</span> <span class="nam">is_numeric_array</span><span class="op">(</span><span class="nam">cart_vec</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm mis">        <span class="key">raise</span> <span class="nam">TypeError</span><span class="op">(</span><span class="str">"cartesian vector must be of numerical type"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run">    <span class="key">if</span> <span class="op">(</span><span class="key">not</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">viewing_direction</span><span class="op">,</span> <span class="nam">list</span><span class="op">)</span><span class="op">)</span> <span class="key">and</span><span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln">       <span class="op">(</span><span class="key">not</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">viewing_direction</span><span class="op">,</span> <span class="nam">np</span><span class="op">.</span><span class="nam">ndarray</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm mis">        <span class="key">raise</span> <span class="nam">TypeError</span><span class="op">(</span><span class="str">"angles must be list or np.ndarray"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run">    <span class="key">if</span> <span class="key">not</span> <span class="nam">is_numeric_array</span><span class="op">(</span><span class="nam">viewing_direction</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm mis">        <span class="key">raise</span> <span class="nam">TypeError</span><span class="op">(</span><span class="str">"viewing_direction must be of numerical type"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run">    <span class="key">if</span> <span class="nam">len</span><span class="op">(</span><span class="nam">viewing_direction</span><span class="op">)</span> <span class="op">!=</span> <span class="num">2</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm mis">        <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">"first dimension of viewing\</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="str">                         direction must be of size two"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run">    <span class="nam">SPH_x</span> <span class="op">=</span> <span class="nam">cart_vec</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run">    <span class="nam">SPH_y</span> <span class="op">=</span> <span class="nam">cart_vec</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run">    <span class="nam">SPH_z</span> <span class="op">=</span> <span class="nam">cart_vec</span><span class="op">[</span><span class="num">2</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run">    <span class="nam">epsilon</span> <span class="op">=</span> <span class="nam">viewing_direction</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run">    <span class="nam">phi</span> <span class="op">=</span> <span class="nam">viewing_direction</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run">    <span class="nam">rofterm1</span> <span class="op">=</span> <span class="op">+</span><span class="nam">SPH_x</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">epsilon</span><span class="op">)</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">phi</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run">    <span class="nam">rofterm2</span> <span class="op">=</span> <span class="op">+</span><span class="nam">SPH_y</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">epsilon</span><span class="op">)</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">sin</span><span class="op">(</span><span class="nam">phi</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm run hide_run">    <span class="nam">rofterm3</span> <span class="op">=</span> <span class="op">+</span><span class="nam">SPH_z</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">sin</span><span class="op">(</span><span class="nam">epsilon</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run">    <span class="nam">sph_x</span> <span class="op">=</span> <span class="nam">rofterm1</span><span class="op">+</span><span class="nam">rofterm2</span><span class="op">+</span><span class="nam">rofterm3</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run">    <span class="nam">vofterm1</span> <span class="op">=</span> <span class="op">-</span><span class="nam">SPH_x</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">sin</span><span class="op">(</span><span class="nam">epsilon</span><span class="op">)</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">phi</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run">    <span class="nam">vofterm2</span> <span class="op">=</span> <span class="op">-</span><span class="nam">SPH_y</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">sin</span><span class="op">(</span><span class="nam">epsilon</span><span class="op">)</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">sin</span><span class="op">(</span><span class="nam">phi</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run">    <span class="nam">vofterm3</span> <span class="op">=</span> <span class="nam">SPH_z</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">epsilon</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run">    <span class="nam">sph_z</span> <span class="op">=</span> <span class="nam">vofterm1</span><span class="op">+</span><span class="nam">vofterm2</span><span class="op">+</span><span class="nam">vofterm3</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run">    <span class="nam">sph_y</span> <span class="op">=</span> <span class="op">-</span><span class="nam">SPH_x</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">sin</span><span class="op">(</span><span class="nam">phi</span><span class="op">)</span> <span class="op">+</span> <span class="nam">SPH_y</span><span class="op">*</span><span class="nam">np</span><span class="op">.</span><span class="nam">cos</span><span class="op">(</span><span class="nam">phi</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run">    <span class="key">return</span> <span class="op">[</span><span class="nam">sph_x</span><span class="op">,</span> <span class="nam">sph_y</span><span class="op">,</span> <span class="nam">sph_z</span><span class="op">]</span><span class="strut">&nbsp;</span></p>

            </td>
        </tr>
    </table>
</div>

<div id="footer">
    <div class="content">
        <p>
            <a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.5.2</a>,
            created at 2019-01-16 18:11
        </p>
    </div>
</div>

</body>
</html>