d2cモジュール

ダウンロード

d2cモジュール Ver.1.09 (2021/12/31)
ダウンロード(412 KB)

内容

 このパッケージはHSP3用モジュールです。

 D2C(Dimension 2 Calculation)モジュールは、2D空間での計算において使用頻度が高い命令をまとめたHSP3用モジュールです。

 簡単なベクトル演算や衝突判定などを行うことが出来ます。2Dゲームやツール開発などで活用ください。主に次のような機能があります。

ライセンス:NYSL

主な機能

  • 多角形の作成
  • 直線の反射
  • 点光源の影作成
  • 図形の接線取得
  • 図形の簡易描画
  • 基本計算機能(内積、外積、法線ベクトル、ベクトル回転、ベクトル正規化)
  • 図形の計測機能(角度、長さ、面積、外接円など)
  • 衝突判定
  • 線分と図形の交点取得
  • 軌道予測計算
  • 線分の反射軌道計算
  • 線分の屈折計算(応用例)

動作環境

  • Windows10で動作確認済み。
  • HSP3でのプログラミング作業にご利用ください。

インストール・アンインストール

バージョンアップ
doclibフォルダに作成したd2cmフォルダの内容を削除してください。上書きすると古いサンプルプログラムが残ったままになります。 あとは新規インストールと手順は同じです。

新規インストール
d2cm.hspをHSP3インストールフォルダのcommonフォルダにコピーしてください。残りのファイルはdoclibフォルダにd2cmフォルダを作成して、その中にすべてコピーしてください。これでインストール作業は完了です。

アンインストール
コピーしたファイルを全て削除すれば完了です。

サンプルスクリプト

ほぼすべての命令についてサンプルスクリプトを用意してあります。 説明文章だけではわかりにくい使い方の把握の参考にしてください。

サンプルのサムネイル画像もつけているので探しやすいと思います。

衝突判定

次の組み合わせの衝突判定が可能です。

線分楕円カプセル矩形回転矩形多角形
線分
楕円
カプセル
矩形
回転矩形
多角形

●▲:専用の衝突判定命令あり。
▲:判定精度はあまり高くありません。
○:多角形でその他の形状を再現して作成することで、多角形同士として判定した場合。
△:距離を計算できます。

ベンチマークテスト

衝突判定系の命令のベンチマークテストを行うスクリプトをつけました。 計算負荷の見積りに使用してください。

技術的解説

 本モジュールが備えている一部の機能について、技術的な解説については「衝突判定」のページを参照してください。 移動物体の狙撃と影の作成について、実装方法を解説しています。

命令・関数の一覧

作成

d2cMakePolygon多角形を作成

反射

d2cColRayRefLineSgt 反射光のと鏡面の衝突判定
d2cGetPosLineSymmetry 線対称座標を取得
d2cGetPosPointSymmetry 点対称座標を取得

変換

d2cConvShape形状データを予備変換
d2cConvShape2形状データを予備変換2
d2cConvShapeReverse多角形を裏返す

接線

d2cCreateShadowPolygon影を作成
d2cSetShadowOption影作成のオプションを設定
d2cTangentOfCapsuleカプセルの接線
d2cTangentOfCircle円の接線
d2cTangentOfEllipse楕円の接線
d2cTangentOfPolygon多角形の接線
d2cTangentOfRSquare回転矩形の接線
d2cTangentOfSquare矩形の接線

描画

d2cDrawBox中空の矩形を描画
d2cDrawCapsuleカプセルを描画
d2cDrawCircle中空の円を描画
d2cDrawPolygon多角形を描画
d2cDrawStrtLine直線を描画
d2cDrawBoxF塗りつぶし矩形を描画
d2cDrawCircleF塗りつぶし円を描画

数学サポート命令

d2cGetNormalVector法線ベクトルを取得
d2cInnerProduct内積を算出
d2cRotate平面座標回転演算
d2cVectorNormalizeベクトルを正規化
d2cVectorProductクロス積(外積)を算出

測定

d2cAngleByPoints3点による角度を計算
d2cDistance2点間の距離を算出
d2cDistancePoint2Line点から直線までの距離を取得
d2cGetCenterOfGravity多角形の重心座標を取得
d2cGetGaisetsuCircle三角形の外接円を計算
d2cGetGaisetsuCircleSquare矩形の外接円を計算
d2cLengthベクトルの長さを算出
d2cPolygonArea多角形の面積を算出

衝突判定

