[Bf-blender-cvs] [a9280be] soc-2016-uv_tools: Added check for point being inside IFP, also fixed a bug with rng

Phil Gosch noreply at git.blender.org
Sat Jul 9 12:16:20 CEST 2016


Commit: a9280bea458b3608869edc723aabf25fa5660d21
Author: Phil Gosch
Date:   Sat Jul 9 12:16:04 2016 +0200
Branches: soc-2016-uv_tools
https://developer.blender.org/rBa9280bea458b3608869edc723aabf25fa5660d21

Added check for point being inside IFP, also fixed a bug with rng

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

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

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

diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c
index bc9f520..937102b 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -5009,6 +5009,37 @@ PNoFitPolygon *p_inner_fit_polygon_create(PConvexHull *item)
 	return nfp;
 }
 
+PNoFitPolygon *p_collision_free_region_create(PNoFitPolygon **nfps, PNoFitPolygon *ifp)
+{
+	PNoFitPolygon *cfr = (PNoFitPolygon *)MEM_callocN(sizeof(*cfr), "PNoFitPolygon");
+	cfr->nverts = 0;
+	cfr->final_pos = NULL;
+
+	/* ToDo SaphireS */
+
+	/* NFPs Union */
+
+	/*cfr = ifp - U(nfps) */
+
+	return cfr;
+}
+
+bool p_temp_cfr_check(PNoFitPolygon **nfps, PNoFitPolygon *ifp, float p[2])
+{
+	float min[2], max[2];
+
+	/* Make sure point is inside IFP */
+	if (p[0] < ifp->final_pos[0]->x ||
+		p[1] < ifp->final_pos[0]->y ||
+		p[0] > ifp->final_pos[2]->x ||
+		p[1] > ifp->final_pos[2]->y) {
+		return false;
+	}
+	
+
+	return true;
+}
+
 /* Make sure vert order for item is CCW and for fixed is CW! */
 PNoFitPolygon *p_no_fit_polygon_create(PConvexHull *item, PConvexHull *fixed)
 {
@@ -5016,7 +5047,7 @@ PNoFitPolygon *p_no_fit_polygon_create(PConvexHull *item, PConvexHull *fixed)
 	nfp->nverts = item->nverts + fixed->nverts;
 	PVert **points = (PVert **)MEM_mallocN(sizeof(PVert *) * nfp->nverts, "PNFPPoints");
 	nfp->final_pos = (PPointUV **)MEM_callocN(sizeof(*nfp->final_pos) * nfp->nverts, "PNFPFinalPos");
-	int i, j, offset;
+	int i, j, offset = 0;
 
 	/* Assign verts of hulls to NFP */
 	for (i = 0; i < nfp->nverts; i++) {
@@ -5160,16 +5191,17 @@ bool p_chart_pack_individual(PHandle *phandle,  PChart *item)
 			rand1 = (int)(randf1 * (float)phandle->ncharts);
 			printf("rand1 choosen as: %i\n", rand1);
 
-			randf2 = BLI_rng_get_float(phandle->rng);
-			printf("randf2 choosen as: %f\n", randf2);
-			rand2 = (int)(randf2 * (float)phandle->ncharts);
-			printf("rand2 choosen as: %i\n", rand2);
-
 			if (nfps[rand1]) {
+
+				randf2 = BLI_rng_get_float(phandle->rng);
+				printf("randf2 choosen as: %f\n", randf2);
+				rand2 = (int)(randf2 * (float)(nfps[rand1]->nverts));
+				printf("rand2 choosen as: %i\n", rand2);
+
 				if (nfps[rand1]->final_pos[rand2]) {
 					end_pos[0] = nfps[rand1]->final_pos[rand2]->x;
 					end_pos[1] = nfps[rand1]->final_pos[rand2]->y;
-					found = true;
+					found = p_temp_cfr_check(nfps, ifp, end_pos);
 				}
 			}
 		}




More information about the Bf-blender-cvs mailing list