私はOpenGL変換に必要な数学を行うための簡単なクラスを作ろうとしています。しかし、ここで私は途中で、さまざまな例を見ているうちに、ほとんどの図書館は行列クラスそのもの(静的メソッドを使った数学クラスのほとんどの時間)から数学を分離していることがわかります。これはどういう理由がありますか?マトリックスデータと数学を分けるべきですか?
複数の行列オブジェクトを作成しているときに、その関数も複数回作成されている場合は、パフォーマンスに影響するか、それとも完全に何かに影響しますか?
例: 数学関数を行列クラスに追加するほうがずっと簡単なので、行列自体を関数に渡す必要はありません。代わりに
public class LinearAlgebraMath {
public static Matrix4f rotate(Matrix4f target, double theta) {
target.setValue(0, 0, (float) Math.cos(theta));
target.setValue(1, 0, (float) Math.sin(theta));
target.setValue(0, 1, (float) Math.sin(theta));
target.setValue(1, 1, (float) Math.cos(theta));
return target;
}
}
public class Matrix4f {
//constructor...
//getters and setters...
}
の
class Matrix4f {
//constructor...
public void rotate(double theta) {
setValue(0, 0, (float) Math.cos(theta));
setValue(1, 0, (float) Math.sin(theta));
setValue(0, 1, (float) Math.sin(theta));
setValue(1, 1, (float) Math.cos(theta));
}
//getters and setters...
}
だから、最後に私はそれが私のために簡単ですので、複数のデータ構造を使用する算術演算を扱うを扱う場合は特に(マトリックスクラスに数学関数を追加することが好き)しかし、私は私の質問があるので、私の環境設定を低性能にしたくありません:上記の例を上回る例は上の例を上回っていますか?あなたは行列の複数を作成しているとき
'rotate'は回転を行わないことに注意してください。代わりに行列を回転行列にします。クラス自体にメソッドを追加する方が、Javaでは多くのオブジェクト指向(OO)であり、より一般的です。パフォーマンスの差はまったくありません。あなたがそれらの名前を正しく指定していることを確認してください。 – maaartinus
静的メソッドを使用してガベージコレクションのパフォーマンスの問題を回避しようとしていませんか? – jeff6times7