d2cColCapsuleCapsuleカプセルとカプセルの衝突判定
d2cColCircleCapsule円とカプセルの衝突判定
d2cColCircleCircle円と円の衝突判定
d2cColEllipseEllipse楕円と楕円との衝突判定
d2cColInsideCapsule点とカプセルの衝突判定
d2cColInsideCircle点と円の衝突判定
d2cColInsideEllipse点と楕円との衝突判定
d2cColInsidePolygon点と多角形の衝突判定
d2cColInsideRSquare点と回転矩形の衝突判定
d2cColInsideSquare点と矩形の衝突判定
d2cColLineCircle直線と円の衝突判定
d2cColLineEllipse直線と楕円の衝突判定
d2cColLineSgtCapsule線分とカプセルの衝突判定
d2cColLineSgtCircle線分と円の衝突判定
d2cColLineSgtEllipse線分と楕円の衝突判定
d2cColLineSgtLineSgt線分と線分の衝突判定
d2cColLineSgtPolygon線分と多角形の衝突判定
d2cColLineSgtRSquare線分と回転矩形の衝突判定
d2cColLineSgtSquare線分と矩形の衝突判定
d2cColPolygonPolygon多角形と多角形の衝突判定
d2cColRSquarePolygon回転矩形と多角形の衝突判定
d2cColRSquareRSquare回転矩形と回転矩形の衝突判定
d2cColSquarePolygon矩形と多角形の衝突判定
d2cColSquareSquare矩形と矩形の衝突判定
d2cGetIntersectionPos交点座標を取得
d2cGetIntersectTangent交点と接線を取得
d2cSetIntersect交点座標の計算の有効/無効

軌道予測

d2cShot_SetTargetPrm目標の位置と速度を設定
d2cShot_SetShotPrm攻撃の位置と速度を設定
d2cShot_GetShotData攻撃の打ち出し設定を取得

履歴

2019/12/25
v1.00
・初公開版
2020/12/06
v1.01
・接線系の命令を追加
d2cCreateShadowPolygon
d2cTangentOfCircle
d2cTangentOfPolygon
d2cTangentOfRSquare
d2cTangentOfSquare
・マニュアルを全体的に修正
表記のゆらぎなどを修正。
2020/12/17
v1.02
・d2cCreateShadowPolygon 命令で、光の範囲境界付近で影が正しく生成されない不具合を修正。
・d2cTangentOfEllipse 命令を追加。
・d2cTangentOfCapsule 命令を追加。
・マニュアルを全体的に修正
誤記や表記のゆらぎなどを修正。
2020/12/28
v1.03
・衝突判定関連の命令を追加。
d2cColCircleCapsule
d2cColLineSgtEllipse
d2cColLineSgtCapsule
d2cColLineSgtCircle
d2cColLineSgtPolygon
d2cColLineSgtSquare
d2cColLineSgtRSquare
d2cColSquarePolygon
d2cColRSquarePolygon
・d2cLength をマクロに変更。
・d2cDraw系命令実行後のカレントポジションを図形の描画位置に変更。
・サンプルをすべて見直し。
2021/01/30
v1.04
・d2cMakePolygon 命令を追加
・d2cDrawBoxF 命令を追加
・d2cDrawCircleF 命令を追加
・サンプル01, 10, 11, 16 の修正。
・サンプルスクリプトのサムネイル画像を追加。
・ベンチマークテスト「ベンチ_….hsp」を追加。
2021/05/01
v1.05
・軌道予測関連の命令を追加
d2cShot_SetTargetPrm 命令を追加
d2cShot_SetShotPrm 命令を追加
d2cShot_GetShotData 命令を追加
2021/05/03
v1.06
・d2cShot_GetShotData 命令で、射出時の目標と攻撃の位置が同じ場合に衝突しないという計算結果を算出する不具合を修正。
2023/12/06
v1.07
・d2cColRayRefLineSgt 命令を追加
・d2cGetPosLineSymmetry 命令を追加
・d2cGetPosPointSymmetry 命令を追加
2023/12/24
v1.08
・d2cColLineCircle 命令を追加
・d2cColLineEllipse 命令を追加
・d2cSetIntersect 命令を追加
・d2cGetIntersectionPos2 命令を追加
・d2cGetIntersectTangent 命令を追加
2023/12/31
v1.09
・D2C_06_面積と重心.hsp で、反転面積の計算結果が正しく表示されない不具合を修正。
・モジュール内を整理整頓
・d2cGetNormalVector命令の引数を順番を他の命令に合わせて変更(終点,始点 → 始点,終点)
・d2cGetNormalVector命令の引数がint型だったため、double型に変更
・d2cAngleByPoints命令の引数がint型だったため、double型に変更
・全てのd2cColLine系命令で、線分と図形外周の交点を求める事ができるようにした。
・d2cGetIntersectionPos2命令をd2cGetIntersectionPos命令に変更。これに伴いd2cGetIntersectionPos命令を廃止。

関連記事

  1. エクソダス・オブ・ザ・デッド 前の画像 次の画像 エクソダス・オブ・ザ・デッド Ver.1.00 (2021/01/10) ダウン...
  2. エクソダス・オブ・ザ・デッド2 前の画像 次の画像 エクソダス・オブ・ザ・デッド2 Ver.2.02 (2021/08/31) ダウ...
  3. 行列計算モジュール mod_matrix Ver.1.03 (2017/08/26) ダウンロード(65.1 KB) H...
  4. 等速で移動する物体に当てる  先日実装したHSP3用モジュールの軌道予測関連命令 d2cShot_GetShotData 命令の...
  5. d2cmでの影の作成  まずはじめに、ここで扱う「影」は便宜上、影っぽいから「影」と呼んでいるだけで物理的に正しい影のこと...