<div dir="ltr">Why my ray(line) never intersects the polygon?<br><br>I have a ray passing from up to down, and a polygon (like a circle at some depth around that line).<br><br>Here is the code<br><br>vtkSmartPointer<span style="color:#000000">&lt;</span>vtkPolygon<span style="color:#000000">&gt;</span><span style="color:#c0c0c0"> </span>polygon<span style="color:#c0c0c0"> </span><span style="color:#000000">=</span>
<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">            </span>vtkSmartPointer<span style="color:#000000">&lt;</span>vtkPolygon<span style="color:#000000">&gt;::</span>New<span style="color:#000000">();</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span>polygon<span style="color:#000000">-&gt;</span>GetPoints<span style="color:#000000">()-&gt;</span>InsertNextPoint<span style="color:#000000">(-</span><span style="color:#000080">35.0</span><span style="color:#000000">,</span><span style="color:#c0c0c0"> </span><span style="color:#000080">91.0</span><span style="color:#000000">,</span><span style="color:#000080">7.5</span><span style="color:#000000">);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span>polygon<span style="color:#000000">-&gt;</span>GetPoints<span style="color:#000000">()-&gt;</span>InsertNextPoint<span style="color:#000000">(</span><span style="color:#000080">47.0</span><span style="color:#000000">,</span><span style="color:#c0c0c0"> </span><span style="color:#000080">150.0</span><span style="color:#000000">,</span><span style="color:#c0c0c0"> </span><span style="color:#000080">7.5</span><span style="color:#000000">);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span>polygon<span style="color:#000000">-&gt;</span>GetPoints<span style="color:#000000">()-&gt;</span>InsertNextPoint<span style="color:#000000">(</span><span style="color:#000080">47.0</span><span style="color:#000000">,</span><span style="color:#c0c0c0"> </span><span style="color:#000080">150.0</span><span style="color:#000000">,-</span><span style="color:#000080">57.0</span><span style="color:#000000">);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span>polygon<span style="color:#000000">-&gt;</span>GetPoints<span style="color:#000000">()-&gt;</span>InsertNextPoint<span style="color:#000000">(-</span><span style="color:#000080">36.0</span><span style="color:#000000">,</span><span style="color:#c0c0c0"> </span><span style="color:#000080">92.0</span><span style="color:#000000">,</span><span style="color:#c0c0c0"> </span><span style="color:#000000">-</span><span style="color:#000080">57.0</span><span style="color:#000000">);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    #</span>polygon<span style="color:#000000">-&gt;</span>GetPoints<span style="color:#000000">()-&gt;</span>InsertNextPoint<span style="color:#000000">(-</span><span style="color:#000080">35.0</span><span style="color:#000000">,</span><span style="color:#c0c0c0"> </span><span style="color:#000080">91.0</span><span style="color:#000000">,</span><span style="color:#000080">7.5</span><span style="color:#000000">);</span><span style="color:#008000">//tried even closing the contour</span><span style="color:#c0c0c0"></span><span style="color:#008000"></span></pre>



<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">Inputs</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span><span style="color:#808000">double</span><span style="color:#c0c0c0"> </span>p1<span style="color:#000000">[</span><span style="color:#000080">3</span><span style="color:#000000">]</span><span style="color:#c0c0c0"> </span><span style="color:#000000">=</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{-</span><span style="color:#000080">0.0</span><span style="color:#000000">,-</span><span style="color:#000080">884.0</span><span style="color:#000000">,-</span><span style="color:#000080">28.0</span><span style="color:#000000">};</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span><span style="color:#808000">double</span><span style="color:#c0c0c0"> </span>p2<span style="color:#000000">[</span><span style="color:#000080">3</span><span style="color:#000000">]</span><span style="color:#c0c0c0"> </span><span style="color:#000000">=</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{-</span><span style="color:#000080">0.0</span><span style="color:#000000">,</span><span style="color:#000080">187.0</span><span style="color:#000000">,-</span><span style="color:#000080">28.0</span><span style="color:#000000">};</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span><span style="color:#808000">double</span><span style="color:#c0c0c0"> </span>tolerance<span style="color:#c0c0c0"> </span><span style="color:#000000">=</span><span style="color:#c0c0c0"> </span><span style="color:#000080">0.001</span><span style="color:#000000">;</span></pre>


