Esempio n. 1
0
static void draw_texture_tri(Real v1[3], Real v2[3], Real v3[3], int textureNum){
    glBindTexture(GL_TEXTURE_2D, textureNum);
    if(!draw_top){
        glBegin(GL_TRIANGLES);
        geom_calc_normal(v1, v2, v3, norm);
        glNormal3rv(norm);
        glTexCoord2f(0,0);
        glVertex3rv(v1);
        glTexCoord2f(1, 0);
        glVertex3rv(v2);
        glTexCoord2f(0, 1);
        glVertex3rv(v3);
        glEnd();
        draw_top = true;
    }else{
        glBegin(GL_TRIANGLES);
        geom_calc_normal(v1, v2, v3, norm);
        glNormal3rv(norm);
        glTexCoord2f(1,0);
        glVertex3rv(v1);
        glTexCoord2f(1, 1);
        glVertex3rv(v2);
        glTexCoord2f(0, 1);
        glVertex3rv(v3);
        glEnd();
        draw_top = false;
    }
    glBindTexture(GL_TEXTURE_2D, 0);
    
    totalVerts += 6;
}
Esempio n. 2
0
/* Returns [a, b, c, d] where:
			ax + by + cz + d = 0 

	plane normal = [a, b, c]
	d = -n dot P, where P is a point in the plane

*/
int geom_get_tri_plane(const Real* tri, Real* plane_ret) {
	// calc normal
	Real vn[3];
	geom_calc_normal(tri+0*3, tri+1*3, tri+2*3, vn);
	Real d = -geom_vector3_dot(vn, tri+0*3);
	geom_vector3_copy(vn, plane_ret);
	plane_ret[3] = d;
	return GEOM_NO_ERROR; 
}
Esempio n. 3
0
static void draw_new_tri(Real v1[3], Real v2[3], Real v3[3]){
    
    glBegin(GL_TRIANGLES);
    geom_calc_normal(v1, v2, v3, norm);
    glNormal3rv(norm);
    glVertex3rv(v1);
    glVertex3rv(v2);
    glVertex3rv(v3);
    glEnd();
}