Skip to content

LightGive/SystemCalc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

218 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SystemCalc License

Unityで物理・図形・その他の計算など、頻繁に使用する関数をまとめたスクリプト
物理計算は質量、空気抵抗、マグヌス効果などを含まない簡単な計算です。
関数には複数のオーバーロードを追加してあります。

Update

ver1.0.0 (2018.09.11)
・二点の座標の位置から二次関数の式を求める関数を追加

Download (UnityPackage)

SystemCalc(1.0.1)_IncludedExample
SystemCalc(1.0.1)_NoExample

List of Functions

  • GetCircleLineIntersection (円と線の交点を求める)
  • GetIntersectionOfCircleAndCircle (円と円の交点を求める)
  • GetLineNearPoint (二点間の線上で一番近い座標を求める)
  • GetVelocityTopTime (初速を加えた時、何秒後に頂点に達するかを求める)
  • GetVelocityTopHeight (初速を加えた時の最高地点の高さを求める)
  • GetVelocityTopPos (初速を加えた時の最高地点の座標を求める)
  • GetArrayMax (配列内の一番大きい値を返す)
  • GetArrayMin (配列内の一番小さい値を返す)
  • GetArraySum (配列内の値を足して返す)

Example

代表的な関数の例を一部挙げます。
使い方などでわからない部分や、追加してほしい関数等があれば、TwitterのDMで伝えて下さい。

・GetCircleLineIntersection

円と線分との交点を取得します。
直線ではなく、始点と終点を含む線分との交差を判定する。
サンプル1

public static bool GetIntersectionOfLineAndCircle(
  Vector2 _linePoint1, 
  Vector2 _linePoint2, 
  Vector2 _circleCenter, 
  float _circleRadius, 
  out Vector2 _intersectionPoint1, 
  out Vector2 _intersectionPoint2)

パラメーター

引数 説明
_linePoint1 (Vector2)線分の始点
_linePoint2 (Vector2)線分の終点
_circleCenter (Vector2)円の中心点
_circleRadius (float)円の半径
_intersectionPoint1 (out Vector2)円と線分が交差していた場合、交差している座標が入る
_intersectionPoint2 (out Vector2)円と線分が交差していた場合、交差している座標が入る

返り値

(bool)線と円が一点以上交差しているかどうか

・GetIntersectionOfCircleAndCircle

円と円が交差しているかの判定と、交差している点の座標を求める
サンプル2

public static bool GetIntersectionOfCircleAndCircle(
  Vector2 _circlePoint1, 
  float _circleRadius1, 
  Vector2 _circlePoint2, 
  float _circleRadius2, 
  out Vector2 _intersectionPoint1, 
  out Vector2 _intersectionPoint2)

パラメーター

引数 説明
_circlePoint1 (Vector2)円Bの中心の座標
_circleRadius1 (float)円Aの半径
_circlePoint2 (Vector2)円Bの中心の座標
_circleRadius2 (float)円Bの半径
_intersectionPoint1 (out Vector2)円Aと円Bが交差していた場合、交差している座標が入る。交差していない時は newVector2(0.0f,0.0f)が入る
_intersectionPoint2 (out Vector2)円Aと円Bが交差していた場合、交差している座標が入る。交差していない時は newVector2(0.0f,0.0f)が入る

返り値

(bool)円と円が交差しているかどうか

・GetLineNearPoint

指定した座標で、線上の一番近い座標を返す
また、AからBを0-1と置いた場合の値も取得できる
サンプル3

public static Vector3 GetLineNearPoint(
  Vector3 _linePoint1, 
  Vector3 _linePoint2, 
  Vector3 _checkPoint, 
  bool _isLimit, 
  out float _lerp)

パラメーター

引数 説明
_linePoint1 (Vector2)線分の始点
_linePoint2 (Vector2)線分の終点
_checkPoint (Vector2)確認したい座標
_isLimit (bool)線上の始点から終点で制限をかけるかどうか。
_lerp (out float)始点を0、終点を1とした時の値。

返り値

(Vector3)線状で一番近い座標

・GetVelocityTopTime

球に初速を加えた時、頂点に達するまでの時間を求める

public static float GetVelocityTopTime(
  Vector3 _vec, 
  Vector3 _gravity)

パラメーター

引数 説明
_vec (Vector3)球の初速
_gravity (Vector3)重力加速度

返り値

(float)頂点に到達する時間(秒)

・GetVelocityTopTime

球に初速を加えた時、最高地点の高さを求める

public static float GetVelocityTopHeight(
  Vector3 _vec, 
  float _startHeight, 
  Vector3 _gravity)

パラメーター

引数 説明
_vec (Vector3)球の初速
_startHeight (float)球の初速
_gravity (Vector3)重力加速度

返り値

(float)頂点に到達する高さ

・GetBallisticpredictionPoint

初速を加えた後の弾道予測点を求める
サンプル1

public static Vector3[] GetBallisticpredictionPoint(
  Vector3 _vec,
  Vector3 _startPos, 
  int _pointNum, 
  float _intervalTime, 
  Vector3 _gravity)

パラメーター

引数 説明
_vec    (Vector3)球の初速
_startPos    (Vector3)初速を加えた時の座標
_pointNum    (int)取得する座標の数
_intervalTime (Vector3)取得する座標の間隔の時間(秒)
_gravity (Vector3)重力加速度

返り値

(Vector3[])弾道予測線の座標

・VectorToAngle

ベクトルから角度に変関する
サンプル1

public static float VectorToAngle(
  Vector2 _vec)

パラメーター

引数 説明
_vec (Vector2)角度に変更するベクトル

返り値

(float)角度

Future

  • 初速を加えた時、何秒後に地面に落ちるか
  • 球と線との交点を求める
  • 角度→ベクトル
  • 行列を渡してグリッドの座標を返す
  • ベジュ曲線を求める
  • 基準点と視野角と相手の座標を渡して視界内にあるか

License

See LICENSE.

About

Unityで、物理関係等の計算などをするためのクラス

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages