О немО себе[code]/maps/
[code] | 4D | Modules | Quest | DepthInit.cpp
kMaps
4D
  Core
  PlugIns
  Modules
    AI
    TokaPH
    GUI
    Sound
    Terrain
    Quest
      Debug
        lua_functions.cpp
        InitLayer.cpp
        SceneLogic.cpp
        QuestScene.h
        QuestTalker.h
        DepthInit.h
        lua_functions.h
        QuestPlugIn.cpp
        Actors.cpp
        QuestScene.cpp
        StdAfx.h
        StdAfx.cpp
        QuestTalker.cpp
        QuestQUI.cpp
        QuestStock.cpp
        QuestGUI.h
        DepthInit.cpp
  SparseTileLayer.js
  auto_registrator_cc.c
  ed_line.c
  array-speed.php
  ed_line.cc.c
  codeZ.php
  time.php
  auto_registrator.c
 
#include "projectspace.h"
#include "DepthInit.h"

static void __mglMultMatrixVecd(const float matrix[16], const float in[4],
              
float out[4])
{
    
int i;

    for (
i=0i<4i++) {
    
out[i] =
        
in[0] * matrix[0*4+i] +
        
in[1] * matrix[1*4+i] +
        
in[2] * matrix[2*4+i] +
        
in[3] * matrix[3*4+i];
    }
}

static 
void __mglMultMatricesd(const float a[16], const float b[16],
                
float r[16])
{
    
int ij;

    for (
04i++) {
    for (
04j++) {
        
r[i*4+j] =
        
a[i*4+0]*b[0*4+j] +
        
a[i*4+1]*b[1*4+j] +
        
a[i*4+2]*b[2*4+j] +
        
a[i*4+3]*b[3*4+j];
    }
    }
}

static 
void __mglMakeIdentityd(float m[16])
{
    
m[0+4*0] = 1m[0+4*1] = 0m[0+4*2] = 0m[0+4*3] = 0;
    
m[1+4*0] = 0m[1+4*1] = 1m[1+4*2] = 0m[1+4*3] = 0;
    
m[2+4*0] = 0m[2+4*1] = 0m[2+4*2] = 1m[2+4*3] = 0;
    
m[3+4*0] = 0m[3+4*1] = 0m[3+4*2] = 0m[3+4*3] = 1;
}

static 
int __mglInvertMatrixd(const float src[16], float inverse[16])
{
    
int ijkswap;
    
float t;
    
float temp[4][4];

    for (
i=0i<4i++) {
    for (
j=0j<4j++) {
        
temp[i][j] = src[i*4+j];
    }
    }
    
__mglMakeIdentityd(inverse);

    for (
04i++) {
    
/*
    ** Look for largest element in column
    */
    
swap i;
    for (
14j++) {
        if (
fabs(temp[j][i]) > fabs(temp[i][i])) {
        
swap j;
        }
    }

    if (
swap != i) {
        
/*
        ** Swap rows.
        */
        
for (04k++) {
        
temp[i][k];
        
temp[i][k] = temp[swap][k];
        
temp[swap][k] = t;

        
inverse[i*4+k];
        
inverse[i*4+k] = inverse[swap*4+k];
        
inverse[swap*4+k] = t;
        }
    }

    if (
temp[i][i] == 0) {
        
/*
        ** No non-zero pivot.  The matrix is singular, which shouldn't
        ** happen.  This means the user gave us a bad matrix.
        */
        
return 0;
    }

    
temp[i][i];
    for (
04k++) {
        
temp[i][k] /= t;
        
inverse[i*4+k] /= t;
    }
    for (
04j++) {
        if (
!= i) {
        
temp[j][i];
        for (
04k++) {
            
temp[j][k] -= temp[i][k]*t;
            
inverse[j*4+k] -= inverse[i*4+k]*t;
        }
        }
    }
    }
    return 
1;
}

float finalMatrix[16];

void di_matrixprep(float _finalMatrix[16])
{
    
__mglMultMatricesd(World()->Camera()->GetModelView(),World()->Camera()->GetProjection(), finalMatrix);
    
__mglInvertMatrixd(finalMatrixfinalMatrix);
}

void di_ProcessVector(neV4 &pos,neV3 &_out)
{
    
pos[0]=pos[0]*2-1;
    
pos[1]=pos[1]*2-1;
    
pos[2]=pos[2]*2-1;
    
pos[3]=1;
    
neV4 out;
    
__mglMultMatrixVecd(finalMatrixposout);
    const 
float on3=1.0f/out[3];
    
_out[0]=out[0]*on3;
    
_out[1]=out[1]*on3;
    
_out[2]=out[2]*on3;
}

//#include "QuestScene.h"

extern float ReadZ(const int x,const int y);
extern ZGridData *ZDataGrid;

void di_ProcessPack(float realX,float realY,float deltainx,float deltainy,float fzdRezX,float fzdRezY)
{
     
float _y=0;
     
float _x=0;
     
DWORD UsedX=0;
     
DWORD UsedY=0;
     
float inx,iny;
     
iny=0;
     for(
float y=0;y<realY;++y,iny+=deltainy,_y+=fzdRezY)
     {
       const 
DWORD ddy=y*realX;
       
DWORD x=0;
       
inx=0;
       
_x=0;
       
UsedX=0;
      for(;
x<realX;++x,inx+=deltainx,_x+=fzdRezX)
      {
         
float z=ReadZ(inx,iny);//if(z==0)z=0.00000000010f;
         
{
         
neV4 pos(_x,_y,z,1);
         
di_ProcessVector(pos,ZDataGrid[x+ddy].V);
         
ZDataGrid[x+ddy].T[0]=_x;
         
ZDataGrid[x+ddy].T[1]=0.75-_y*0.75f;
         }
      }
     }
}


[CODE]/4D/Modules/Quest/DepthInit.cpp

Знаете как меня эти белорусы называют?
ДОХЛИК НЕМИРУШИЙ!
kashey