|
|
@@ -1,58 +0,0 @@ |
|
|
|
// |
|
|
|
// Lol Engine - Xolotl algorithm test |
|
|
|
// |
|
|
|
// Copyright: (c) 2011 Soren Renner |
|
|
|
// (c) 2011 Sam Hocevar <sam@hocevar.net> |
|
|
|
// This program is free software; you can redistribute it and/or |
|
|
|
// modify it under the terms of the Do What The Fuck You Want To |
|
|
|
// Public License, Version 2, as published by Sam Hocevar. See |
|
|
|
// http://www.wtfpl.net/ for more details. |
|
|
|
// |
|
|
|
|
|
|
|
using namespace lol; |
|
|
|
|
|
|
|
struct Voxel |
|
|
|
{ |
|
|
|
bool passable, lock, copymarker; |
|
|
|
struct Voxel *imposter; |
|
|
|
}; |
|
|
|
|
|
|
|
struct MSV : public Voxel |
|
|
|
{ |
|
|
|
}; |
|
|
|
|
|
|
|
struct Ray |
|
|
|
{ |
|
|
|
float theta, phi; |
|
|
|
vec3 origin, xyz, dxyz, ddxyz, lxyz, popdelta; |
|
|
|
struct Voxel *terminalvoxel; |
|
|
|
bool terminate; |
|
|
|
ivec3 counter; |
|
|
|
int scale; |
|
|
|
float length; |
|
|
|
bool di, dj, dk, changed, traced, far; |
|
|
|
int face; |
|
|
|
vec3 normal, bloxnorm, corner; |
|
|
|
int dtl; |
|
|
|
}; |
|
|
|
|
|
|
|
template <int M> struct Cell : public MSV |
|
|
|
{ |
|
|
|
Voxel blox[M * M * M]; |
|
|
|
vec3 bloxnorm[M * M * M]; |
|
|
|
int m; |
|
|
|
|
|
|
|
void Serp(Voxel v, Voxel w) |
|
|
|
{ |
|
|
|
for (int i = 0; i < M; i++) |
|
|
|
for (int j = 0; j < M; j++) |
|
|
|
for (int k = 0; k < M; k++) |
|
|
|
if ((i == M_2) + (j == M_2) + (k == M_2) >= 2) |
|
|
|
blox[(i * M + j) * M + k] = v; |
|
|
|
else |
|
|
|
blox[(i * M + j) * M + k] = w; |
|
|
|
} |
|
|
|
|
|
|
|
static const int M_2 = M / 2; |
|
|
|
}; |
|
|
|
|