<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">    </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">Outputs</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">      </span><span style="color:#808000">double</span><span style="color:#c0c0c0"> </span>t<span style="color:#000000">;</span><span style="color:#c0c0c0"> </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">Parametric</span><span style="color:#c0c0c0"> </span><span style="color:#008000">coordinate</span><span style="color:#c0c0c0"> </span><span style="color:#008000">of</span><span style="color:#c0c0c0"> </span><span style="color:#008000">intersection</span><span style="color:#c0c0c0"> </span><span style="color:#008000">(0</span><span style="color:#c0c0c0"> </span><span style="color:#008000">(corresponding</span><span style="color:#c0c0c0"> </span><span style="color:#008000">to</span><span style="color:#c0c0c0"> </span><span style="color:#008000">p1)</span><span style="color:#c0c0c0"> </span><span style="color:#008000">to</span><span style="color:#c0c0c0"> </span><span style="color:#008000">1</span><span style="color:#c0c0c0"> </span><span style="color:#008000">(corresponding</span><span style="color:#c0c0c0"> </span><span style="color:#008000">to</span><span style="color:#c0c0c0"> </span><span style="color:#008000">p2))</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">      </span><span style="color:#808000">double</span><span style="color:#c0c0c0"> </span>x<span style="color:#000000">[</span><span style="color:#000080">3</span><span style="color:#000000">];</span><span style="color:#c0c0c0"> </span><span style="color:#008000">//</span><span style="color:#c0c0c0"> </span><span style="color:#008000">The</span><span style="color:#c0c0c0"> </span><span style="color:#008000">coordinate</span><span style="color:#c0c0c0"> </span><span style="color:#008000">of</span><span style="color:#c0c0c0"> </span><span style="color:#008000">the</span><span style="color:#c0c0c0"> </span><span style="color:#008000">intersection</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">      </span><span style="color:#808000">double</span><span style="color:#c0c0c0"> </span>pcoords<span style="color:#000000">[</span><span style="color:#000080">3</span><span style="color:#000000">];</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">      </span><span style="color:#808000">int</span><span style="color:#c0c0c0"> </span>subId<span style="color:#000000">;</span><span style="color:#c0c0c0">    </span><span style="color:#008000"></span></pre>
<br><pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">      </span>vtkIdType<span style="color:#c0c0c0"> </span>iD<span style="color:#c0c0c0"> </span><span style="color:#000000">=</span><span style="color:#c0c0c0"> </span>polygon<span style="color:#000000">-&gt;</span>IntersectWithLine<span style="color:#000000">(</span>p1<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>p2<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>tolerance<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>t<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>x<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>pcoords<span style="color:#000000">,</span><span style="color:#c0c0c0"> </span>subId<span style="color:#000000">);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#008000">//</span><span style="color:#c0c0c0">    </span><span style="color:#008000">if(iD!=0)</span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#008000">//</span><span style="color:#c0c0c0">    </span><span style="color:#008000">{</span></pre>
<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#c0c0c0">        </span>qDebug<span style="color:#000000">()</span><span style="color:#c0c0c0"> </span><span style="color:#000000">&lt;&lt;</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&quot;iD:</span><span style="color:#c0c0c0"> </span><span style="color:#008000">&quot;</span><span style="color:#c0c0c0">;</span><span style="color:#000000"></span><span style="color:#000000"></span></pre>

<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="color:#008000">//</span><span style="color:#c0c0c0">    </span><span style="color:#008000">}</span></pre>
<pre style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><br><br>Thanks<br><br>Jothy<br></pre><br><br><div class="gmail_quote">On Mon, Feb 13, 2012 at 2:27 PM, David Doria <span dir="ltr">&lt;<a href="mailto:daviddoria@gmail.com">daviddoria@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Mon, Feb 13, 2012 at 9:25 AM, Jothybasu Selvaraj &lt;<a href="mailto:jothybasu@gmail.com">jothybasu@gmail.com</a>&gt; wrote:<br>

&gt; Thanks David,<br>
&gt;<br>
&gt; But vtkPolygon::PointInPolygon, I can only define the point of interest, to<br>
&gt; check whether it is inside the given polygon or not. I want to define the<br>
&gt; starting and end points of the ray and find whether it intersects a 2D<br>
&gt; polygon, the ray will pass through the polygon in any 3D angle.<br>
&gt;<br>
&gt; I will try the BSP tree.<br>
&gt;<br>
&gt; Jothy<br>
<br>
</div>The link I sent was to int vtkPolygon::IntersectWithLine, which should<br>
do exactly what you are asking.<br>
</blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr">Jothy<br></div><br>
</div>