0

Qt の C++ でベジエ曲線擬似コードを実装しようとすると、このエラーが発生します。以下のメソッド実装があります。

    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

これは、float に Point オブジェクトを掛けているためのようです。ほとんどの場合、浮動小数点数を乗算する Point オブジェクトのフィールドに応じて、この演算用に独自の乗算メソッドを定義するか、* 演算子をオーバーロードしてこれを実行する必要があります。

何かのようなもの:

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

float_point_field は、乗算するクラスのメンバーであり、float と同じ型である必要があります。そうでない場合は、乗算を定義するために、より複雑な作業を開始する必要があります。

あるいは、乗算が上記の例のように単純な場合は、次のようなコードで getter を使用できます。

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

それが役立つことを願って、

マット

于 2013-03-05T13:07:37.663 に答える