HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0812
GENKIOBAQの内部座標のズレ2解決


GENKI

リンク

2009/8/12(Wed) 01:30:04|NO.27015

obaqの内部座標について質問です。
次のようなスクリプトを実行すると、内部座標(0,0)に設置したつもりのオブジェクトが左上のほうに設置されてしまいます。

#include "obaq.as" screen 0,640,480 ; ウィンドウ初期化 qreset ; OBAQの初期化 qborder -100,-100,100,100 ;ここで中央の灰色●が内部座標(0,0)と確認できる。 qview 2, 2, 100, 100 ;見やすいよう拡大率を変更 ;図形を追加 qaddpoly my, 3, 0,0,0 ; 図形を追加。配置座標は内部座標(0,0)のつもりだけど… qtype my, type_bind ; qpos my,0,0,0 ;ここを有効にしても症状は変わらない。 qgetpos my, x, y, r ;現在のオブジェクト座標(内部座標)を取得 *main redraw 0 : color 0,0,0:boxf qexec ; OBAQによるオブジェクトの更新 pos 0,0 : color 255,255,255 : mes "オブジェクトの内部座標:("+x+", "+y+")" ;オブジェクト座標表示 qdraw ; オブジェクトの描画 redraw 1 : await 12 goto *main
ちなみにオブジェクトは座標固定なので、設置後に移動しているわけではありません。

qborder命令では内部座標は画面中心付近の灰色の●が(0,0)と説明され、また結果もそのとおりです。
しかしオブジェクトを(0,0)に設置すると灰色の●より左上に配置されます。
オブジェクトを設置するときの内部座標(0,0)は何を基準に決定されているのでしょうか。
また外壁の時と値がずれている理由は何でしょうか。



この記事に返信する


K-s

リンク

2009/8/12(Wed) 07:18:57|NO.27017

私もちょっとこの件で気になって調べていたので、分かっているだけ書きます。

どうもこの外壁の中心(灰色の●の位置)は内部座標で (80, 60) みたいです。
外壁にはオブジェクトID 0 が割り当てられているようで、

qgetpos 0, x, y, r
で外壁の座標が取得できます。
また内部座標は qview でオフセットを指定しない状態(デフォルト状態)で
ウィンドウの左上が (0, 0) になっています。
そして qview のズーム倍率が 1 だとちょうど表示ピクセルと対応しているようです。

#include "obaq.as" qreset qborder 0-80, 0-60, 639-80, 479-60 qview 1, 1 redraw 0 color 0, 0, 0 boxf color 255, 255, 255 qaddpoly id, 3, 30, 30 qtype id, type_bind qgetpos id, x, y, r pos x, y mes "(" + x + ", " + y + ")" qaddpoly id, 3, 400, 400 qtype id, type_bind qgetpos id, x, y, r pos x, y mes "(" + x + ", " + y + ")" qgetpos 0, x, y, r pos x, y mes "(" + x + ", " + y + ")" qexec qdraw redraw 1

qborder のリファレンスがちょっと紛らわしい(間違っている?)気がします。



GENKI

リンク

2009/8/12(Wed) 11:18:34|NO.27018

なるほど、そういうことでしたか。

> 画面の中央を(0,0)として、左上と右下の座標(OBAQの内部座標)を指定してください。

外壁はウィンドウ中央を基準として、そこからの相対内部座標を指定する。ということのようですね。
中央の灰色●が(0,0)なのだとばかり…あれは単に外壁オブジェクトの中央の印だったんですね。
納得です。アドバイス聞いてqviewをいろいろ変えてみたらわかりました。
内部座標の説明が少ないのもあってちょっと紛らわしいですね。


となるとqviewでオフセット変えてからqborderで外壁作ると、オフセット量によって外壁位置も変わってしまうんですね。
通常のオブジェクトをqtypeで外壁に設定したほうが紛らわしくなくてよいかもしれませんね。



ONION software Copyright 1997-2023(c) All rights reserved.