hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
小ワザ/ベクトル演算 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ

[hsp3]

ベクトルの計算のための汎用モジュール

ベクトル演算でよく使いそうなのをモジュールにまとめてみました。
これらの演算はEasy3Dなどには命令が用意されているので必要ないと思いますが、d3moduleなどでの利用が考えられると思います。

度数法からラジアンに変換するDeg2Radは普段でも使いそうな気がします。
math3d.hsp

+  math3d.hsp

このモジュールに登載している演算は次の通り。

内積DotPrd?命令Wikipediaより - 内積
外積CrossPrd?命令Wikipediaより - 外積
ベクトルの絶対値(ベクトルの長さ)absv関数ノルムというそうです。
度→ラジアン 変換Deg2Rad関数Wikipediaより - ラジアン
ラジアン→度 変換Rad2Deg関数
ベクトルを正規化VecNormalize?命令正規化…任意の方向のベクトルを単位ベクトルにすること。

計算方法は一般的なものなのでリンク先をみたり検索したほうがここで解説するよりわかりやすいと思います。
ですのでここではHSPでの実装例としての紹介としておきます。



使い方

例1(absv)

指定したベクトルの長さを取得する。

length = absv(x, y, z)

x,y,zにベクトルを指定するとlength にベクトルの長さが返ります。
使用例はこんな感じ。

+  ベクトルの長さ

例2(DotPrd?)

内積を使えばこんなことも出来ます。
マウスのホイールをぐりぐり回してください。

+  内積

コメント

  • あとはベクトルの回転とかでしょうか。でも、いまのところ個人的に需要がないので作る予定ないです。 [a] -- GENKI? 2007-02-01 (木) 23:04:32
  • 3次元の回転は難しそうですね。私はベクトル演算を利用したことがないのですが、皆さんはどう使っていますか?STGで使うとは聞いたことがあるのですが…… -- eller 2007-02-09 (金) 22:18:41
  • E3Dなど3Dゲームでよく使ってます。例えば内積は地面などへの反射の計算に使ってます。 -- GENKI? 2007-02-09 (金) 22:55:17
  • STGでは…たとえば外積を使って自分の向きに対する敵の方角を調べたりするなどでしょうか。それから、まえに衝突判定に外積を利用しようとしたことがあります。これです。 -- GENKI? 2007-02-09 (金) 23:05:28
  • なるほど、反射に利用できるのですね。3Dでは便利そうです。ちなみに私が聞いたのはホーミングミサイル(追跡弾)の旋回角度計算でした。 -- eller 2007-02-12 (月) 10:09:36
  • たぶんこれスパムです。同じ文面他でも見つけました。添付ファイルのhtmlファイルも同じスパムかもしれませんね。 -- GENKI? 2007-02-21 (水) 20:55:18
  • いかがわしげなhtmlファイルを削除しました。 -- GENKI? 2007-02-21 (水) 20:57:42
  • 一時的にこちらに移動してみます。 -- Irisawa 2007-02-25 (日) 03:13:14
  • ベクトル演算関連ということで、3次元ベクトルの演算用モジュールmD3Matrix(for HSP3)というものをバージョンアップしたんで宣伝に来ました。変換マトリクスの回転・拡大縮小が複雑な計算なしで出来るようになります。あ、そういえば基本的な命令、ベクトルの絶対値の計算機能とかつけてなかった。w -- GENKI? 2008-11-12 (水) 23:20:13
  • 絶対値(大きさ?)の計算とか単位ベクトルがないと、内積、外積の使い道がw
    ↓ベクトルをいじり始めた頃、内積、外積のイメージがつかみづらかったので、内積、外積のものすごくアバウトな説明 (詳細は外積についてあたりを参照で。)

    内積=どのくらい似たようなベクトルか。外積=どのくらい似ていないか。
    内積、外積を使う場所:角度でベクトルを分解したり、ベクトルのどちら側にいるかを判定したり。(交差判定とか)
    内積、外積を使うメリット:三角関数を使わずに色々できること(三角関数の演算は基本的に低速だと思いますので) -- つくね? 2008-11-13 (木) 22:26:12
  • 回転演算があるなら、クオータニオンとかジンバルロックあたりの説明があると良いかもしれませんね。クオータニオンは使い慣れると掛け算で回転できて結構便利。
    あと、3次元は、2次元の処理+残り1次元の処理で考えると分かりやすいです。 -- つくね? 2008-11-13 (木) 22:46:49
  • よく考えたら正規化命令作ったのに長さがわからないのも変な話ですね。次の更新の機会にでもつけておきます。
    「クオータニオンとかジンバルロック」このあたりはぜんぜん理解が追いついてません。なのでモジュールかも説明も無理です。orz -- GENKI? 2008-11-14 (金) 23:03:57

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2010-03-09 (火) 00:20:21 (1370d)