Commit: f3f2de8d01fcbc616882e67ae569f617d1b438ae
Author: Phil Gosch
Date:   Tue Oct 4 08:47:48 2016 +0200
Branches: soc-2016-uv_tools
https://developer.blender.org/rBf3f2de8d01fcbc616882e67ae569f617d1b438ae

First part of solution evaluation rewrite

===================================================================

M       source/blender/editors/uvedit/uvedit_parametrizer.c
M       source/blender/editors/uvedit/uvedit_parametrizer.h
M       source/blender/editors/uvedit/uvedit_unwrap_ops.c

===================================================================

diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c 
b/source/blender/editors/uvedit/uvedit_parametrizer.c
index 0a4fe6d..75c3387 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -236,8 +236,8 @@ typedef struct PChart {
                struct PChartIrregularPack {
                        PConvexHull *convex_hull; /* ToDo (SaphireS): Only 
convex for now */
                        PConvexHull **tris;
-                       PPointUV *best_pos;
-                       float area, scale;
+                       PPointUV *best_pos, *cur_pos;
+                       float area, last_scale;
                        float sa_params[3]; /* 0 = Theta, 1 = r, 2 = f  
according to Rotational placement of irregular polygons over containers with 
fixed dimensions using simulated annealing and no-fit polygons*/
                        int ntris;
                        bool decomposed;
@@ -528,6 +528,8 @@ static void p_chart_uv_scale(PChart *chart, float scale)
 {
        PVert *v;
 
+       printf("--uv_scaling chart with factor %f\n", scale);
+
        for (v = chart->verts; v; v = v->nextlink) {
                v->uv[0] *= scale;
                v->uv[1] *= scale;
@@ -5008,7 +5010,7 @@ static PConvexHull *p_convex_hull_new_tri(PChart *chart, 
const float(*coords)[2]
        float pos[2], maxy = -1.0e30f;
        int npoint = 3, right = 0, i;
 
-       printf("p_convex_hull_new_tri!\n");
+       //printf("p_convex_hull_new_tri!\n");
 
        conv_hull->h_verts = (PVert **)MEM_callocN(sizeof(conv_hull->h_verts) * 
npoint, "PConvHullPVerts");
        conv_hull->verts = (PPointUV **)MEM_callocN(sizeof(*conv_hull->verts) * 
npoint, "PConvexHullVerts");
@@ -5021,7 +5023,7 @@ static PConvexHull *p_convex_hull_new_tri(PChart *chart, 
const float(*coords)[2]
        /* p_chart_uv_bbox(chart, conv_hull->min_v, conv_hull->max_v); */
        INIT_MINMAX2(conv_hull->min_v, conv_hull->max_v);
        
-       printf("-p_convex_hull_new_tri: inits done!\n");
+       //printf("-p_convex_hull_new_tri: inits done!\n");
 
        /* get reference vertex */
        for (i = 0; i < conv_hull->nverts; i++) {
@@ -5030,9 +5032,9 @@ static PConvexHull *p_convex_hull_new_tri(PChart *chart, 
const float(*coords)[2]
                PPointUV *p = (PPointUV *)MEM_callocN(sizeof(*p), "PPointUV");
                p->x = coords[i][0];
                p->y = coords[i][1];
-               printf("-p_convex_hull_new_tri: p coords updated!\n");
+               //printf("-p_convex_hull_new_tri: p coords updated!\n");
                conv_hull->verts[i] = p;
-               printf("-p_convex_hull_new_tri: p assigned to verts!\n");
+               //printf("-p_convex_hull_new_tri: p assigned to verts!\n");
 
                /*PVert *v = (PVert *)MEM_callocN(sizeof(*v), "PVert");
                v->uv[0] = coords[i][0];
@@ -5044,7 +5046,7 @@ static PConvexHull *p_convex_hull_new_tri(PChart *chart, 
const float(*coords)[2]
                        if (compare_ff(v->uv[0],coords[i][0], 0.0001f)) {
                                if (compare_ff(v->uv[1], coords[i][1], 
0.0001f)) {
                                        conv_hull->h_verts[i] = v;
-                                       printf("-p_convex_hull_new_tri: v 
assigned to verts_h!\n"); 
+                                       //printf("-p_convex_hull_new_tri: v 
assigned to verts_h!\n"); 
                                }
                        }
                }
@@ -5053,7 +5055,7 @@ static PConvexHull *p_convex_hull_new_tri(PChart *chart, 
const float(*coords)[2]
                pos[0] = conv_hull->verts[i]->x;
                pos[1] = conv_hull->verts[i]->y;
                minmax_v2v2_v2(conv_hull->min_v, conv_hull->max_v, pos);
-               printf("-p_convex_hull_new_tri: bounds updated!\n");
+               //printf("-p_convex_hull_new_tri: bounds updated!\n");
 
                /* Note: FLT_EPSILON is to exact and produces wrong results in 
this context, use custom max_diff instead */
                if (compare_ff(maxy, conv_hull->verts[i]->y, 0.00001f)) {
@@ -5068,7 +5070,7 @@ static PConvexHull *p_convex_hull_new_tri(PChart *chart, 
const float(*coords)[2]
                        maxy = conv_hull->verts[i]->y;
                        conv_hull->ref_vert_index = i;
                }
-               printf("-p_convex_hull_new_tri: ref vert updated!\n");
+               //printf("-p_convex_hull_new_tri: ref vert updated!\n");
        }
 
        return conv_hull;
@@ -5154,7 +5156,7 @@ static bool p_convex_hull_intersect(PConvexHull *chull_a, 
PConvexHull *chull_b)
 static void p_convex_hull_compute_horizontal_angles(PConvexHull *hull)
 {
        int j;
-       printf("*p_convex_hull_compute_horizontal_angles\n");
+       //printf("*p_convex_hull_compute_horizontal_angles\n");
        for (j = 0; j < hull->nverts; j++) {
 
                /* Compute horizontal angle for each edge of hull (Needed for 
NFP) */
@@ -5184,7 +5186,7 @@ static void 
p_convex_hull_compute_horizontal_angles(PConvexHull *hull)
 static void p_convex_hull_compute_edge_components(PConvexHull *hull)
 {
        int j;
-       printf("*p_convex_hull_compute_edge_lengths\n");
+       //printf("*p_convex_hull_compute_edge_lengths\n");
        for (j = 0; j < hull->nverts; j++) {
 
                /* Compute edge components for each edge of hull (Needed for 
NFP) */
@@ -5242,14 +5244,14 @@ static PConvexHull 
*p_convex_hull_reverse_vert_order(PConvexHull *hull)
                        if (conv_hull_inv->verts[i]->x > 
conv_hull_inv->verts[conv_hull_inv->ref_vert_index]->x) {
                                miny = conv_hull_inv->verts[i]->y;
                                conv_hull_inv->ref_vert_index = i;
-                               printf("--p_convex_hull_reverse_vert_order: 
EQUAL min_y : x = %f, y = %f\n", conv_hull_inv->verts[i]->x, 
conv_hull_inv->verts[i]->y);
+                               //printf("--p_convex_hull_reverse_vert_order: 
EQUAL min_y : x = %f, y = %f\n", conv_hull_inv->verts[i]->x, 
conv_hull_inv->verts[i]->y);
                        }
                }
                else if (conv_hull_inv->verts[i]->y < miny) {
                        /* lower y value */
                        miny = conv_hull_inv->verts[i]->y;
                        conv_hull_inv->ref_vert_index = i;
-                       printf("--p_convex_hull_reverse_vert_order: SMALLER 
min_y : x = %f, y = %f\n", conv_hull_inv->verts[i]->x, 
conv_hull_inv->verts[i]->y);
+                       //printf("--p_convex_hull_reverse_vert_order: SMALLER 
min_y : x = %f, y = %f\n", conv_hull_inv->verts[i]->x, 
conv_hull_inv->verts[i]->y);
                }
 
                /* compute bounds */
@@ -5258,7 +5260,7 @@ static PConvexHull 
*p_convex_hull_reverse_vert_order(PConvexHull *hull)
                minmax_v2v2_v2(conv_hull_inv->min_v, conv_hull_inv->max_v, b);
        }
 
-       printf("--p_convex_hull_reverse_vert_order: FINAL min_y: x: %f, y: 
%f\n", conv_hull_inv->verts[conv_hull_inv->ref_vert_index]->x, 
conv_hull_inv->verts[conv_hull_inv->ref_vert_index]->y);
+       //printf("--p_convex_hull_reverse_vert_order: FINAL min_y: x: %f, y: 
%f\n", conv_hull_inv->verts[conv_hull_inv->ref_vert_index]->x, 
conv_hull_inv->verts[conv_hull_inv->ref_vert_index]->y);
 
        return conv_hull_inv;
 }
@@ -5334,14 +5336,14 @@ static void p_convex_hull_grow(PConvexHull *chull, 
float margin)
 static PConvexHull *p_convex_hull_reverse_direction(PConvexHull *item)
 {
        /* Invert direction of one convex hull -> CCW */
-       printf("inversing direction start\n");
+       //printf("inversing direction start\n");
        /* ref_vert_index now contains the vert with the lowest y value */
        PConvexHull *item_inv = p_convex_hull_reverse_vert_order(item);
-       printf("angles start\n");
+       //printf("angles start\n");
        p_convex_hull_compute_horizontal_angles(item_inv);
-       printf("components start\n");
+       //printf("components start\n");
        p_convex_hull_compute_edge_components(item_inv);
-       printf("inversing direction done!\n");
+       //printf("inversing direction done!\n");
 
        return item_inv;
 }
@@ -5377,7 +5379,7 @@ static PNoFitPolygon *p_inner_fit_polygon_create(PHandle 
*phandle, PConvexHull *
        float bounds_width = phandle->aspx;
        
        p1->x = item->verts[item->ref_vert_index]->x - item->min_v[0];
-       printf("item_ref_x: %f, %f, min_v[0]: %f\n", 
item->verts[item->ref_vert_index]->x, item->verts[item->ref_vert_index]->y, 
item->min_v[0]);
+       //printf("item_ref_x: %f, %f, min_v[0]: %f\n", 
item->verts[item->ref_vert_index]->x, item->verts[item->ref_vert_index]->y, 
item->min_v[0]);
        p1->y = 0.0f;
        nfp->final_pos[0] = p1;
 
@@ -5408,7 +5410,7 @@ static PConvexHull** p_decompose_triangulate_chart(PChart 
*chart, const float(*h
        PConvexHull **chull_tris = (PConvexHull 
**)MEM_mallocN(sizeof(PConvexHull *) * ntris, "PNFPs");
        chart->u.ipack.ntris = ntris;
 
-       printf("p_decompose_triangulate_chart!\n");
+       //printf("p_decompose_triangulate_chart!\n");
 
        /* triangulate */
        BLI_polyfill_calc((const float(*)[2])hull_points, nbounds, -1, r_tris);
@@ -5417,15 +5419,15 @@ static PConvexHull** 
p_decompose_triangulate_chart(PChart *chart, const float(*h
        for (i = 0; i < ntris; i++){
                cur_tri[0][0] = hull_points[r_tris[i][0]][0];
                cur_tri[0][1] = hull_points[r_tris[i][0]][1];
-               printf("p_decompose_triangulate_chart: tri[0]x: %f, y: %f\n", 
hull_points[r_tris[i][0]][0], hull_points[r_tris[i][0]][1]);
+               //printf("p_decompose_triangulate_chart: tri[0]x: %f, y: %f\n", 
hull_points[r_tris[i][0]][0], hull_points[r_tris[i][0]][1]);
 
                cur_tri[1][0] = hull_points[r_tris[i][1]][0];
                cur_tri[1][1] = hull_points[r_tris[i][1]][1];
-               printf("p_decompose_triangulate_chart: tri[0]x: %f, y: %f\n", 
hull_points[r_tris[i][1]][0], hull_points[r_tris[i][1]][1]);
+               //printf("p_decompose_triangulate_chart: tri[0]x: %f, y: %f\n", 
hull_points[r_tris[i][1]][0], hull_points[r_tris[i][1]][1]);
 
                cur_tri[2][0] = hull_points[r_tris[i][2]][0];
                cur_tri[2][1] = hull_points[r_tris[i][2]][1];
-               printf("p_decompose_triangulate_chart: tri[0]x: %f, y: %f\n", 
hull_points[r_tris[i][2]][0], hull_points[r_tris[i][2]][1]);
+               //printf("p_decompose_triangulate_chart: tri[0]x: %f, y: %f\n", 
hull_points[r_tris[i][2]][0], hull_points[r_tris[i][2]][1]);
 
                chull_tris[i] = p_convex_hull_new_tri(chart, cur_tri);
        }
@@ -5450,17 +5452,17 @@ static bool p_point_inside_nfp(PNoFitPolygon *nfp, 
float p[2])
 static bool p_is_concave(PChart *chart, const float(*hull_points)[2], int 
nboundaries)
 {
        if (nboundaries <= 4) {
-               printf("<= 4 boundary edges, convex\n");
+               //printf("<= 4 boundary edges, convex\n");
                return false;
        }
 
        /* ToDo SaphireS */
        if (is_poly_convex_v2((const float(*)[2])hull_points, nboundaries)){
-               printf("is_poly_convex true, convex\n");
+               //printf("is_poly_convex true, convex\n");
                return false;
        }
        else {
-               printf("is_poly_convex false, concave\n");
+               //printf("is_poly_convex false, concave\n");
                return true; 
        }
 }
@@ -5579,26 +5581,26 @@ static PNoFitPolygon 
*p_no_fit_polygon_create(PConvexHull *item, PConvexHull *fi
                        fpoints[i] = fixed->verts[i - item->nverts];
                }
        }
-       printf("-Assignment to points done\n");
+       //printf("-Assignment to points done\n");
 
        /* sort edges according to horizontal angle, biggest to smallest */
        /*qsort(points, (size_t)nfp->nverts, sizeof(PVert *), vert_anglesort);*/
        qsort(fpoints, (size_t)nfp->nverts, sizeof(PPointUV *), 
point_anglesort);
-       printf("-Sorting don

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to