[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31482] branches/soc-2010-rohith291991/ intern/comiso: updates to quadrangulation.

Rohith B V rohith291991 at gmail.com
Fri Aug 20 16:05:48 CEST 2010


Revision: 31482
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31482
Author:   rohith291991
Date:     2010-08-20 16:05:48 +0200 (Fri, 20 Aug 2010)

Log Message:
-----------
updates to quadrangulation.

Modified Paths:
--------------
    branches/soc-2010-rohith291991/intern/comiso/extern/CMesh.h
    branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp

Modified: branches/soc-2010-rohith291991/intern/comiso/extern/CMesh.h
===================================================================
--- branches/soc-2010-rohith291991/intern/comiso/extern/CMesh.h	2010-08-20 11:57:46 UTC (rev 31481)
+++ branches/soc-2010-rohith291991/intern/comiso/extern/CMesh.h	2010-08-20 14:05:48 UTC (rev 31482)
@@ -34,6 +34,7 @@
 	int * edges; //Indices of the edges, corresponding to neighbors
 	int vvar; //Vertex duplications
 	int index; //Index of the vertex
+	int test;
 	int flag; //Flag for various purposes (if needed)
 	int numNeighbors; //Number of neighboring vertices
 	int pvert; //Parent vertex in Dijsktra

Modified: branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp
===================================================================
--- branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp	2010-08-20 11:57:46 UTC (rev 31481)
+++ branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp	2010-08-20 14:05:48 UTC (rev 31482)
@@ -1428,7 +1428,7 @@
 			result->verts[vc].flag=0;
 			result->verts[vc].flag|=CV_INTEGER;
 			result->verts[vc].numNeighbors=0;
-			printf("SET1\n");
+			//printf("SET1\n");
 
 			result->verts[vc].index=vc;
 
@@ -1658,7 +1658,7 @@
 			result->verts[vc].flag=0;
 			result->verts[vc].flag|=CV_INTEGER;
 			result->verts[vc].numNeighbors=0;
-			printf("SET2\n");
+			//printf("SET2\n");
 
 			result->verts[vc].index=vc;
 
@@ -2454,19 +2454,20 @@
 							result->verts[max].index=result->verts[min].index;
 							//Set neighbors
 					
-							int newNeighbors=result->verts[min].numNeighbors;
+							int newNeighbors=result->verts[max].numNeighbors;
 					{
-					result->verts[max].neighbors=(int *)MEM_reallocN(result->verts[max].neighbors,(sizeof(int)*(result->verts[max].numNeighbors+newNeighbors)));
-					result->verts[max].edges=(int *)MEM_reallocN(result->verts[max].edges,(sizeof(int)*(result->verts[max].numNeighbors+newNeighbors)));
+					result->verts[min].neighbors=(int *)MEM_reallocN(result->verts[min].neighbors,(sizeof(int)*(result->verts[min].numNeighbors+newNeighbors)));
+					result->verts[min].edges=(int *)MEM_reallocN(result->verts[min].edges,(sizeof(int)*(result->verts[min].numNeighbors+newNeighbors)));
 					}
 
 					for(int g=0;g<newNeighbors;g++)
 						{
-				result->verts[max].neighbors[result->verts[max].numNeighbors+g]=result->verts[min].neighbors[g];
-				result->verts[max].edges[result->verts[max].numNeighbors+g]=result->verts[min].edges[g];
+				result->verts[min].neighbors[result->verts[min].numNeighbors+g]=result->verts[max].neighbors[g];
+				result->verts[min].edges[result->verts[min].numNeighbors+g]=result->verts[max].edges[g];
 						}
 
-						result->verts[max].numNeighbors+=newNeighbors;
+						result->verts[min].numNeighbors+=newNeighbors;
+						//printf("increased %d\n",result->verts[min].numNeighbors);
 							
 														
 							}
@@ -2490,18 +2491,20 @@
 	
 		for(int i=0;i<result->numEdges;i++)
 			{
-			if(result->edges[i].v[0]==27)
-				printf("%d\n",result->verts[result->edges[i].v[0]].index);
-			else if(result->edges[i].v[1]==27)
-				printf("%d\n",result->verts[result->edges[i].v[1]].index);
+			
 
-
 			result->edges[i].v[0]=result->verts[result->edges[i].v[0]].index;
 
 			result->edges[i].v[1]=result->verts[result->edges[i].v[1]].index;
 
-	
+				
+			}
+
+		for(int i=0;i<result->numVerts;i++)
+			{
 			
+			//printf("i: %d num: %d\n",i,result->verts[result->verts[i].index].numNeighbors);
+			
 			}
 
 
@@ -2511,6 +2514,14 @@
 	int j=0;
 	int numsing=0;
 
+	for(int i=0;i<result->numVerts;i++)
+		{
+		
+		result->verts[result->verts[i].index].vvar=0;
+		result->verts[result->verts[i].index].test=0;
+		result->verts[result->verts[i].index].pvert=0;
+
+		}
 	vc1=0;
 	ec1=0;
 		currentVerts.resize(numCV);
