Files
CydandClaude Fable 5 db7745fcd0 sda4: commit the Glaze developer hard-drive dump
Un-ignored: the dev drive is the ground truth the restoration and
emulator work constantly reference (DPL3/LIBDPL + VRENDER i860 renderer
source, BT/RP live+dev game trees, VGL_LABS pod boot, scene/audio
content). Kept in-repo for the pod-owner community.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 19:41:15 -05:00

73 lines
1.4 KiB
C++

#define X0 0
#define Y0 1
#define X1 2
#define Y1 3
#define X2 4
#define Y2 5
#define X 0
#define Y 1
#define Z 2
#define W 3
#define MINAREA 1.0e-5
typedef float POINT[4];
static int CalcDeltas2 ( POINT *s, int i, float *d)
{
float recip, temp, cc;
d[X0] = s[0][X];
d[Y0] = s[0][Y];
d[X1] = s[i][X] - s[0][X];
d[Y1] = s[i][Y] - s[0][Y];
d[X2] = s[i+1][X] - s[0][X];
d[Y2] = s[i+1][Y] - s[0][Y];
cc = d[X1]*d[Y2] - d[Y1]*d[X2];
temp = cc;
if (cc < 0)
temp = -cc;
if (temp < MINAREA) return -1; /* is polygon degenerate ? */
recip = 1.0f/cc;
d[X1] *= recip;
d[Y1] *= recip;
d[X2] *= recip;
d[Y2] *= recip;
return(0);
}
#define FitPlane(A, B, C, d,x0,x1,x2) \
{ \
dz1 = (x1) - (x0); \
dz2 = (x2) - (x0); \
A = d[Y2]*dz1 - d[Y1]*dz2; \
B = d[X1]*dz2 - d[X2]*dz1; \
C = (x0) - A * d[X0] - B * d[Y0]; \
}
static void test ( float *coeff )
{
register float A, B, C, dz1, dz2;
POINT tri[3];
float deltas[6];
CalcDeltas2 ( tri, 1, deltas );
FitPlane ( A, B, C, deltas, tri[0][Z], tri[1][Z], tri[2][Z] );
*coeff++=A;
*coeff++=B;
*coeff++=C;
FitPlane ( A, B, C, deltas, tri[0][W], tri[1][W], tri[2][W] );
*coeff++=A;
*coeff++=B;
*coeff++=C;
}