|
|
@ -1,3 +1,4 @@ |
|
|
|
|
|
#include <asm-generic/errno.h>
|
|
|
#include <cmath>
|
|
|
#include <cmath>
|
|
|
#include <string>
|
|
|
#include <string>
|
|
|
#include <vector>
|
|
|
#include <vector>
|
|
|
@ -70,6 +71,41 @@ int main(int /*argc*/, char */*argv*/[]) |
|
|
double sideDistY; |
|
|
double sideDistY; |
|
|
double deltaDistX = (rayDirX == 0) ? 1e30 : std::abs(1 / rayDirX); |
|
|
double deltaDistX = (rayDirX == 0) ? 1e30 : std::abs(1 / rayDirX); |
|
|
double deltaDistY = (rayDirY == 0) ? 1e30 : std::abs(1 / rayDirY); |
|
|
double deltaDistY = (rayDirY == 0) ? 1e30 : std::abs(1 / rayDirY); |
|
|
|
|
|
double perpWallDist; |
|
|
|
|
|
int stepX; |
|
|
|
|
|
int stepY; |
|
|
|
|
|
int hit = 0; |
|
|
|
|
|
int side; |
|
|
|
|
|
if(rayDirX < 0) { |
|
|
|
|
|
stepX = -1; |
|
|
|
|
|
sideDistX = (posX -mapX) * deltaDistX; |
|
|
|
|
|
} else { |
|
|
|
|
|
stepX = 1; |
|
|
|
|
|
sideDistX = (mapX + 1.0 - posX) * deltaDistX; |
|
|
|
|
|
} |
|
|
|
|
|
if(rayDirY < 0) { |
|
|
|
|
|
stepY = -1; |
|
|
|
|
|
sideDistY = (posY - mapY) * deltaDistY; |
|
|
|
|
|
} else { |
|
|
|
|
|
stepY = 1; |
|
|
|
|
|
sideDistY = (mapY +1.0 - posY) * deltaDistY; |
|
|
|
|
|
} |
|
|
|
|
|
while(hit == 0) |
|
|
|
|
|
{ |
|
|
|
|
|
if(sideDistX < sideDistY) { |
|
|
|
|
|
sideDistX += deltaDistX; |
|
|
|
|
|
mapX += stepX; |
|
|
|
|
|
side = 0; |
|
|
|
|
|
} else { |
|
|
|
|
|
sideDistY += deltaDistY; |
|
|
|
|
|
mapY += stepY; |
|
|
|
|
|
side = 1; |
|
|
|
|
|
} |
|
|
|
|
|
if(worldMap[mapX][mapY] > 0) hit = 1; |
|
|
|
|
|
if(side == 0) perpWallDist = (sideDistX - deltaDistX); |
|
|
|
|
|
else perpWallDist = (sideDistY - deltaDistY); |
|
|
|
|
|
int lineHeight = (int)(h /perpWallDist); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |