[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