#include #include float const_cord_x = 511.0/2.0, const_cord_y = 511.0/2.0, foco =400.0, baseline = 100.0; /* dist() - calcula a distancia entre dois ptos no espaco R3. Retorna a distancia calculada. */ float dist(p1, p2) float *p1, /* ponto 1 ; vetor[3] */ *p2; /* ponto 2 ; vetor[3] */ { int i; float dist = 0.0; /* distancia entre p1 e p2 */ for(i=0; i<3; i++) { dist += (p1[i] - p2[i]) * (p1[i] - p2[i]); } dist = sqrt(dist); return(dist); } /* funcao conversao de iso para 3d */ void conv_iso_3d(x_iso, y_iso, z_iso, x_3d, y_3d, z_3d) float x_iso, y_iso, z_iso; float *x_3d, *y_3d, *z_3d; { *x_3d = baseline * (x_iso - const_cord_x)/(2.0*z_iso); *y_3d = baseline * (y_iso*1.414214 - const_cord_y)/(2.0*z_iso); *z_3d = foco*baseline/(2.0*z_iso); } /* funcao conversao de 3d para iso */ void conv_3d_iso(x_3d, y_3d, z_3d, x_iso, y_iso, z_iso) float *x_iso, *y_iso, *z_iso; float x_3d, y_3d, z_3d; { *z_iso = foco*baseline/(2.0*z_3d); *x_iso = 2.0*(*z_iso)*x_3d/baseline + const_cord_x; *y_iso = 1.414214*(*z_iso)*y_3d/baseline + 0.707107*const_cord_y; } void main() { int i; float a[3], b[3], c[3], d[3]; while(1) { printf("\n\n Entre com o ponto x y z :"); scanf("%f %f %f",&a[0],&a[1],&a[2]); printf("\n entre com o segundo ponto x y z :"); scanf("%f %f %f",&b[0],&b[1],&b[2]); printf("\n Dist= %f",dist(a,b)); conv_3d_iso(a[0],a[1],a[2],&c[0],&c[1],&c[2]); conv_iso_3d(c[0],c[1],c[2],&a[0],&a[1],&a[2]); printf("\n\n Pontos 3d\n%f %f %f",a[0],a[1],a[2]); conv_3d_iso(b[0],b[1],b[2],&d[0],&d[1],&d[2]); printf("\n\n Pontos isotropicos\n%f %f %f",c[0],c[1],c[2]); printf("\n\n%f %f %f",d[0],d[1],d[2]); printf("\n Dist= %f",dist(c,d)); } }