|
49 | 49 | <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" />
|
50 | 50 | <script src="../../../_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script>
|
51 | 51 |
|
52 |
| - <script src="../../../_static/documentation_options.js?v=29ae757a"></script> |
| 52 | + <script src="../../../_static/documentation_options.js?v=cbfb3150"></script> |
53 | 53 | <script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
54 | 54 | <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
55 | 55 | <script src="../../../_static/clipboard.min.js?v=a7894cd8"></script>
|
|
146 | 146 | <script>document.write(`<img src="../../../_static/DataLab-Title.svg" class="logo__image only-dark" alt=""/>`);</script>
|
147 | 147 |
|
148 | 148 |
|
149 |
| - <p class="title logo__title">v0.18.2</p> |
| 149 | + <p class="title logo__title">v0.19.0</p> |
150 | 150 |
|
151 | 151 | </a></div>
|
152 | 152 |
|
@@ -469,6 +469,9 @@ <h1>Source code for cdl.algorithms.coordinates</h1><div class="highlight"><pre>
|
469 | 469 |
|
470 | 470 | <span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span>
|
471 | 471 |
|
| 472 | +<span class="kn">import</span> <span class="nn">warnings</span> |
| 473 | +<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Literal</span> |
| 474 | + |
472 | 475 | <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
473 | 476 |
|
474 | 477 |
|
@@ -663,6 +666,66 @@ <h1>Source code for cdl.algorithms.coordinates</h1><div class="highlight"><pre>
|
663 | 666 | <span class="n">result</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">xc</span><span class="p">,</span> <span class="n">yc</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">theta</span><span class="p">))</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span>
|
664 | 667 | <span class="k">return</span> <span class="n">result</span></div>
|
665 | 668 |
|
| 669 | + |
| 670 | + |
| 671 | +<div class="viewcode-block" id="cartesian2polar"> |
| 672 | +<a class="viewcode-back" href="../../../api/algorithms.html#cdl.algorithms.coordinates.cartesian2polar">[docs]</a> |
| 673 | +<span class="k">def</span> <span class="nf">cartesian2polar</span><span class="p">(</span> |
| 674 | + <span class="n">x</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n">unit</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"rad"</span><span class="p">,</span> <span class="s2">"deg"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"rad"</span> |
| 675 | +<span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">]:</span> |
| 676 | +<span class="w"> </span><span class="sd">"""Convert Cartesian coordinates to polar coordinates.</span> |
| 677 | + |
| 678 | +<span class="sd"> Args:</span> |
| 679 | +<span class="sd"> x: Cartesian x-coordinate.</span> |
| 680 | +<span class="sd"> y: Cartesian y-coordinate.</span> |
| 681 | +<span class="sd"> unit: Unit of the angle ('rad' or 'deg').</span> |
| 682 | + |
| 683 | +<span class="sd"> Returns:</span> |
| 684 | +<span class="sd"> Polar coordinates (r, theta) where r is the radius and theta is the angle.</span> |
| 685 | +<span class="sd"> """</span> |
| 686 | + <span class="k">assert</span> <span class="n">x</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="n">y</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="s2">"x and y must have the same shape"</span> |
| 687 | + <span class="k">assert</span> <span class="n">unit</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"rad"</span><span class="p">,</span> <span class="s2">"deg"</span><span class="p">],</span> <span class="s2">"unit must be 'rad' or 'deg'"</span> |
| 688 | + <span class="n">r</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">y</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span> |
| 689 | + <span class="n">theta</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arctan2</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span> |
| 690 | + <span class="k">if</span> <span class="n">unit</span> <span class="o">==</span> <span class="s2">"deg"</span><span class="p">:</span> |
| 691 | + <span class="n">theta</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">rad2deg</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> |
| 692 | + <span class="k">return</span> <span class="n">r</span><span class="p">,</span> <span class="n">theta</span></div> |
| 693 | + |
| 694 | + |
| 695 | + |
| 696 | +<div class="viewcode-block" id="polar2cartesian"> |
| 697 | +<a class="viewcode-back" href="../../../api/algorithms.html#cdl.algorithms.coordinates.polar2cartesian">[docs]</a> |
| 698 | +<span class="k">def</span> <span class="nf">polar2cartesian</span><span class="p">(</span> |
| 699 | + <span class="n">r</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n">theta</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n">unit</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"rad"</span><span class="p">,</span> <span class="s2">"deg"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"rad"</span> |
| 700 | +<span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">]:</span> |
| 701 | +<span class="w"> </span><span class="sd">"""Convert polar coordinates to Cartesian coordinates.</span> |
| 702 | + |
| 703 | +<span class="sd"> Args:</span> |
| 704 | +<span class="sd"> r: Polar radius.</span> |
| 705 | +<span class="sd"> theta: Polar angle.</span> |
| 706 | +<span class="sd"> unit: Unit of the angle ('rad' or 'deg').</span> |
| 707 | + |
| 708 | +<span class="sd"> Returns:</span> |
| 709 | +<span class="sd"> Cartesian coordinates (x, y) where x is the x-coordinate and y is the</span> |
| 710 | +<span class="sd"> y-coordinate.</span> |
| 711 | + |
| 712 | +<span class="sd"> .. note::</span> |
| 713 | + |
| 714 | +<span class="sd"> Negative radius values are not supported. They will be set to 0.</span> |
| 715 | +<span class="sd"> """</span> |
| 716 | + <span class="k">assert</span> <span class="n">r</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="n">theta</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="s2">"r and theta must have the same shape"</span> |
| 717 | + <span class="k">assert</span> <span class="n">unit</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"rad"</span><span class="p">,</span> <span class="s2">"deg"</span><span class="p">],</span> <span class="s2">"unit must be 'rad' or 'deg'"</span> |
| 718 | + <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">r</span> <span class="o"><</span> <span class="mi">0</span><span class="p">):</span> |
| 719 | + <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span> |
| 720 | + <span class="s2">"Negative radius values are not supported. They will be set to 0."</span> |
| 721 | + <span class="p">)</span> |
| 722 | + <span class="n">r</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">maximum</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> |
| 723 | + <span class="k">if</span> <span class="n">unit</span> <span class="o">==</span> <span class="s2">"deg"</span><span class="p">:</span> |
| 724 | + <span class="n">theta</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">deg2rad</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> |
| 725 | + <span class="n">x</span> <span class="o">=</span> <span class="n">r</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> |
| 726 | + <span class="n">y</span> <span class="o">=</span> <span class="n">r</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> |
| 727 | + <span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span></div> |
| 728 | + |
666 | 729 | </pre></div>
|
667 | 730 |
|
668 | 731 | </article>
|
|
0 commit comments