setCenter()について
カレー  2021/05/09(Sun) 15:23
以下のプログラムを実行すると、(0,50)と出力されるはずが違う値になります。
VersionはOpenSiv3D SDK v0.4.3です。よろしくお願いします。

void Main(){
Rect a; //Rect aを定義
a.setCenter(0, 50); //aの中心位置を(0,50)にする
a.setSize(30, 30); //aの幅と高さを30にする
Print << a.center(); //aの中心位置を画面に出力する→(0,50)?

while (System::Update()) {}
}

実行結果



記事編集
Reputeless  2021/05/10(Mon) 23:39
Rect を初期化していないのが原因です。

Rect は左上の座標とサイズの情報を持ちます。
Rect::setCenter() は現在の幅と高さをもとに左上の座標を設定する処理ですが、その時点で幅と高さが不定値のため、このような結果になります。


@ Rect a{0,0,0,0}; もしくは Rect{ 0 };
のように初期化してから使用する

A 先に setSize() する

B Rect a{Arg::center(0,50), 30 };
のように名前付き引数版のコンストラクタを使う

のいずれかで回避できます。
編集
カレー  2021/05/11(Tue) 00:44
ご返事ありがとうございます。
回避策まで用意していただき恐縮です。
@で解決しました。
編集
件名
Re: setCenter()について
名前
コメント
画像添付


投稿修正キー (投稿を修正する時に使います)
画像認証 (右画像の数字を入力) 投稿キー

- WEB PATIO -