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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0420
sinOBAQでのオブジェクトの大きさ5解決


sin

リンク

2020/4/20(Mon) 13:53:37|NO.90142

例えばこんな風にオブジェクトを作成します。

#include "obaq.as"
screen 0,320,240
qreset
qaddpoly obj,4,40,30 ;オブジェクトの追加
*main
redraw 0
color:boxf
qexec
qdraw
redraw
await 20
goto *main

四角形のオブジェクトが作成されますが、この左角の座標が知りたいです。
qgetposで中心はわかりますが、角の座標はどうやって求めるのでしょうか?



この記事に返信する


kanamaru

リンク

2020/4/20(Mon) 16:34:51|NO.90143

実際に試してないですが、試しに左上を計算してみます。
大きさを指定してないときは10×10の正方形になる。
ということは初期座標中心(40,30)、左上(35,25)になる。距離は5√2
qgetposで取得した回転角度をθとすると、
もともと-3π/4なので、移動後の座標を(x,y)とすると、
移動後の座標は(x+5√2*cos(θ-3π/4),Y+5√2*sin(θ-3π/4))になるはず。
他の頂点でも同じように計算できます。
ちなみにどんなプログラムに使おうとしてるかわかりませんが、
オブジェクトが回転しないなら、単に位置の差分頂点の座標を移動させればいいです。



sin

リンク

2020/4/21(Tue) 08:36:23|NO.90149

返信、ありがとうございます。
書き足りませんでしたが、今回は回転の事は考えていません。

#include "obaq.as"
screen 0,320,240
qreset
qaddpoly obj,4,40,30,,10,10, colsw_none
qtype obj,type_bind
qaddpoly obj2,4,35,25,,5,5, colsw_none
qtype obj2,type_bind
*main
redraw 0
color:boxf
qexec
qdraw
redraw
await 20
goto *main

自分も左上(35,25)かと思ったのですが、
この様にするとずれています。
OBAQのオブジェクトの大きさと座標の単位が違うのでしょうか?
単位を同じに出来ないのでしょうか?



kanamaru

リンク

2020/4/21(Tue) 09:10:52|NO.90151

独自の座標系を持っていて、内部座標の4倍が表示する座標らしいです。
けど引数に指定するのは内部座標なので影響しないはず。
qgetaxisという命令を見つけたので試しましたが、
正常に取得できないようです。
ワイヤーフレームがあまり正確ではないらしいので、
このずれはその影響かもしれません。



kanamaru

リンク

2020/4/21(Tue) 09:21:36|NO.90152

ちなみにqgetaxisが正常に取得していないと判断した理由は、
正しくは左上(35,25)右下(45,35)サイズ(10,10)のところ
左上(-7,-7)右下(7,7)サイズ(57,57)となったからです。
しかも左上(-7,-7)右下(7,7)ならサイズは14×14のはずだし。
質問者さん(90149)のプログラムのobjに対して使いました。



sin

リンク

2020/4/21(Tue) 13:11:06|NO.90153

qgetaxisと言うのは知りませんでした。
勉強してみます。
ありがとうございました。



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