]> granicus.if.org Git - graphviz/commitdiff
Smoothing using triangles needs at least 3 nodes.
authorEmden R. Gansner <erg@alum.mit.edu>
Sat, 2 Aug 2014 16:24:15 +0000 (12:24 -0400)
committerEmden R. Gansner <erg@alum.mit.edu>
Sat, 2 Aug 2014 16:24:15 +0000 (12:24 -0400)
lib/sfdpgen/post_process.c

index 9ad29ea05b2ba8694aaeb6bb0f3e41582bb0ddf3..4adc2ec5adbd3d32e1e2839057054bb316a439ba 100644 (file)
@@ -1281,14 +1281,16 @@ void post_process_smoothing(int dim, SparseMatrix A, spring_electrical_control c
   case SMOOTHING_RNG:
   case SMOOTHING_TRIANGLE:{
     TriangleSmoother sm;
-    
-    if (ctrl->smoothing == SMOOTHING_RNG){
-      sm = TriangleSmoother_new(A, dim, 0, x, FALSE);
-    } else {
-      sm = TriangleSmoother_new(A, dim, 0, x, TRUE);
+
+    if (A->m > 2) {  /* triangles need at least 3 nodes */
+      if (ctrl->smoothing == SMOOTHING_RNG){
+        sm = TriangleSmoother_new(A, dim, 0, x, FALSE);
+      } else {
+        sm = TriangleSmoother_new(A, dim, 0, x, TRUE);
+      }
+      TriangleSmoother_smooth(sm, dim, x);
+      TriangleSmoother_delete(sm);
     }
-    TriangleSmoother_smooth(sm, dim, x);
-    TriangleSmoother_delete(sm);
     break;
   }
   case SMOOTHING_STRESS_MAJORIZATION_GRAPH_DIST: