Nagarei / DxLibEx

DXライブラリC++化プロジェクト
Boost Software License 1.0
31 stars 3 forks source link

図形クラスの作成 #50

Open Nagarei opened 8 years ago

Nagarei commented 8 years ago
Circle circle({320, 240}, 100);//(320, 240)を中心とする半径100の円
circle.draw(color::white);//円を描画

のような描画や

AABB aabb1(leftup_size{{100,100}, {250, 150}}});//(100, 100)を左上座標とする250*150の無回転の長方形
AABB aabb2(bottomcenter_size{{200,400}, {100, 200}}});//(200, 400)を底辺中央座標とする100*200の無回転の長方形

のような初期化や、

const Object& object1 = AABB(leftup_size{{100,100}, {250, 150}}});
const Object& object2 = Circle({320, 240}, 100);
//形が分からないもの同士でも判定できる
assert(is_intersects(object1 , object2 ) == true);

のような当たり判定がしたい。

参考: Siv3D

Nagarei commented 8 years ago

48 運動

47 二次元極座標

point_c,size_t texture系 との連携も考える必要がある。

作りたい図形(二次元)

yumetodo commented 8 years ago

とりあえず点はpoint_cクラスの継承でいいとして(名前被るな、どうしよう。というかDxLibで点って描画できましたっけ)、これらは内部にpoint_cクラスを持つということでいいと思います。

任意の図形の組み合わせは・・・どうしましょうか。

Nagarei commented 8 years ago

DxLibで点って描画できましたっけ

DrawPixel

任意の図形の組み合わせ

std::vector<std::unique_ptr<Object>>みたいな物をメンバに持つようにすれば、作るのはそこまで難しくないと思います。

yumetodo commented 8 years ago

DrawPixel

忘れてましたし、探し方も悪かった

std::vectorstd::unique_ptr

それだと有り難みがない気が。組み合わせることで描画が速くなる、とかがないと

Nagarei commented 8 years ago

任意の図形の組み合わせ

少し考えてみましたが、描画の高速化とかは難しいと思います。確かに有難みは薄いですが、図形の組み合わせも一つの図形とみなせるという点で有用だと思います。

yumetodo commented 8 years ago

組み合わせを実装するとすると、std::tupleみたいな感じの実装になるんですかね・・・。描画順の保証もしないといけないですし。型がboost::mplみたいになりそうで怖い(さすがにそこまで格納する人はいないと思いたい)。

で、これらなんですが、凸多角形と任意の図形の組み合わせに関してはdxle::screenを内部に持って置くべきですかね?それなら少し描画速度が上がるかもしれない

Nagarei commented 8 years ago

組み合わせを実装するとすると、std::tupleみたいな感じの実装になるんですかね

なるほど。そちらの方がユーザーに優しい気がします。

dxle::screenを内部に持って置く

なるほど。screenは重いので悩みどころですが...。そちらの方が良いと思います。

soukouki commented 8 years ago

dxle::DrawCirclecircle.drawがどちらも丸を描画しますが、どうしますか?

yumetodo commented 8 years ago

@soukouki それのどの辺がかぶっているのかよくわからないのですが、どういうことでしょうか

soukouki commented 8 years ago

それのどの辺がかぶっているのかよくわからないのですが、どういうことでしょうか

どちらも丸を描写するので。 説明が足りなくてすみません。

soukouki commented 8 years ago

丸いボタンを作るときにCircleのインスタンスを使うのはおかしいかな。

yumetodo commented 8 years ago

それをラップするんだから被ってなかったらおかしいと思うんですが、なんか私見落としているのかな・・・

丸いボタンを作るときにCircleのインスタンスを使うのはおかしいかな。

?