/* programa para calculo dos coeficientes do plano dos 3 ptos */ #include /* determinante de uma matriz 3x3 */ float det3x3(m) float m[3][3]; { float res, d0, d1, d2; d0 = m[1][1]*m[2][2] - m[1][2]*m[2][1]; d1 = m[1][0]*m[2][2] - m[1][2]*m[2][0]; d2 = m[1][0]*m[2][1] - m[1][1]*m[2][0]; res = d0 * m[0][0] - d1 * m[0][1] + d2 * m[0][2]; return(res); } main() { float p1[4], p2[4], p3[4], w, x, y, z; float m[3][3]; while(1) { printf("\n\n Entre com coordenadas homogeneas.\n --->>> OS PTOS devem estar no sentido de rotacao do relogio em relacao ao plano."); printf("\n\n ponto 1: "); scanf("%f %f %f %f",&p1[0],&p1[1],&p1[2],&p1[3]); printf("\n ponto 2: "); scanf("%f %f %f %f",&p2[0],&p2[1],&p2[2],&p2[3]); printf("\n ponto 3: "); scanf("%f %f %f %f",&p3[0],&p3[1],&p3[2],&p3[3]); m[0][0] = p1[1]; m[0][1] = p1[2]; m[0][2] = p1[3]; m[1][0] = p2[1]; m[1][1] = p2[2]; m[1][2] = p2[3]; m[2][0] = p3[1]; m[2][1] = p3[2]; m[2][2] = p3[3]; w = det3x3(m); m[0][0] = p1[0]; m[0][1] = p1[2]; m[0][2] = p1[3]; m[1][0] = p2[0]; m[1][1] = p2[2]; m[1][2] = p2[3]; m[2][0] = p3[0]; m[2][1] = p3[2]; m[2][2] = p3[3]; x = -1*det3x3(m); m[0][0] = p1[0]; m[0][1] = p1[1]; m[0][2] = p1[3]; m[1][0] = p2[0]; m[1][1] = p2[1]; m[1][2] = p2[3]; m[2][0] = p3[0]; m[2][1] = p3[1]; m[2][2] = p3[3]; y = det3x3(m); m[0][0] = p1[0]; m[0][1] = p1[1]; m[0][2] = p1[2]; m[1][0] = p2[0]; m[1][1] = p2[1]; m[1][2] = p2[2]; m[2][0] = p3[0]; m[2][1] = p3[1]; m[2][2] = p3[2]; z = -1*det3x3(m); printf("\n Coeficientes do plano:\n w = %.4f x = %.4f y = %.4f z = %.4f\n\n",w,x,y,z); } }