Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
52
Src/Winamp/plush/CAM.C
Normal file
52
Src/Winamp/plush/CAM.C
Normal file
|
@ -0,0 +1,52 @@
|
|||
/******************************************************************************
|
||||
Plush Version 1.2
|
||||
cam.c
|
||||
Camera Control
|
||||
Copyright (c) 1996-2000, Justin Frankel
|
||||
******************************************************************************/
|
||||
|
||||
#include "plush.h"
|
||||
|
||||
void plCamDelete(pl_Cam *c) {
|
||||
if (c) free(c);
|
||||
}
|
||||
|
||||
void plCamSetTarget(pl_Cam *c, pl_Float x, pl_Float y, pl_Float z) {
|
||||
double dx, dy, dz;
|
||||
dx = x - c->X;
|
||||
dy = y - c->Y;
|
||||
dz = z - c->Z;
|
||||
c->Roll = 0;
|
||||
if (dz > 0.0001f) {
|
||||
c->Pan = (pl_Float) (-atan(dx/dz)*(180.0/PL_PI));
|
||||
dz /= cos(c->Pan*(PL_PI/180.0));
|
||||
c->Pitch = (pl_Float) (atan(dy/dz)*(180.0/PL_PI));
|
||||
} else if (dz < -0.0001f) {
|
||||
c->Pan = (pl_Float) (180.0-atan(dx/dz)*(180.0/PL_PI));
|
||||
dz /= cos((c->Pan-180.0f)*(PL_PI/180.0));
|
||||
c->Pitch = (pl_Float) (-atan(dy/dz)*(180.0/PL_PI));
|
||||
} else {
|
||||
c->Pan = 0.0f;
|
||||
c->Pitch = -90.0f;
|
||||
}
|
||||
}
|
||||
|
||||
pl_Cam *plCamCreate(pl_uInt sw, pl_uInt sh, pl_Float ar, pl_Float fov,
|
||||
pl_uChar *fb, pl_ZBuffer *zb) {
|
||||
pl_Cam *c;
|
||||
c = malloc(sizeof(pl_Cam));
|
||||
if (!c) return 0;
|
||||
memset(c,0,sizeof(pl_Cam));
|
||||
c->Fov = fov;
|
||||
c->AspectRatio = ar;
|
||||
c->ClipRight = c->ScreenWidth = sw;
|
||||
c->ClipBottom = c->ScreenHeight = sh;
|
||||
c->CenterX = sw>>1;
|
||||
c->CenterY = sh>>1;
|
||||
c->ClipBack = 8.0e30f;
|
||||
c->frameBuffer = fb;
|
||||
c->zBuffer = zb;
|
||||
c->Sort = 1;
|
||||
if (zb) c->Sort = 0;
|
||||
return (c);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue