void DoLEE(GzRender* render, GzCoord* tri) { /* float x1, y1, z1; float x2, y2, z2; float x3, y3, z3; */ GzPixel* pixel; vert vert1,vert2,vert3; edge triEdge[3]; checkBound bound; plane triPlane; //GzCoord *tri = (GzCoord*)verts[0]; GzDepth orgZ = 0; //depth //put value into verts putVertValue(tri[0], &vert1.coord); putVertValue(tri[1], &vert2.coord); putVertValue(tri[2], &vert3.coord); //sort verts using Y value getTri(&vert1, &vert2, &vert3, triEdge); getPlane(triEdge[0], triEdge[1], &triPlane, vert1); //get a rectangle bound to check value getCheckBound(&bound, vert1, vert2, vert3); //TRACE("minX: %f, maxX: %f, minY: %f, maxY: %f \n", bound.minX, bound.maxX,bound.minY, bound.maxY); for(int i = bound.minY; i <= bound.maxY; i++) { for(int j = bound.minX; j <=bound.maxX; j++) { if(checkValid(j, i, triEdge)){ //implement later if((orgZ = getFbuf(render, j, i)) == -1)/*render->display->fbuf[RENDARRAY(j,i)].z;*/ { continue; } //TRACE("orgZ = %d\n", orgZ); if(checkZBuffer(j, i, triPlane,&orgZ)){ GzPutDisplay(render->display, j, i, ctoi(render->flatcolor[0]), ctoi(render->flatcolor[1]), ctoi(render->flatcolor[2]), 1, orgZ); //GzPutDisplay } } } } }
// Recalculate the normal for one vertex void Mesh::calcOneVertNormal(unsigned vert) { vertex& v = getVertex(vert); const set<int>& triset = v.getTriNeighbors(); set<int>::const_iterator iter; Vec3 vec; for (iter = triset.begin(); iter != triset.end(); ++iter) { // get the triangles for each vertex & add up the normals. vec += getTri(*iter).getNormalVec3(); } vec.normalize(); // normalize the vertex v.setVertNomal(vec); }
stetmesh::Tri stetmesh::Tet::getTri3(void) const { return getTri(3); }
stetmesh::Tri stetmesh::Tet::getTri2(void) const { return getTri(2); }
stetmesh::Tri stetmesh::Tet::getTri1(void) const { return getTri(1); }
stetmesh::Tri stetmesh::Tet::getTri0(void) const { return getTri(0); }