@@ -2518,8 +2529,11 @@
 	for(int i=0;i<result->numVerts;i++)
 		if(result->verts[i].flag & CV_INTEGER)
 			{
-			result->verts[i].flag|= CV_VISITED;
-			result->verts[i].pvert=0;
+			result->verts[result->verts[i].index].vvar=0;
+			result->verts[result->verts[i].index].test=0;
+
+
+			result->verts[result->verts[i].index].pvert=0;
 	currentVerts[0].push_back(result->verts[i].index);
 			if(result1->verts==NULL)
 			{result1->verts=(CVert*)MEM_mallocN(sizeof(CVert)*(vc1+1), "vertices");}
@@ -2550,60 +2564,99 @@
 
 			while(terminate)
 				{
-printf("1\n");
+//printf("1\n");
 				terminate=0;
 
 				for(int i=0;i<numCV;i++)
 					{
-					printf("2\n");
+				//	printf("2\n");
 
 					std::vector<int> newVerts;
 					newVerts.resize(0);
 
 					for(int j=0;j<currentVerts[i].size();j++)
 						{
-printf("3\n");
+//printf("3\n");
 						terminate++;
 
 						int index=result->verts[currentVerts[i][j]].pvert;
+						int test=result->verts[currentVerts[i][j]].test;
 						CVert *vert=&(result->verts[currentVerts[i][j]]);
 
+					//	printf("num Neighbors %d\n",vert->numNeighbors);
 						for(int k=0;k<vert->numNeighbors;k++)
 							{
 
-							printf("4\n");
-							int nIndex=vert->neighbors[k];
+					//	printf("neighbor index %d\n",vert->neighbors[k]);
+							int nIndex=result->verts[vert->neighbors[k]].index;
 
-							if(!(result->verts[nIndex].flag & CV_VISITED))
+						
+									
+								//printf("5\n");
+							//	result->verts[nIndex].flag |= CV_VISITED;
+
+					/*		if(result->verts[nIndex].flag & CV_INTEGER)
 								{
+								int in=result->verts[nIndex].index;
 
-								printf("5\n");
-								result->verts[nIndex].flag |= CV_VISITED;
+								for(int l=0;l<result->verts[index].numNeighbors;l++)
+									{
+									if(result->[result->verts[result->verts[nIndex].neighbors[l]]
+									
+									}
+								
+								}*/
+
 								if(!(result->verts[nIndex].flag & CV_INTEGER))
+
+									{
+
+									if(!(result->verts[nIndex].flag & CV_VISITED))
+										{result->verts[nIndex].flag |= CV_VISITED;	
+
+							//	printf("1\n");
 								result->verts[nIndex].pvert=index;
-								else
+								result->verts[nIndex].test=test;
+									newVerts.push_back(nIndex);
+										}
+									}
+								else if((result->verts[nIndex].vvar <4))
 									{
-									
-									printf("6\n");
+									result->verts[test].vvar++;
+									result->verts[nIndex].vvar++;
+									//printf("2\n");
+									int connect=0;
+								//	printf("6\n");
+									//printf("%d\n",result->verts[nIndex].vvar);
+									if((result->verts[nIndex].vvar==1))
+										{
 									result->verts[nIndex].pvert=vc1;
+									printf("vc1 %d\n",vc1);
+									connect=vc1;
 
 									//add point
 									if(result1->verts==NULL)
 										{result1->verts=(CVert*)MEM_mallocN(sizeof(CVert)*(vc1+1), "vertices");}
 									else
 										{
-printf("7\n");
+//printf("7\n");
 										result1->verts=(CVert*)MEM_reallocN(result1->verts,(sizeof(CVert)*(vc1+1)));}
 
-									result1->verts[vc1].co[0]=result->verts[i].co[0];
-									result1->verts[vc1].co[1]=result->verts[i].co[1];
-									result1->verts[vc1].co[2]=result->verts[i].co[2];
+									result1->verts[vc1].co[0]=result->verts[nIndex].co[0];
+									result1->verts[vc1].co[1]=result->verts[nIndex].co[1];
+									result1->verts[vc1].co[2]=result->verts[nIndex].co[2];
 									result1->verts[vc1].neighbors=NULL;
 									result1->verts[vc1].edges=NULL;
 									result1->verts[vc1].flag=0;
 									result1->verts[vc1].numNeighbors=0;
 									vc1++;
-
+										}
+									else
+										{
+										connect=result->verts[nIndex].pvert;
+										//printf("vc2 %d\n",connect);
+										
+										}
 									
 									//create edge
 									if(result1->edges==NULL)
@@ -2612,22 +2665,27 @@
 			result1->edges=(CEdge*)MEM_reallocN(result1->edges,(sizeof(CEdge)*(ec1+1)));
 	
 
-			result1->edges[ec1].v[0]=vc-1;
+			result1->edges[ec1].v[0]=connect;
 			result1->edges[ec1].v[1]=index;
+			//if(index==connect&&index==0)
+			//	printf("WTF\n");
+		
+			ec1++;
+		//	if(result->verts[nIndex].vvar <4)
+				newVerts.push_back(nIndex);
 									
 									}
+								else
+									{
+									printf("3\n");
+									//do nothing
+									
+									}
+								}
 
-
 							
-								newVerts.push_back(nIndex);
-	
 
 
-								}
-
-							}
-
-
 						}
 					currentVerts[i].resize(newVerts.size());
 
@@ -2656,6 +2714,6 @@
 	}*/
 
 
-	return result;
+	return result1;
 
 	}





More information about the Bf-blender-cvs mailing list