差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| cgfs:shaded_triangles [2025/11/19 15:14] – using std::swap; freemikan | cgfs:shaded_triangles [2025/12/12 15:57] (現在) – Replace overused back_inserters freemikan | ||
|---|---|---|---|
| 行 33: | 行 33: | ||
| } | } | ||
| - | | + | |
| - | | + | |
| for (int i = i0; i <= i1; ++i) { | for (int i = i0; i <= i1; ++i) { | ||
| - | *out++ = d; | + | *out = d; |
| + | ++out; | ||
| d += a; | d += a; | ||
| } | } | ||
| 行 77: | 行 78: | ||
| } | } | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | std:: |
| - | | + | std:: |
| Interpolate(yi0, | Interpolate(yi0, | ||
| Interpolate(yi0, | Interpolate(yi0, | ||
| - | | + | std:: |
| - | | + | std:: |
| Interpolate(yi1, | Interpolate(yi1, | ||
| Interpolate(yi1, | Interpolate(yi1, | ||
| - | | + | std:: |
| - | | + | std:: |
| Interpolate(yi0, | Interpolate(yi0, | ||
| Interpolate(yi0, | Interpolate(yi0, | ||
| + | // remove an overlapping point at x01.back and x12.front | ||
| x01.pop_back(); | x01.pop_back(); | ||
| assert(x01.size() + x12.size() == x02.size()); | assert(x01.size() + x12.size() == x02.size()); | ||
| + | // remove an overlapping point at h01.back and h12.front | ||
| h01.pop_back(); | h01.pop_back(); | ||
| assert(h01.size() + h12.size() == h02.size()); | assert(h01.size() + h12.size() == h02.size()); | ||
| - | | + | std:: |
| - | | + | std::merge(x01.begin(), |
| - | std::copy(x12.begin(), x12.end(), corner_x012); | + | |
| - | | + | std:: |
| - | | + | std::merge(h01.begin(), |
| - | | + | |
| + | | ||
| + | assert(h012.size() == h02.size()); | ||
| + | assert(x012.size() == h012.size()); | ||
| auto m = x012.size() / 2; | auto m = x012.size() / 2; | ||
| 行 121: | 行 126: | ||
| } | } | ||
| - | | + | std:: |
| for (int y = yi0; y <= yi2; ++y) { | for (int y = yi0; y <= yi2; ++y) { | ||
| - | | + | |
| - | | + | |
| h_segment.clear(); | h_segment.clear(); | ||
