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


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0722
名無産回転したい6解決


名無産

リンク

2018/7/22(Sun) 19:12:21|NO.84834

DXlibでMV1SetRotationZYAxisを用いてオブジェクトを回転させたいのですが、あまり
理解できていません…
yyr で z軸回転
zzr で x軸回転
yy2r で yyr、zzrを軸に回転
としたいです。
もしよければ方法等ご教示願います。

https://drive.google.com/file/d/1MZ-VFvLwL2wReoZEkzcG01b3PeLKfdzd/view?usp=sharing

(DXライブラリでのリファレンスです。)
http://dxlib.o.oo7.jp/function/dxfunc_3d.html#R3N8



この記事に返信する


あらや

リンク

2018/7/22(Sun) 23:03:48|NO.84835

DxLib.asファイルの MV1SetRotationZYAxis の箇所を見てください。

第一引数以外が全てfloat型になっているのがわかると思います。
Z軸の方向・Y軸の方向・ZAxis を回転軸とした回転値、これらをdouble型で渡しているから
上手くいかないのでしょう。

doubleからfloatへ変換した上で MV1SetRotationZYAxis を使ってみると
想定通りに動くかもしれません。

型の変換は、以前のスレッドのモジュールを使用してみてください。
http://hsp.tv/play/pforum.php?mode=all&num=84660



名無産

リンク

2018/7/23(Mon) 09:31:37|NO.84837

そこはvgetD(double変数がつかえるタイプの、ベクトルを求める関数)を用いているので大丈夫なはずです…
少し前に思いついたので、帰ったら直してみようと思います



あらや

リンク

2018/7/23(Mon) 14:54:33|NO.84839

勘違いされているようですが、VGetDは(根本的には)double用というわけではありません。

DxLib.asを見てみると

#define global ctype VGet(%1,%2,%3) %1, %2, %3 ;〜省略〜 #define global VGetD VGet

名前だけはdouble型用になっているように見えますが、
構造的にはVGetと全く同じものでint型でも使えるただの配列変数です。

そもそも仮にVGetDがdouble用だったとしても
MV1SetRotationZYAxis自体がfloatにしか対応していないわけですから意味がありません。



名無産

リンク

2018/7/23(Mon) 15:34:46|NO.84840

floatの変数が必要な箇所はyy2rを入れる箇所だけなので…
一応完成はしました。



あらや

リンク

2018/7/23(Mon) 16:25:23|NO.84843

VGetDを使用しているZ軸の方向とY軸の方向もfloatに変換しなければいけないはずなんですが
なぜ完成したのでしょう。。。

まあ、何にしても出来たのならばいいのですが
後で何かしら不具合が起きる可能性があることを一応覚えておいてください。



リンク

2018/7/24(Tue) 18:18:26|NO.84858

うろ覚えなんですが、#funcでfloat指定の場合は、実際にdoubleを渡しても、内部的にfloatに変換してくれるってHSPの仕様だった気がします。逆は無理です。個人的には、ちょっと中途半端だからfloat関数が標準でほしいと思ってますが…



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