| 118 | } |
| 119 | |
| 120 | std::vector<size_t> get_wedge_indices(const std::vector<BrushPoint>& points) { |
| 121 | if(points.size() < 2) |
| 122 | return {}; |
| 123 | std::vector<size_t> toRet; |
| 124 | toRet.emplace_back(0); |
| 125 | for(size_t i = 1; i < points.size() - 1; i++) { |
| 126 | Vector2f v1Norm = (points[i - 1].pos - points[i].pos).normalized(); |
| 127 | Vector2f v2Norm = (points[i + 1].pos - points[i].pos).normalized(); |
| 128 | if(v1Norm.dot(v2Norm) > -0.6f) |
| 129 | toRet.emplace_back(i); |
| 130 | } |
| 131 | toRet.emplace_back(points.size() - 1); |
| 132 | return toRet; |
| 133 | } |
| 134 | |
| 135 | std::vector<BrushPoint> smooth_points(const std::vector<BrushPoint>& points, size_t beginIndex, size_t endIndex, unsigned numOfDivisions) { |
| 136 | size_t pointsSize = endIndex - beginIndex + 1; |
no test coverage detected