29 lines
687 B
C++
29 lines
687 B
C++
#include <gr2/types.h>
|
|
|
|
#include <cmath>
|
|
#include <cstdio>
|
|
|
|
int main() {
|
|
// ScaleShearCurve uses 9 values per control point. A quadratic span reads
|
|
// three control points, so this is the regression case for the former 3*4
|
|
// stack buffer in Curve::eval().
|
|
gr2::Curve curve;
|
|
curve.degree = 2;
|
|
curve.dim = 9;
|
|
curve.knots = {0.0f, 1.0f, 2.0f};
|
|
curve.controls.resize(27);
|
|
for (size_t i = 0; i < curve.controls.size(); ++i) {
|
|
curve.controls[i] = 1.0f + static_cast<float>(i) * 0.01f;
|
|
}
|
|
|
|
float out[9] = {};
|
|
curve.eval(0.5f, out);
|
|
for (float value : out) {
|
|
if (!std::isfinite(value)) {
|
|
std::fprintf(stderr, "non-finite 9D curve output\n");
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|