|
1568 | 1568 |
|
1569 | 1569 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
1570 | 1570 |
|
1571 |
| - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight |
1572 |
| - inline double trilinear_interp(double c[2][2][2], double u, double v, double w) { |
1573 |
| - auto accum = 0.0; |
1574 |
| - for (int i=0; i < 2; i++) |
1575 |
| - for (int j=0; j < 2; j++) |
1576 |
| - for (int k=0; k < 2; k++) |
1577 |
| - accum += (i*u + (1-i)*(1-u))* |
1578 |
| - (j*v + (1-j)*(1-v))* |
1579 |
| - (k*w + (1-k)*(1-w))*c[i][j][k]; |
1580 |
| - |
1581 |
| - return accum; |
1582 |
| - } |
1583 |
| - |
1584 |
| - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
1585 |
| - |
1586 | 1571 | class perlin {
|
1587 | 1572 | public:
|
1588 | 1573 | ...
|
|
1610 | 1595 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
1611 | 1596 | }
|
1612 | 1597 | ...
|
| 1598 | + private: |
| 1599 | + ... |
| 1600 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight |
| 1601 | + static double trilinear_interp(double c[2][2][2], double u, double v, double w) { |
| 1602 | + auto accum = 0.0; |
| 1603 | + for (int i=0; i < 2; i++) |
| 1604 | + for (int j=0; j < 2; j++) |
| 1605 | + for (int k=0; k < 2; k++) |
| 1606 | + accum += (i*u + (1-i)*(1-u))* |
| 1607 | + (j*v + (1-j)*(1-v))* |
| 1608 | + (k*w + (1-k)*(1-w))*c[i][j][k]; |
| 1609 | + |
| 1610 | + return accum; |
| 1611 | + } |
| 1612 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
1613 | 1613 | }
|
1614 | 1614 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
1615 | 1615 | [Listing [perlin-trilinear]: <kbd>[perlin.h]</kbd> Perlin with trilienear interpolation]
|
|
1818 | 1818 | ...
|
1819 | 1819 | private:
|
1820 | 1820 | ...
|
1821 |
| - inline double perlin_interp(vec3 c[2][2][2], double u, double v, double w) const { |
| 1821 | + static double perlin_interp(vec3 c[2][2][2], double u, double v, double w) { |
| 1822 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight |
1822 | 1823 | auto uu = u*u*(3-2*u);
|
1823 | 1824 | auto vv = v*v*(3-2*v);
|
1824 | 1825 | auto ww = w*w*(3-2*w);
|
1825 | 1826 | auto accum = 0.0;
|
1826 |
| - |
| 1827 | + |
1827 | 1828 | for (int i=0; i < 2; i++)
|
1828 |
| - for (int j=0; j < 2; j++) |
1829 |
| - for (int k=0; k < 2; k++) { |
1830 |
| - vec3 weight_v(u-i, v-j, w-k); |
1831 |
| - accum += (i*uu + (1-i)*(1-uu)) |
1832 |
| - * (j*vv + (1-j)*(1-vv)) |
1833 |
| - * (k*ww + (1-k)*(1-ww)) |
1834 |
| - * dot(c[i][j][k], weight_v); |
1835 |
| - } |
1836 |
| - |
| 1829 | + for (int j=0; j < 2; j++) |
| 1830 | + for (int k=0; k < 2; k++) { |
| 1831 | + vec3 weight_v(u-i, v-j, w-k); |
| 1832 | + accum += (i*uu + (1-i)*(1-uu)) |
| 1833 | + * (j*vv + (1-j)*(1-vv)) |
| 1834 | + * (k*ww + (1-k)*(1-ww)) |
| 1835 | + * dot(c[i][j][k], weight_v); |
| 1836 | + } |
| 1837 | + |
1837 | 1838 | return accum;
|
| 1839 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
1838 | 1840 | }
|
1839 |
| - ... |
| 1841 | + ... |
1840 | 1842 | }
|
1841 | 1843 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
1842 | 1844 | [Listing [perlin-interp]: <kbd>[perlin.h]</kbd> Perlin interpolation function so far]
|
|
0 commit comments