#include /* name: gl3d ver: 1.0 von: frank petersen / fh hamburg / wp, betr. prof.: dr.rer.nat baran inhalt: gl3d errechnet aus den 2-dim. geradengleichungen von zwei kameraaufnamen eine 3-dim. geradengleichung in parameterform */ params: m1,b1 aus gleichung fuer 1. 2d-gerade y = m1 * x + b1 m2,b2 aus gleichung fuer 2. 2d-gerade y = m2 * x + b2 sowie kameraabstand x und kamerahoehe z alle parameter in cm weltkoordinaten env.: compiler gnu c++, linux, should run everywhere (lol) */ main() { float b1,m1; /* gl. von kam.1 */ float b2,m2; /* gl. von kam.2 */ float x; /* x-koord.kam.2 */ float z; /* z-koord.kam.2 */ /* alle weiteren kam.-koord = 0 */ float a,b,c; /* parameter der 3d-ger.gl. */ float x1,y1,z1; /* offset der 3d-ger.gl. */ printf("generating 3d line from 2 2d-lines\n"); printf("\nb1 "); scanf("%f",&b1); printf("m1 "); scanf("%f",&m1); printf("b2 "); scanf("%f",&b2); printf("m2 "); scanf("%f",&m2); printf("x "); scanf("%f",&x); printf("z "); scanf("%f",&z); /* determinanten aus allgemeinen ebenengleichungen errechnen */ a = ( b2 + ( m2 * x ) - b1 ) / ( b1 * b2 * z ); b = (( m1 * b2 ) + ( m1 * m2 * x ) - ( m2 * b1 )) / ( b1 * b2 * z ); c = ( m2 - m1 ) / ( b1 * b2 ); /* offset fuer 3d-geradengleichung (x1,y1,z1) errechnen */ x1 = ( b1 - b2 ) / ( m2 - m1 ); y1 = ( m1 * x1 ) + b1; z1 = 0; /* ergebnisse ausgeben */ printf("\nkam.1 (0,0,%f) gl.1: y = %f * x + %f" ,z,m1,b1); printf("\nkam.2 (%f,0,%f) gl.2: y = %f * x + %f",x,z,m2,b2); printf("\nx = %f + %f * s",x1,a); printf("\ny = %f + %f * s",y1,b); printf("\nz = %f + %f * s",z1,c); printf("\n"); }