|
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