0

私は現在、マウスの動きの角度を計算する必要があるopenFrameworksで一種の描画プログラムを作成中です。これは、プログラムが Photoshop と同様にブラシ ストロークを描画できる必要があるためです。

私はそれを非常にぎざぎざの方法で動作させることができました。コードを openFrameworks の MouseDragged イベントに配置しましたが、計算された角度は非常にぎざぎざで、とにかく滑らかではありません。描画部分がきれいに見えるようにするためには、滑らかである必要があります。

void testApp::mouseMoved(int x, int y ){
    dxX = x - oldX;
    dxY = y - oldY;

    movementAngle = (atan2(dxY, dxX) * 180.0 / PI);
    double movementAngleRad;
    movementAngleRad = movementAngle * TO_RADIANS;
    if (movementAngle < 0) {
        movementAngle += 360;
    }

    testString = "X: " + ofToString(dxX) + " ,";
    testString += "Y: " + ofToString(dxY) + " ,";
    testString += "movementAngle: " + ofToString(movementAngle);

    oldX = x;
    oldY = y;
}

コードを最適化してスムーズに動作するようにさまざまな方法を試しましたが、残念ながら結果はありませんでした。

これをどのように修正または最適化できるかについて素晴らしいアイデアをお持ちでしたら、私は非常に感謝しています.

4

1 に答える 1

0

ofPolyline オブジェクトを使用して、ある程度解決しました。

次のコードは、その仕組みを示しています。

void testApp::mouseMoved(int x, int y ){
    float angleRad;
    if (movement.size() > 4)
    { angleRad =  atan2(movement[movement.size()-4].y - y, movement[movement.size()-4].x -x);}
    movementAngle = (angleRad * 180 / PI) + 180;
    movement.addVertex(x,y,0);
}

コードに見られるように、角度の滑らかさを増すために、4 ステップ後ろに記録されたポイントを使用しています。これは、マウスがストロークのような動きで動かされた場合に機能します。マウスをゆっくり動かすと、まだジャギーが発生します。

于 2012-03-18T10:02:04.357 に答える