0

我在尝试在 Qt 中用 C++ 实现 Bezier 曲线伪代码时遇到此错误,请使用以下方法实现。

    void GLWidget::drawBezierCurve() {
            int N_PTS = vertices.size();
            Point bezPoints[N_PTS][N_PTS];

            for (float u = 0.0; u <= 1.0; u += 0.01){
                for(int diag = N_PTS/2; diag >= 0;diag--){
                    for(int i = 0; i <= diag; i++){
                        int j = diag - i;
                        bezPoints[i][j] = (1.0 - u) * bezPoints[i][j+1] + u * bezPoints[i+1][j];
                    }
                }
                theImage.setPixel(bezPoints[0][0], bezPoints[0][0], RGBValue(100,12,140), 255);
            }
}
4

1 回答 1

1

这看起来是因为您将浮点数乘以 Point 对象。您很可能需要为此操作定义自己的乘法方法,或者重载 * 运算符来执行此操作,具体取决于您打算将浮点数乘以的 Point 对象中的哪些字段。

就像是:

float operator* (const float num, const Point& point) {
    return num * point.floating_point_field;
}

其中 floating_point_field 是您要相乘的类的成员,它也应该与 float 具有相同的类型,否则您将不得不开始做一些更复杂的事情来定义乘法。

或者,如果乘法与上面的示例一样简单,您可以在代码中使用 getter,例如:

u * bezPoints[i][j+1].get_floating_point_value()

希望有帮助,

马特

于 2013-03-05T13:07:37.663 回答