All pastes #624392 Raw Edit

Untitled

public c v1 · immutable
·published 2007-07-18 06:58 UTC
rendered paste body
BME_Mesh *BME_make_new_uvsphere(BME_Mesh *bmesh, float cent[3], float size, int rings, int segments){	BME_Edge **vedges;	BME_Edge **nvedges;	BME_Vert **verts;	float tmp_vec[3] = {0.0,0.0,0.0};	float pi = 3.1415926542;	float e = (pi*2)/segments;	float d = 0.0-pi;		int r,s,i,b;		/*allocate memory like a good little coder :) */	verts = MEM_mallocN(sizeof(BME_Vert*)*(rings*segments), "BME_VERTEX pointer array");	vedges = MEM_mallocN(sizeof(BME_Edge*)*segments, "BME_EDGE pointer array");	nvedges = MEM_mallocN(sizeof(BME_Edge*)*segments, "BME_EDGE pointer array");		/*make top and bottom verts*/	VECCOPY(tmp_vec, cent);		tmp_vec[2] = cent[2] + size;	verts[0] = BME_MV(bmesh, tmp_vec);		tmp_vec[2] = cent[2] - size;	verts[(rings*segments)-1] = BME_MV(bmesh, tmp_vec);		/* Make initial vertical edges*/	vedges[0] = BME_ME(bmesh,verts[0],verts[(rings*segments)-1]);	for (i = 1; i < segments; i++)	{		vedges[i] = BME_ME(bmesh,verts[0],verts[(rings*segments)-1]);	}		/*make initial ploys*/	/*for (i = 0; i < segments; i++)	{		BME_Edge tmp_edgelist[2];				tmp_edgelist[0] = &vedges[i];		tmp_edgelist[1] = &vedges[i+1];				BME_MF(bmesh,tmp_edgelist[0]->v1,tmp_edgelist[0]->v2, &tmp_edgelist,2);	}*/		/*split edges*/	/*make first ring*/	for	(i = 0, b = 1 ; i < segments; i++,b++)	{		verts[b] = BME_SEMV(bmesh,verts[0],vedges[i],&nvedges[i]);	}	/*make rest of rings*/	for (r = 1; r < rings; r++)	{		for	(s = 0; s < segments; s++)		{			verts[r*s] = BME_SEMV(bmesh,verts[(r*s)-segments],nvedges[s],&nvedges[s]);		}	}		/*split faces*/		/*TO BE DONE*/		/*Move Verts into position*/		for (r = 0; r < rings; r++)	{			for (i = 0; i <= segments; i++){			float tmpvec[3];						tmpvec[0] = cent[0] + (size/rings)*cos(d);			tmpvec[1] = cent[1] + (size/rings)*sin(d);			tmpvec[2] = cent[2] + verts[0]->co[2] - ((size/rings)*r);			VECCOPY(verts[i]->co, tmpvec);			d += e;			}	}		/*free allocated Mem like a good little coder :)*/	if (verts) MEM_freeN(verts);	if (vedges) MEM_freeN(vedges);	if (nvedges) MEM_freeN(nvedges);			return bmesh;}