Upload
This commit is contained in:
commit
43352ff262
1291 changed files with 220976 additions and 0 deletions
81
VISU/VISUX.C
Normal file
81
VISU/VISUX.C
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
// this file contains seldom needed routines used mainly by the object
|
||||
// converter and utilities. The routines here also use math.
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include "c.h"
|
||||
|
||||
void calc_setrmatrix_camera(rmatrix *camera,long x2,long y2,long z2,long x,long y,long z,int roll)
|
||||
{
|
||||
int a;
|
||||
long ll;
|
||||
float f,fx,fy,fz;
|
||||
rmatrix tmpm;
|
||||
rmatrix tmpm2;
|
||||
{
|
||||
calc_setrmatrix_ident(camera);
|
||||
camera->x=-x2;
|
||||
camera->y=-y2;
|
||||
camera->z=-z2;
|
||||
{
|
||||
double fx,fy,fz,gx,gy,gz,hx,hy,hz;
|
||||
double fd;
|
||||
|
||||
/* Z */
|
||||
fx=(double)(x-x2);
|
||||
fy=(double)(y-y2);
|
||||
fz=(double)(z-z2);
|
||||
fd=1/sqrt(fx*fx+fy*fy+fz*fz);
|
||||
fx*=fd; fy*=fd; fz*=fd;
|
||||
|
||||
/* X */
|
||||
hx=fy;
|
||||
hy=-fx;
|
||||
hz=0;
|
||||
fd=1/sqrt(hx*hx+hy*hy+hz*hz);
|
||||
hx*=fd; hy*=fd; hz*=fd;
|
||||
|
||||
/* Y */
|
||||
gx=fy*hz-hy*fz;
|
||||
gy=fz*hx-hz*fx;
|
||||
gz=fx*hy-hx*fy;
|
||||
fd=1/sqrt(gx*gx+gy*gy+gz*gz);
|
||||
gx*=fd; gy*=fd; gz*=fd;
|
||||
|
||||
tmpm.m[0]=(long)(UNIT*( hx ));
|
||||
tmpm.m[1]=(long)(UNIT*( gx ));
|
||||
tmpm.m[2]=(long)(UNIT*( fx ));
|
||||
tmpm.m[3]=(long)(UNIT*( hy ));
|
||||
tmpm.m[4]=(long)(UNIT*( gy ));
|
||||
tmpm.m[5]=(long)(UNIT*( fy ));
|
||||
tmpm.m[6]=(long)(UNIT*( hz ));
|
||||
tmpm.m[7]=(long)(UNIT*( gz ));
|
||||
tmpm.m[8]=(long)(UNIT*( fz ));
|
||||
tmpm.x=tmpm.y=tmpm.z=0;
|
||||
}
|
||||
#if 0
|
||||
print("ORIGINAL:\n");
|
||||
print("%6i %6i %6i\n",tmpm.m[0],tmpm.m[1],tmpm.m[2]);
|
||||
print("%6i %6i %6i\n",tmpm.m[3],tmpm.m[4],tmpm.m[5]);
|
||||
print("%6i %6i %6i\n",tmpm.m[6],tmpm.m[7],tmpm.m[8]);
|
||||
memcpy(&tmpm2,&tmpm,sizeof(rmatrix));
|
||||
a=calc_invrmatrix(&tmpm);
|
||||
print("INVERSE (det=%i):\n",a);
|
||||
print("%6i %6i %6i\n",tmpm.m[0],tmpm.m[1],tmpm.m[2]);
|
||||
print("%6i %6i %6i\n",tmpm.m[3],tmpm.m[4],tmpm.m[5]);
|
||||
print("%6i %6i %6i\n",tmpm.m[6],tmpm.m[7],tmpm.m[8]);
|
||||
calc_mulrmatrix(&tmpm2,&tmpm);
|
||||
print("ORIGINAL*INVERSE:\n");
|
||||
print("%6i %6i %6i\n",tmpm2.m[0],tmpm2.m[1],tmpm2.m[2]);
|
||||
print("%6i %6i %6i\n",tmpm2.m[3],tmpm2.m[4],tmpm2.m[5]);
|
||||
print("%6i %6i %6i\n",tmpm2.m[6],tmpm2.m[7],tmpm2.m[8]);
|
||||
#else
|
||||
calc_invrmatrix(&tmpm);
|
||||
#endif
|
||||
calc_mulrmatrix(camera,&tmpm);
|
||||
calc_setrmatrix_rotxyz(&tmpm,0,-roll,0);
|
||||
tmpm.x=0; tmpm.y=0; tmpm.z=0;
|
||||
calc_applyrmatrix(camera,&tmpm);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue