#include #include /* dist() - calcula a distancia entre dois ptos no espaco. Retorna a distancia calculada. */ float dist(p1, p2) float *p1, /* ponto 1 ; vetor[3] */ *p2; /* ponto 2 ; vetor[3] */ { float dist = 0.0; /* distancia entre p1 e p2 */ int i; for(i=0; i<3; i++) { dist += (p1[i] - p2[i]) * (p1[i] - p2[i]); } dist = sqrt(dist); return(dist); } float escalp(a, b) /* produto escalar de dois vetores a.b Retorna o produto */ float *a, *b; { float prod; prod = a[0]*b[0] + a[1]*b[1] + a[2]*b[2]; return(prod); } main() { float p1[3], p2[3], p3[3], p4[3],p1z, p2z, p1x, p2x ,p1y, p2y, kf, kb, m1,m2; float p3z, p4z, p3x, p4x ,p3y, p4y, esc, ang; float seg1[3], seg2[3]; printf("\nEntre com p1:"); scanf("%f %f %f",&p1x,&p1y,&p1z); printf("\nEntre com p2:"); scanf("%f %f %f",&p2x,&p2y,&p2z); printf("\nEntre com p3:"); scanf("%f %f %f",&p3x,&p3y,&p3z); printf("\nEntre com p4:"); scanf("%f %f %f",&p4x,&p4y,&p4z); while(1) { printf("\n\n kf = "); scanf("%f",&kf); printf("\n\n kb = "); scanf("%f",&kb); p1[0] = p1x * kb; p2[0] = p2x * kb; p1[1] = p1y * kb; p2[1] = p2y * kb; p1[2] = p1z * kf * kb; p2[2] = p2z * kf * kb; p3[0] = p3x * kb; p4[0] = p4x * kb; p3[1] = p3y * kb; p4[1] = p4y * kb; p3[2] = p3z * kf * kb; p4[2] = p4z * kf * kb; seg1[0] = p2[0] - p1[0]; seg1[1] = p2[1] - p1[1]; seg1[2] = p2[2] - p1[2]; seg2[0] = p4[0] - p3[0]; seg2[1] = p4[1] - p3[1]; seg2[2] = p4[2] - p3[2]; m1 = dist(p1,p2); m2 = dist(p3,p4); esc = escalp(seg1, seg2); ang = acos(esc/(m1*m2)) * 180.0/3.14159; printf("\n\n mod 1 = %f mod2 = %f kf = %f kb = %f",m1,m2,kf,kb); printf("\nANG = %f",ang); } }