Revision: 55946
          http://sourceforge.net/p/brlcad/code/55946
Author:   phoenixyjll
Date:     2013-07-03 05:56:48 +0000 (Wed, 03 Jul 2013)
Log Message:
-----------
Consider m_b when merging. And split the long line to make it clear.

Modified Paths:
--------------
    brlcad/trunk/src/libbrep/intersect.cpp

Modified: brlcad/trunk/src/libbrep/intersect.cpp
===================================================================
--- brlcad/trunk/src/libbrep/intersect.cpp      2013-07-03 05:08:23 UTC (rev 
55945)
+++ brlcad/trunk/src/libbrep/intersect.cpp      2013-07-03 05:56:48 UTC (rev 
55946)
@@ -896,14 +896,17 @@
                j--;
                continue;
            }
-           if (overlap[i].m_a[0] < pending[j].m_a[1] + intersection_tolerance
-               && (ON_Interval(overlap[i].m_b[0], 
overlap[i].m_b[1]).Intersection(ON_Interval(pending[j].m_b[0], 
pending[j].m_b[1])))) {
-               // Need to merge
-               merged = true;
-               pending[j].m_a[1] = std::max(overlap[i].m_a[1], 
pending[j].m_a[1]);
-               pending[j].m_b[0] = std::min(overlap[i].m_b[0], 
pending[j].m_b[0]);
-               pending[j].m_b[1] = std::max(overlap[i].m_b[1], 
pending[j].m_b[1]);
-               break;
+           if (overlap[i].m_a[0] < pending[j].m_a[1] + intersection_tolerance) 
{
+               ON_Interval interval_1(overlap[i].m_b[0], overlap[i].m_b[1]);
+               ON_Interval interval_2(pending[j].m_b[0], pending[j].m_b[1]);
+               if (interval_1.Intersection(interval_2)) {
+                   // Need to merge
+                   merged = true;
+                   pending[j].m_a[1] = std::max(overlap[i].m_a[1], 
pending[j].m_a[1]);
+                   pending[j].m_b[0] = std::min(overlap[i].m_b[0], 
pending[j].m_b[0]);
+                   pending[j].m_b[1] = std::max(overlap[i].m_b[1], 
pending[j].m_b[1]);
+                   break;
+               }
            }
        }
        if (merged == false)
@@ -1442,16 +1445,22 @@
                continue;
            }
            if (overlap[i].m_a[0] < pending[j].m_a[1] + intersection_tolerance) 
{
-               // Need to merge (TODO: need some consideration for surfaceB)
-               merged = true;
-               if (overlap[i].m_a[1] > pending[j].m_a[1]) {
-                   pending[j].m_a[1] = overlap[i].m_a[1];
-                   pending[j].m_b[2] = overlap[i].m_b[2];
-                   pending[j].m_b[3] = overlap[i].m_b[3];
-                   pending[j].m_A[1] = overlap[i].m_A[1];
-                   pending[j].m_B[1] = overlap[i].m_B[1];
+               ON_Interval interval_u1(overlap[i].m_b[0], overlap[i].m_b[2]);
+               ON_Interval interval_u2(pending[j].m_b[0], pending[j].m_b[2]);
+               ON_Interval interval_v1(overlap[i].m_b[1], overlap[i].m_b[3]);
+               ON_Interval interval_v2(pending[j].m_b[1], pending[j].m_b[3]);
+               if (interval_u1.Intersection(interval_u2) && 
interval_v1.Intersection(interval_v2)) {
+               // if the uv rectangle of them intersects, it's consider 
overlap.
+                   merged = true;
+                   if (overlap[i].m_a[1] > pending[j].m_a[1]) {
+                       pending[j].m_a[1] = overlap[i].m_a[1];
+                       pending[j].m_b[2] = overlap[i].m_b[2];
+                       pending[j].m_b[3] = overlap[i].m_b[3];
+                       pending[j].m_A[1] = overlap[i].m_A[1];
+                       pending[j].m_B[1] = overlap[i].m_B[1];
+                   }
+                   break;
                }
-               break;
            }
        }
        if (merged == false)

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to