luzhiled1333 / comp-library

Creative Commons Zero v1.0 Universal
4 stars 2 forks source link

[geometry/common/class] Implement Matrix<r, c, T> #146

Closed Luzhiled closed 1 year ago

Luzhiled commented 1 year ago

概要 / Overview

幾何用に特殊化された行列の実装

関連 issue, PR / Related issues, PRs

TODO

CI 関連項目

verify-check / verify

(cd $(git rev-parse --show-toplevel) && oj-verify all)

clang-format

(cd $(git rev-parse --show-toplevel) && clang-format -i $(find src/ test/ unit-test/ -name "*.hpp" -or -name "*.cpp"))
Luzhiled commented 1 year ago

あんまり何も考えていなかったけど array をネストしない場合は mat[a][b] みたいな書き方ができないか

Luzhiled commented 1 year ago

内部にもう一つクラス作ったりして参照返せばええな

Luzhiled commented 1 year ago

爆発して死んだので .at(i, j) を書いて終わります 〜完〜

Luzhiled commented 1 year ago

point vector のためにも matrix を部分特殊化したくて、そうなると基底クラスを作ったほうがよさそうだな

Luzhiled commented 1 year ago

scalar * Matrix が動かねえかも

Luzhiled commented 1 year ago

代入演算子周りがうまいこといってなくて、Matrix に InnerMatrix を代入したりということをしたい (as コピーするだけなので) んだけど、なんかずっと動かない

ei1333 commented 1 year ago

やはり行列ではないか

ei1333 commented 1 year ago
    Matrix(const InternalMatrix< r, c, T > &m) {
       this=m.らずひるど;
    }

みたいに書くとかではないのかな

Luzhiled commented 1 year ago

んーやってみる

Luzhiled commented 1 year ago

@ei1333 おい 助けてくれ main.cpp のコンパイルを通すことはできますか

Luzhiled commented 1 year ago

TODO: internal を別ファイルに分ける(?)

Luzhiled commented 1 year ago

最終的に std::array のコピー周りでも死んだりして困ったので std::vector を使うことにしました まあサイズに変更があったりするわけじゃないから多分速度で問題になることはないんじゃないかな

Luzhiled commented 1 year ago

行列積の実装は必要になってからでいいかな

Luzhiled commented 1 year ago

TODO

Luzhiled commented 1 year ago
geometry
├── 2d
│   ├── common
│   ├── r2
│   └── z2
└── common
    └── class
        ├── column-vector.hpp
        ├── internal
        │   └── matrix.hpp
        └── matrix.hpp

にしようかな?

Luzhiled commented 1 year ago

整数か整数じゃないかよりも何次元かのほうが大事だと思っているが、まあこれには諸説あるな

Luzhiled commented 1 year ago
Luzhiled commented 1 year ago

namespace を

Luzhiled commented 1 year ago
2d
├── common
│   └── class
│       └── vector-2d.hpp
├── r2
│   └── class
│       └── vector-2d.hpp
└── z2
    └── class
        └── vector-2d.hpp
common
└── class
    ├── column-vector.hpp
    ├── internal
    │   └── matrix.hpp
    └── matrix.hpp

現状です

Luzhiled commented 1 year ago

eps どこに置くかとか決めないと r2::Vector2d の operator== は実装できないのでこいつは一旦常に false を返すようにしています この PR ではないかな

Luzhiled commented 1 year ago

飽きてきた merge していい?