5 float w(int i, int j, int k) { return 1; }
7 const float metaballR = 1;
8 float metaballField(float r) {
9 if (r > metaballR) return 0;
10 const float a = r / metaballR;
11 return (-4.f/9.f * powf(a, 6)) + (17.f/9.f * powf(a, 4)) - (22.f/9.f * powf(a, 2)) + 1;
14 const float normalizationFactor = 748.f / 405.f * M_PI * metaballR;
16 void calcContDist(Clouds *clds, float t) {
17 const int i0 = 2, j0 = 2, k0 = 2, t0 = 2;
18 const float divisor = 1.f /
24 for (int i = 0; i < CLOUD_DIM; i++) {
25 for (int j = 0; j < CLOUD_DIM; j++) {
26 for (int k = 0; k < CLOUD_DIM; k++) {
30 /* for (int tp = -t0, tp < t0; tp++) { */
31 for (int ip = -i0; ip < i0; ip++) {
32 for (int jp = -j0; jp < j0; jp++) {
33 for (int kp = -k0; kp < k0; kp++) {
36 sum += w(ip, jp, kp) * (float)clds->cld[i + ip][j + jp][k + kp];
43 clds->contDist[i][j][k] = sum / divisor;
50 void renderBillboard() {