Page MenuHomec4science

Display.html
No OneTemporary

File Metadata

Created
Wed, Feb 12, 10:39

Display.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Display Models &mdash; pNbody v4 documentation</title>
<link rel="stylesheet" href="../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '4',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="top" title="pNbody v4 documentation" href="../index.html" />
<link rel="next" title="Generating initial conditions" href="InitialConditions.html" />
<link rel="prev" title="Setting a format file" href="Formats.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="../np-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="InitialConditions.html" title="Generating initial conditions"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="Formats.html" title="Setting a format file"
accesskey="P">previous</a> |</li>
<li><a href="../index.html">pNbody v4 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="display-models">
<h1>Display Models<a class="headerlink" href="#display-models" title="Permalink to this headline">¶</a></h1>
<div class="section" id="generate-the-example-file">
<h2>Generate the example file<a class="headerlink" href="#generate-the-example-file" title="Permalink to this headline">¶</a></h2>
<p>To run the examples of this section, you must first move to the <tt class="docutils literal"><span class="pre">~/pnbody_examples</span></tt> directory.
If the latter does not exists, you can first create it with:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">pNbody_copy</span><span class="o">-</span><span class="n">examples</span>
</pre></div>
</div>
<p>then inside this directory, type:</p>
<div class="highlight-python"><pre>./scripts/mkmodel_for_display.py</pre>
</div>
<p>This will create the N-body file <tt class="docutils literal"><span class="pre">snapd.dat</span></tt>.
This file contains a rotating disk of radius 30, with a small plummer sphere centered on (15,15,10).</p>
</div>
<div class="section" id="the-display-method">
<h2>The display method<a class="headerlink" href="#the-display-method" title="Permalink to this headline">¶</a></h2>
<p>Any model may be displayed simply using the method <a class="reference internal" href="MainModule.html#pNbody.main.NbodyDefault.display" title="pNbody.main.NbodyDefault.display"><tt class="xref py py-func docutils literal"><span class="pre">NbodyDefault.display()</span></tt></a>.
This method takes several parameters that will be described in detail below.
For our first example, we simply use the <tt class="docutils literal"><span class="pre">size</span></tt> parameter, which set the size of
the displayed area:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pNbody</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span> <span class="o">=</span> <span class="n">Nbody</span><span class="p">(</span><span class="s">&quot;snapd.dat&quot;</span><span class="p">,</span><span class="n">ftype</span><span class="o">=</span><span class="s">&#39;gadget&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span><span class="mi">50</span><span class="p">))</span>
</pre></div>
</div>
<p>If your default parameters are still the ones of the <strong>pNbody</strong> distribution, this should display the following image:</p>
<blockquote>
<div><img alt="../_images/snapd53.png" src="../_images/snapd53.png" />
</div></blockquote>
</div>
<div class="section" id="display-parameters">
<h2>Display parameters<a class="headerlink" href="#display-parameters" title="Permalink to this headline">¶</a></h2>
<p><strong>pNbody</strong> provides rather complex tools to display
N-body systems. The tools uses different parameters
that are sumarized in the following table:</p>
<table border="1" class="docutils">
<colgroup>
<col width="27%" />
<col width="27%" />
<col width="35%" />
<col width="11%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">name</th>
<th class="head">meaning</th>
<th class="head">value</th>
<th class="head">type</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>obs</td>
<td>observer</td>
<td>None</td>
<td>(ArrayObs)</td>
</tr>
<tr><td>xp</td>
<td>observing position</td>
<td>None</td>
<td>(List)</td>
</tr>
<tr><td>x0</td>
<td>position of observer</td>
<td>None</td>
<td>(List)</td>
</tr>
<tr><td>alpha</td>
<td>angle of the head</td>
<td>None</td>
<td>(Float)</td>
</tr>
<tr><td>view</td>
<td>view</td>
<td>xz</td>
<td>(String)</td>
</tr>
<tr><td>r_obs</td>
<td>dist. to the observer</td>
<td>201732.223771</td>
<td>(Float)</td>
</tr>
<tr><td>clip</td>
<td>clip planes</td>
<td>(100866.11188556443, 403464.44754225772)</td>
<td>(Tuple)</td>
</tr>
<tr><td>cut</td>
<td>cut clip planes</td>
<td>no</td>
<td>(String)</td>
</tr>
<tr><td>eye</td>
<td>name of the eye</td>
<td>None</td>
<td>(String)</td>
</tr>
<tr><td>dist_eye</td>
<td>distance between eyes</td>
<td>-0.0005</td>
<td>(Float)</td>
</tr>
<tr><td>foc</td>
<td>focal</td>
<td>300.0</td>
<td>(Float)</td>
</tr>
<tr><td>persp</td>
<td>perspective</td>
<td>off</td>
<td>(String)</td>
</tr>
<tr><td>shape</td>
<td>shape of the image</td>
<td>(512, 512)</td>
<td>(Tuple)</td>
</tr>
<tr><td>size</td>
<td>pysical size</td>
<td>(6000, 6000)</td>
<td>(Tuple)</td>
</tr>
<tr><td>frsp</td>
<td>frsp</td>
<td>0.0</td>
<td>(Float)</td>
</tr>
<tr><td>space</td>
<td>space</td>
<td>pos</td>
<td>(String)</td>
</tr>
<tr><td>mode</td>
<td>mode</td>
<td>m</td>
<td>(String)</td>
</tr>
<tr><td>rendering</td>
<td>rendering mode</td>
<td>map</td>
<td>(String)</td>
</tr>
<tr><td>filter_name</td>
<td>name of the filter</td>
<td>None</td>
<td>(String)</td>
</tr>
<tr><td>filter_opts</td>
<td>filter options</td>
<td>[10, 10, 2, 2]</td>
<td>(List)</td>
</tr>
<tr><td>scale</td>
<td>scale</td>
<td>log</td>
<td>(String)</td>
</tr>
<tr><td>cd</td>
<td>cd</td>
<td>0.0</td>
<td>(Float)</td>
</tr>
<tr><td>mn</td>
<td>mn</td>
<td>0.0</td>
<td>(Float)</td>
</tr>
<tr><td>mx</td>
<td>mx</td>
<td>0.0</td>
<td>(Float)</td>
</tr>
<tr><td>l_n</td>
<td>number of levels</td>
<td>15</td>
<td>(Int)</td>
</tr>
<tr><td>l_min</td>
<td>min level</td>
<td>0.0</td>
<td>(Float)</td>
</tr>
<tr><td>l_max</td>
<td>max level</td>
<td>0.0</td>
<td>(Float)</td>
</tr>
<tr><td>l_kx</td>
<td>l_kx</td>
<td>10</td>
<td>(Int)</td>
</tr>
<tr><td>l_ky</td>
<td>l_ky</td>
<td>10</td>
<td>(Int)</td>
</tr>
<tr><td>l_color</td>
<td>level color</td>
<td>0</td>
<td>(Int)</td>
</tr>
<tr><td>l_crush</td>
<td>crush background</td>
<td>no</td>
<td>(String)</td>
</tr>
<tr><td>b_weight</td>
<td>box line weight</td>
<td>0</td>
<td>(Int)</td>
</tr>
<tr><td>b_xopts</td>
<td>x axis options</td>
<td>None</td>
<td>(Tuple)</td>
</tr>
<tr><td>b_yopts</td>
<td>y axis options</td>
<td>None</td>
<td>(Tuple)</td>
</tr>
<tr><td>b_color</td>
<td>line color</td>
<td>255</td>
<td>(Int)</td>
</tr>
</tbody>
</table>
<p>The value of these parameters may be obtained by the command:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">pNbody_show</span><span class="o">-</span><span class="n">parameters</span>
</pre></div>
</div>
</div>
<div class="section" id="set-the-observer-position">
<h2>Set the observer position<a class="headerlink" href="#set-the-observer-position" title="Permalink to this headline">¶</a></h2>
<p>When creating an image from a model, one has to choose the observer position, the look at
point and the orientation of the head. The user has tree possibilities to define these parameters :</p>
<blockquote>
<div><ol class="arabic simple">
<li>Define manually the observer matrix <tt class="docutils literal"><span class="pre">obs</span></tt>. <tt class="docutils literal"><span class="pre">obs</span></tt> is a 4x3 array matrix. Meaning of the four vectors composing this matrix is given in the following table :</li>
</ol>
<table border="1" class="docutils">
<colgroup>
<col width="7%" />
<col width="93%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">obs</th>
<th class="head">Meaning</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>obs[0]</td>
<td>position of the observer</td>
</tr>
<tr><td>obs[1]</td>
<td>position of the look at point (with respect to the position of the observer)</td>
</tr>
<tr><td>obs[2]</td>
<td>position of the head (with respect to the position of the observer)</td>
</tr>
<tr><td>obs[3]</td>
<td>position of the arm (with respect to the position of the observer)</td>
</tr>
</tbody>
</table>
<blockquote>
<div>If <tt class="docutils literal"><span class="pre">obs</span></tt> is defined, it is used in priority.</div></blockquote>
<ol class="arabic simple" start="2">
<li>Using the parameters <tt class="docutils literal"><span class="pre">xp</span></tt>, <tt class="docutils literal"><span class="pre">x0</span></tt> and <tt class="docutils literal"><span class="pre">alpha</span></tt>, where <tt class="docutils literal"><span class="pre">x0</span></tt> is the observer position, <tt class="docutils literal"><span class="pre">xp</span></tt> is
the <em>look at point</em> and <tt class="docutils literal"><span class="pre">alpha</span></tt> the angle between the head and the z axis.</li>
<li>Using the parameters <tt class="docutils literal"><span class="pre">view</span></tt> and <tt class="docutils literal"><span class="pre">r_obs</span></tt>. This simpler method is used if <tt class="docutils literal"><span class="pre">obs</span></tt>, <tt class="docutils literal"><span class="pre">xp</span></tt> and <tt class="docutils literal"><span class="pre">x0</span></tt> are set to <tt class="xref docutils literal"><span class="pre">None</span></tt>.
The parameter <tt class="docutils literal"><span class="pre">view</span></tt> can be equal to <em>xy</em>, <em>xz</em> or <em>yz</em>, the projection
being parallel to one of the main axis. <tt class="docutils literal"><span class="pre">r_obs</span></tt> gives the distance between the observer and the <em>look at point</em>.</li>
</ol>
</div></blockquote>
<div class="section" id="example">
<h3>Example:<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h3>
<p>To see the disk face-on, projecting it along the z axis:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">xp</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span><span class="mi">50</span><span class="p">),</span><span class="n">view</span><span class="o">=</span><span class="s">&#39;xy&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-xy50.png" src="../_images/snapd-xy50.png" />
<p>To align the center of the disk with the center of the sphere:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mf">30.</span><span class="p">,</span><span class="mf">30.</span><span class="p">,</span><span class="mf">20.</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">15</span><span class="p">,</span><span class="mi">15</span><span class="p">,</span><span class="mi">10</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span><span class="mi">50</span><span class="p">))</span>
</pre></div>
</div>
<img alt="images/snapd-aling.png" src="images/snapd-aling.png" />
<p>To look at the disk from the bottom, tilting the head from 45 degres:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="n">pi</span><span class="o">/</span><span class="mi">4</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span><span class="mi">50</span><span class="p">))</span>
</pre></div>
</div>
<img alt="imag==================================================es/snapd-bottom.png" src="imag==================================================es/snapd-bottom.png" />
</div>
</div>
<div class="section" id="set-the-projection-mode">
<h2>Set the projection mode<a class="headerlink" href="#set-the-projection-mode" title="Permalink to this headline">¶</a></h2>
<p><strong>pNbody</strong> offers two projection modes. If <tt class="docutils literal"><span class="pre">persp``='on',</span> <span class="pre">the</span> <span class="pre">model</span> <span class="pre">is</span> <span class="pre">projectec</span> <span class="pre">using</span> <span class="pre">a</span> <span class="pre">frustrum</span> <span class="pre">projection</span> <span class="pre">matrix.</span>
<span class="pre">In</span> <span class="pre">the</span> <span class="pre">other</span> <span class="pre">case,</span> <span class="pre">it</span> <span class="pre">uses</span> <span class="pre">an</span> <span class="pre">ortho</span> <span class="pre">matrix</span> <span class="pre">(orthogonal</span> <span class="pre">projection).</span> <span class="pre">The</span> <span class="pre">near</span> <span class="pre">and</span> <span class="pre">far</span> <span class="pre">clipping</span> <span class="pre">planes</span> <span class="pre">are</span> <span class="pre">given</span> <span class="pre">by</span>
<span class="pre">the</span> <span class="pre">parameter</span> <span class="pre">``clip</span></tt> containing a tuple. The left, right, bottom and top clipping planes are given by the parameter <tt class="docutils literal"><span class="pre">size</span></tt>.
If <tt class="docutils literal"><span class="pre">cut</span></tt> is set to &#8216;yes&#8217;, particles outside the box defined by the 6 planes are not displayed.</p>
<div class="section" id="id1">
<h3>Example:<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
<p>Using the frustrum projection:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">20</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span><span class="n">persp</span><span class="o">=</span><span class="s">&#39;on&#39;</span><span class="p">,</span><span class="n">clip</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">50</span><span class="p">))</span>
</pre></div>
</div>
<p>The field of view is determined using <tt class="docutils literal"><span class="pre">clip</span></tt> and <tt class="docutils literal"><span class="pre">size</span></tt>.</p>
<img alt="../_images/snapd-frustrum48.png" src="../_images/snapd-frustrum48.png" />
<p>If <tt class="docutils literal"><span class="pre">cut</span></tt> is set to <tt class="docutils literal"><span class="pre">yes</span></tt>, only particles inside the clip planes are displayed:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">20</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span><span class="n">persp</span><span class="o">=</span><span class="s">&#39;on&#39;</span><span class="p">,</span><span class="n">clip</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">50</span><span class="p">),</span><span class="n">cut</span><span class="o">=</span><span class="s">&#39;yes&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-frustrum-cut48.png" src="../_images/snapd-frustrum-cut48.png" />
</div>
</div>
<div class="section" id="stero-mode">
<h2>Stero mode<a class="headerlink" href="#stero-mode" title="Permalink to this headline">¶</a></h2>
<p>In order to create stereo images, you can specify the <tt class="docutils literal"><span class="pre">eye</span></tt> you are looking with (&#8216;right&#8217;,&#8217;left&#8217;).
When exposition the model using the method <a class="reference internal" href="MainModule.html#pNbody.main.NbodyDefault.expose" title="pNbody.main.NbodyDefault.expose"><tt class="xref py py-func docutils literal"><span class="pre">NbodyDefault.expose()</span></tt></a>, the observer will be rotate around
an axis parallel to its head, with a center rotation in the direction of the <em>look at point</em>, at a distance
<tt class="docutils literal"><span class="pre">foc</span></tt> of the eye. The angle of the rotation is such as to move the observer of a distance <tt class="docutils literal"><span class="pre">dist_eye</span></tt>/2.</p>
<div class="section" id="id2">
<h3>Example:<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
<p>Left and right images may be obtained respectively with:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">20</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span><span class="n">persp</span><span class="o">=</span><span class="s">&#39;on&#39;</span><span class="p">,</span><span class="n">clip</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">50</span><span class="p">),</span><span class="n">foc</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span><span class="n">dist_eye</span><span class="o">=</span><span class="mf">0.01</span><span class="p">,</span><span class="n">eye</span><span class="o">=</span><span class="s">&#39;left&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">20</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span><span class="n">persp</span><span class="o">=</span><span class="s">&#39;on&#39;</span><span class="p">,</span><span class="n">clip</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">50</span><span class="p">),</span><span class="n">foc</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span><span class="n">dist_eye</span><span class="o">=</span><span class="mf">0.01</span><span class="p">,</span><span class="n">eye</span><span class="o">=</span><span class="s">&#39;left&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>This gives the following image that may be seen using a cross-eyed vision:</p>
<img alt="../_images/snapd-left47.png" src="../_images/snapd-left47.png" />
<img alt="../_images/snapd-right47.png" src="../_images/snapd-right47.png" />
</div>
</div>
<div class="section" id="shape-of-the-final-image">
<h2>Shape of the final image<a class="headerlink" href="#shape-of-the-final-image" title="Permalink to this headline">¶</a></h2>
<p>The shape in pixel of the final image is set by the tuple <tt class="docutils literal"><span class="pre">shape</span></tt>.</p>
</div>
<div class="section" id="display-space">
<h2>Display space<a class="headerlink" href="#display-space" title="Permalink to this headline">¶</a></h2>
<p>The <tt class="docutils literal"><span class="pre">space</span></tt> parameter may be either <tt class="docutils literal"><span class="pre">pos</span></tt> (default) or <tt class="docutils literal"><span class="pre">vel</span></tt>.
In the second case, the model is displayed in velocity space, this simply means
that the positions are replaced by the velocities.</p>
<div class="section" id="id3">
<h3>Example:<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
<p>The model in the velocity space gives:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="n">view</span><span class="o">=</span><span class="s">&#39;xy&#39;</span><span class="p">,</span><span class="n">space</span><span class="o">=</span><span class="s">&#39;vel&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-vel46.png" src="../_images/snapd-vel46.png" />
<p>We clearly see the ofset of (0.5,0,0) in velocity of the sphere.</p>
</div>
</div>
<div class="section" id="display-mode">
<h2>Display mode<a class="headerlink" href="#display-mode" title="Permalink to this headline">¶</a></h2>
<p>The <tt class="docutils literal"><span class="pre">mode</span></tt> parameter is very important. It tells the method <a class="reference internal" href="MainModule.html#pNbody.main.NbodyDefault.display" title="pNbody.main.NbodyDefault.display"><tt class="xref py py-func docutils literal"><span class="pre">NbodyDefault.display()</span></tt></a> which
physical quantities must be displayed. By default, it value is <tt class="docutils literal"><span class="pre">m</span></tt>, meaning the mass. When used,
a projected mass map (surface density) is returned.</p>
<p>The value of <tt class="docutils literal"><span class="pre">mode</span></tt> parameter may be set to:</p>
<ol class="arabic simple">
<li>a value from the following list. In this case, the value does not dependends on the observer position :</li>
</ol>
<blockquote>
<div><table border="1" class="docutils">
<colgroup>
<col width="13%" />
<col width="56%" />
<col width="31%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Value</th>
<th class="head">Meaning</th>
<th class="head">Formula</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>&#8220;m&#8221;</td>
<td>zero momentum</td>
<td><img class="math" src="../_images/math/b5b7394e855c21bf8afc33d2c7a1cbb21d14d9a2.png" alt="\sum m"/></td>
</tr>
<tr><td>&#8220;x&#8221;</td>
<td>first momentum in x</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;y&#8221;</td>
<td>first momentum in y</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;z&#8221;</td>
<td>first momentum in z</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;x2&#8221;</td>
<td>second momentum in x</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;y2&#8221;</td>
<td>second momentum in y</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;z2&#8221;</td>
<td>second momentum in z</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;vx&#8221;</td>
<td>first velocity momentum in x</td>
<td><img class="math" src="../_images/math/10ad9ca40a491b68a1890fec43733120b8987e41.png" alt="\sum m vx"/></td>
</tr>
<tr><td>&#8220;vy&#8221;</td>
<td>first velocity momentum in y</td>
<td><img class="math" src="../_images/math/0a41d6b5b35d516ef8c3dcc5a155bbb56c2fd58f.png" alt="\sum m vy"/></td>
</tr>
<tr><td>&#8220;vz&#8221;</td>
<td>first velocity momentum in z</td>
<td><img class="math" src="../_images/math/e07e86149bd4410315fd06c3195d6229cf741398.png" alt="\sum m vz"/></td>
</tr>
<tr><td>&#8220;vx2&#8221;</td>
<td>second velocity momentum in x</td>
<td><img class="math" src="../_images/math/1fba0228260387121253c2ed4c71c9a951728fcc.png" alt="\sum m vx^2"/></td>
</tr>
<tr><td>&#8220;vy2&#8221;</td>
<td>second velocity momentum in y</td>
<td><img class="math" src="../_images/math/188ae8297f1f5d23e68643bbdd60594d2d1f126f.png" alt="\sum m vy^2"/></td>
</tr>
<tr><td>&#8220;vz2&#8221;</td>
<td>second velocity momentum in z</td>
<td><img class="math" src="../_images/math/257410b9471a4e65c944750439e9477c72bdd492.png" alt="\sum m vz^2"/></td>
</tr>
<tr><td>&#8220;lx&#8221;</td>
<td>first specific kinetic momemtum in x</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;ly&#8221;</td>
<td>first specific kinetic momemtum in y</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;lz&#8221;</td>
<td>first specific kinetic momemtum in z</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;Lx&#8221;</td>
<td>first kinetic momemtum in x</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;Ly&#8221;</td>
<td>first kinetic momemtum in y</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;Lz&#8221;</td>
<td>first kinetic momemtum in z</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;u&#8221;</td>
<td>first momentum of specific energy</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;rho&#8221;</td>
<td>first momentum of density</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;T&#8221;</td>
<td>first momentum of temperature</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;A&#8221;</td>
<td>first momentum of entropy</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;P&#8221;</td>
<td>first momentum of pressure</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;Tcool&#8221;</td>
<td>first momentum of cooling time</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;Lum&#8221;</td>
<td>first momentum of luminosity</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;Ne&#8221;</td>
<td>first momentum of electronic density</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
</div></blockquote>
<ol class="arabic simple" start="2">
<li>a value from the following list. In this case, the value does dependends on the observer position :</li>
</ol>
<blockquote>
<div><table border="1" class="docutils">
<colgroup>
<col width="8%" />
<col width="47%" />
<col width="45%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Value</th>
<th class="head">Meaning</th>
<th class="head">Formula</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>&#8220;r&#8221;</td>
<td>first momentum of radial distance</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;r2&#8221;</td>
<td>second momentum of radial distance</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;vr&#8221;</td>
<td>first momentum of radial velocity</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;vr2&#8221;</td>
<td>second momemtum of radial velocity</td>
<td>&nbsp;</td>
</tr>
<tr><td>&#8220;vxyr&#8221;</td>
<td>first momentum of radial velocity in the plane</td>
<td><img class="math" src="../_images/math/85095e592f33bae1fcf44c53425723e2813f949c.png" alt="\sum m (x vx + y vy)/\sqrt{x^2+y^2}"/></td>
</tr>
<tr><td>&#8220;vxyr2&#8221;</td>
<td>second momentum of radial velocity in the plane</td>
<td><img class="math" src="../_images/math/be9ad0e30b237ce40309f47a06b1e394c1e29d5a.png" alt="\sum m [(x vx + y vy)/\sqrt{x^2+y^2}]^2"/></td>
</tr>
<tr><td>&#8220;vtr&#8221;</td>
<td>first momentum of tangential velocity in the plane</td>
<td><img class="math" src="../_images/math/7c8197cc80cd43afd7dea56a077cda88c1477fd4.png" alt="\sum m (x vx - y vy)/\sqrt{x^2+y^2}"/></td>
</tr>
<tr><td>&#8220;vtr2&#8221;</td>
<td>second momentum of tangential velocity in the plane</td>
<td><img class="math" src="../_images/math/160ada1529a11fb7124846916ebd58c57c5de28f.png" alt="\sum m [(x vx - y vy)/\sqrt{x^2+y^2}]^2"/></td>
</tr>
</tbody>
</table>
</div></blockquote>
<ol class="arabic simple" start="3">
<li>any scalar linked with each particle, for example the density <tt class="docutils literal"><span class="pre">nb.rho</span></tt>.</li>
</ol>
<div class="section" id="id4">
<h3>Example:<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3>
<p>A radial velocity map is obtained using <tt class="docutils literal"><span class="pre">mode=vr</span></tt>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">25</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span><span class="mi">30</span><span class="p">),</span><span class="n">mode</span><span class="o">=</span><span class="s">&#39;vr&#39;</span><span class="p">,</span><span class="n">scale</span><span class="o">=</span><span class="s">&#39;lin&#39;</span><span class="p">,</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;rainbow4&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-vr46.png" src="../_images/snapd-vr46.png" />
<p>Note that we have used a linear scale here.</p>
</div>
</div>
<div class="section" id="rendering">
<h2>Rendering<a class="headerlink" href="#rendering" title="Permalink to this headline">¶</a></h2>
<p>The parameter <tt class="docutils literal"><span class="pre">rendering</span></tt> is by default set to <tt class="docutils literal"><span class="pre">map</span></tt>. This means that particles are projected on a grid (2d histrogram).
However, in some circumstances, it may be usefull to display simple objects, like a cube or a sphere, determined
by a small number of points. The object is obtained by linking all points with segments. This is done by setting
the parameter <tt class="docutils literal"><span class="pre">rendering</span></tt> to one of the following value:</p>
<blockquote>
<div><table border="1" class="docutils">
<colgroup>
<col width="13%" />
<col width="23%" />
<col width="65%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Value</th>
<th class="head">Call</th>
<th class="head">Meaning</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>lines</td>
<td>draw_lines</td>
<td>draw a continuous line linking all points</td>
</tr>
<tr><td>segments</td>
<td>draw_segments</td>
<td>draw disconnected segemnts (need persp=&#8217;on&#8217;)</td>
</tr>
<tr><td>points</td>
<td>draw_points</td>
<td>draw individual points</td>
</tr>
<tr><td>polygon</td>
<td>draw_polygon</td>
<td>draw a continuous closed line</td>
</tr>
<tr><td>polygon2</td>
<td>draw_polygonN 2</td>
<td>draw polygons with groups of 2 points</td>
</tr>
<tr><td>polygon4</td>
<td>draw_polygonN 4</td>
<td>draw polygons with groups of 4 points</td>
</tr>
<tr><td>polygon10</td>
<td>draw_polygonN 10</td>
<td>draw polygons with groups of 10 points</td>
</tr>
<tr><td>polygon#</td>
<td>draw_polygonN n</td>
<td>draw polygons with groups of n points</td>
</tr>
</tbody>
</table>
</div></blockquote>
<div class="section" id="examples">
<h3>Examples:<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h3>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pNbody</span> <span class="kn">import</span> <span class="n">ic</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span> <span class="o">=</span> <span class="n">ic</span><span class="o">.</span><span class="n">box</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">))</span>
</pre></div>
</div>
<img alt="../_images/rendering27.png" src="../_images/rendering27.png" />
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">),</span><span class="n">rendering</span><span class="o">=</span><span class="s">&#39;points&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/rendering-points25.png" src="../_images/rendering-points25.png" />
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">),</span><span class="n">rendering</span><span class="o">=</span><span class="s">&#39;lines&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/rendering-lines25.png" src="../_images/rendering-lines25.png" />
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">),</span><span class="n">rendering</span><span class="o">=</span><span class="s">&#39;polygon&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/rendering-polygon25.png" src="../_images/rendering-polygon25.png" />
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">),</span><span class="n">rendering</span><span class="o">=</span><span class="s">&#39;segments&#39;</span><span class="p">,</span><span class="n">persp</span><span class="o">=</span><span class="s">&#39;on&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/rendering-segments24.png" src="../_images/rendering-segments24.png" />
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">),</span><span class="n">rendering</span><span class="o">=</span><span class="s">&#39;polygon4&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/rendering-polygon429.png" src="../_images/rendering-polygon429.png" />
<p>Lets now display the <tt class="docutils literal"><span class="pre">sphere.dat</span></tt> model</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pNbody</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span> <span class="o">=</span> <span class="n">Nbody</span><span class="p">(</span><span class="s">&quot;sphere.dat&quot;</span><span class="p">,</span><span class="n">ftype</span><span class="o">=</span><span class="s">&#39;gadget&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">25</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span>
</pre></div>
</div>
<img alt="../_images/sphere-map45.png" src="../_images/sphere-map45.png" />
<p>This model is a discretised sphere.
using <tt class="docutils literal"><span class="pre">rendering='polygon'</span></tt> this gives:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">25</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="n">rendering</span><span class="o">=</span><span class="s">&#39;polygon&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/sphere-polygon45.png" src="../_images/sphere-polygon45.png" />
</div>
</div>
<div class="section" id="set-color-range">
<h2>Set color range<a class="headerlink" href="#set-color-range" title="Permalink to this headline">¶</a></h2>
<p>Once a mapping has been performed, it return a matrix containing physical values.
The latter must be transformed into an image coded by 256 colors, i.e, a matrix containing
integers between 0 and 255. The transformation from the initial matrix and the integer matrix
is determined using four parameters:</p>
<blockquote>
<div><table border="1" class="docutils">
<colgroup>
<col width="15%" />
<col width="85%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Parameter</th>
<th class="head">Meaning</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>scale</td>
<td>the scaling &#8216;lin&#8217; or &#8216;log&#8217;</td>
</tr>
<tr><td>cd</td>
<td>if scale=&#8217;lin&#8217;, this gives the position of the elbow</td>
</tr>
<tr><td>mn</td>
<td>the minimum physical value</td>
</tr>
<tr><td>mx</td>
<td>the maximum physical value</td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>In more details, if <img class="math" src="../_images/math/57c1ae3e3c98703798989a456983e0466caf3221.png" alt="M_p"/> is the physical matrix and <img class="math" src="../_images/math/50496bd204bbf34e209ecabe0729f4937fe69a1d.png" alt="M_i"/> the
integer one, the transformation is:</p>
<ol class="arabic simple">
<li>when <a href="#id5"><span class="problematic" id="id6">``</span></a>scale``=&#8217;lin&#8217;:</li>
</ol>
<div class="math">
<p><img src="../_images/math/5d3058d29f4cc8ace5f5584b3890489e8c8633b9.png" alt="M_i = 255 \frac{M_p-mn}{mx-mn}" /></p>
</div><ol class="arabic simple" start="2">
<li>when <a href="#id7"><span class="problematic" id="id8">``</span></a>scale``=&#8217;log&#8217;:</li>
</ol>
<blockquote>
<div><div class="math">
<p><img src="../_images/math/6b8410a234a19565ad35d0e6649c2fe20d8ce578.png" alt="M_i = 255 \left( \frac{\log( 1+\frac{M_p-mn}{cd}) }{ \log(1+ \frac{mx-mn}{cd}) } \right)" /></p>
</div></div></blockquote>
<p>If <a href="#id9"><span class="problematic" id="id10">``</span></a>mn``=0 or <a href="#id11"><span class="problematic" id="id12">``</span></a>mx``=0, or <a href="#id13"><span class="problematic" id="id14">``</span></a>cd``=0, these parameters are set automatically.</p>
<div class="section" id="id15">
<h3>Examples:<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h3>
<p>To cut the velocities at a values of -0.3 and 0.3 in the velocity map example:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">25</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span><span class="mi">30</span><span class="p">),</span><span class="n">mode</span><span class="o">=</span><span class="s">&#39;vr&#39;</span><span class="p">,</span><span class="n">scale</span><span class="o">=</span><span class="s">&#39;lin&#39;</span><span class="p">,</span><span class="n">mn</span><span class="o">=-</span><span class="mf">0.2</span><span class="p">,</span><span class="n">mx</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;rainbow4&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-vr-mnmx8.png" src="../_images/snapd-vr-mnmx8.png" />
<p>To change the contrast of an image:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">25</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span><span class="mi">30</span><span class="p">),</span><span class="n">cd</span><span class="o">=</span><span class="mf">1e2</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-vr-cd8.png" src="../_images/snapd-vr-cd8.png" />
</div>
</div>
<div class="section" id="set-filters">
<h2>Set filters<a class="headerlink" href="#set-filters" title="Permalink to this headline">¶</a></h2>
<p>Its possible to apply filter on the physical matrix, before converting it into an integer matrix.
To set a filter, you must specify the <tt class="docutils literal"><span class="pre">filter_name</span></tt> parameter and the <tt class="docutils literal"><span class="pre">filter_options</span></tt> parameter:
The actual filters are :</p>
<blockquote>
<div><table border="1" class="docutils">
<colgroup>
<col width="19%" />
<col width="81%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Filter name</th>
<th class="head">filter opts</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>convol</td>
<td>[nx,ny,sx,xy]</td>
</tr>
<tr><td>convolve</td>
<td>[nx,ny,sx,xy]</td>
</tr>
<tr><td>boxcar</td>
<td>[nx,ny,sx,xy]</td>
</tr>
<tr><td>gaussian</td>
<td>[sigma]</td>
</tr>
<tr><td>uniform</td>
<td>[sigma]</td>
</tr>
</tbody>
</table>
</div></blockquote>
<div class="section" id="id16">
<h3>Examples:<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h3>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">25</span><span class="p">],</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span><span class="mi">30</span><span class="p">),</span><span class="n">mode</span><span class="o">=</span><span class="s">&#39;vr&#39;</span><span class="p">,</span><span class="n">scale</span><span class="o">=</span><span class="s">&#39;lin&#39;</span><span class="p">,</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;rainbow4&#39;</span><span class="p">,</span><span class="n">filter_name</span><span class="o">=</span><span class="s">&#39;gaussian&#39;</span><span class="p">,</span><span class="n">filter_opts</span><span class="o">=</span><span class="p">[</span><span class="mi">5</span><span class="p">])</span>
</pre></div>
</div>
<img alt="../_images/snapd-filter7.png" src="../_images/snapd-filter7.png" />
</div>
</div>
<div class="section" id="draw-contours">
<h2>Draw contours<a class="headerlink" href="#draw-contours" title="Permalink to this headline">¶</a></h2>
<p>It is possible to add contours</p>
<blockquote>
<div><table border="1" class="docutils">
<colgroup>
<col width="19%" />
<col width="81%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Parameter</th>
<th class="head">Meaning</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>l_n</td>
<td>number of levels</td>
</tr>
<tr><td>l_min</td>
<td>mininum level value</td>
</tr>
<tr><td>l_max</td>
<td>maximum level value</td>
</tr>
<tr><td>l_kx</td>
<td>smoothing size in x</td>
</tr>
<tr><td>l_ky</td>
<td>smoothing size in x</td>
</tr>
<tr><td>l_color</td>
<td>color code</td>
</tr>
<tr><td>l_crush</td>
<td>&#8216;yes&#8217; or &#8216;no&#8217; , if yes, display only contours</td>
</tr>
</tbody>
</table>
</div></blockquote>
<div class="section" id="id17">
<h3>Examples:<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h3>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;obs&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;x0&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span><span class="mi">25</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;xp&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;alpha&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;size&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="mi">30</span><span class="p">,</span><span class="mi">30</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;mode&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;vr&#39;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;scale&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;lin&#39;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;palette&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;rainbow4&#39;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;filter_name&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;gaussian&#39;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;filter_opts&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">5</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;l_n&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;l_min&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.2</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;l_max&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.2</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;l_color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">255</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;rainbow4&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-contour5.png" src="../_images/snapd-contour5.png" />
</div>
</div>
<div class="section" id="draw-axis">
<h2>Draw axis<a class="headerlink" href="#draw-axis" title="Permalink to this headline">¶</a></h2>
<p>It is possible to draw a very simple axis around an image, using the following parameters:</p>
<blockquote>
<div><table border="1" class="docutils">
<colgroup>
<col width="12%" />
<col width="88%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Parameter</th>
<th class="head">Meaning</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>b_weight</td>
<td>weight of the line</td>
</tr>
<tr><td>b_xopts</td>
<td>x ticks options (m0,d0,h0,m1,d1,h1) m=dist between ticks, d=first tick h=height of the ticks</td>
</tr>
<tr><td>b_yopts</td>
<td>y ticks options (m0,d0,h0,m1,d1,h1) m=dist between ticks, d=first tick h=height of the ticks</td>
</tr>
<tr><td>b_color</td>
<td>smoothing size in x</td>
</tr>
</tbody>
</table>
</div></blockquote>
<div class="section" id="id18">
<h3>Examples:<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h3>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;b_weight&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;b_xopts&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;b_xopts&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;b_yopts&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parameters</span><span class="p">[</span><span class="s">&#39;b_color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">255</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;rainbow4&#39;</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-axe1.png" src="../_images/snapd-axe1.png" />
</div>
</div>
<div class="section" id="frsp">
<h2>frsp<a class="headerlink" href="#frsp" title="Permalink to this headline">¶</a></h2>
<p>This last parameter is used to smooth the image using an adaptative smoothing lenght.
The idea is to use the smoothing lenght determined by the SPH technique</p>
<div class="section" id="id19">
<h3>Examples:<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h3>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">ComputeSph</span><span class="p">(</span><span class="n">DesNumNgb</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span><span class="n">MaxNumNgbDeviation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">rsp</span> <span class="o">=</span> <span class="n">nb</span><span class="o">.</span><span class="n">Hsml</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">obs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">x0</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">xp</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span><span class="mi">50</span><span class="p">),</span><span class="n">view</span><span class="o">=</span><span class="s">&#39;xy&#39;</span><span class="p">,</span><span class="n">frsp</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/snapd-frsp.png" src="../_images/snapd-frsp.png" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/icon-small.jpg" alt="Logo"/>
</a></p>
<h3><a href="../index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Display Models</a><ul>
<li><a class="reference internal" href="#generate-the-example-file">Generate the example file</a></li>
<li><a class="reference internal" href="#the-display-method">The display method</a></li>
<li><a class="reference internal" href="#display-parameters">Display parameters</a></li>
<li><a class="reference internal" href="#set-the-observer-position">Set the observer position</a><ul>
<li><a class="reference internal" href="#example">Example:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#set-the-projection-mode">Set the projection mode</a><ul>
<li><a class="reference internal" href="#id1">Example:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#stero-mode">Stero mode</a><ul>
<li><a class="reference internal" href="#id2">Example:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#shape-of-the-final-image">Shape of the final image</a></li>
<li><a class="reference internal" href="#display-space">Display space</a><ul>
<li><a class="reference internal" href="#id3">Example:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#display-mode">Display mode</a><ul>
<li><a class="reference internal" href="#id4">Example:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#rendering">Rendering</a><ul>
<li><a class="reference internal" href="#examples">Examples:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#set-color-range">Set color range</a><ul>
<li><a class="reference internal" href="#id15">Examples:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#set-filters">Set filters</a><ul>
<li><a class="reference internal" href="#id16">Examples:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#draw-contours">Draw contours</a><ul>
<li><a class="reference internal" href="#id17">Examples:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#draw-axis">Draw axis</a><ul>
<li><a class="reference internal" href="#id18">Examples:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#frsp">frsp</a><ul>
<li><a class="reference internal" href="#id19">Examples:</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="Formats.html"
title="previous chapter">Setting a format file</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="InitialConditions.html"
title="next chapter">Generating initial conditions</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/rst/Display.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" size="18" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="../np-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="InitialConditions.html" title="Generating initial conditions"
>next</a> |</li>
<li class="right" >
<a href="Formats.html" title="Setting a format file"
>previous</a> |</li>
<li><a href="../index.html">pNbody v4 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2011, Yves Revaz.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div>
</body>
</html>

Event Timeline