コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【Unity】18 種類の曲線アルゴリズムを使用できるユーティリティ「UnityCurveUtils」を GitHub に公開しました

はじめに

18 種類の曲線アルゴリズムを使用できるユーティリティ
「UnityCurveUtils」を GitHub に公開しました

開発環境

  • Unity 2017.3.0f3

導入方法

  1. 下記のページにアクセスして
    「UnityCurveUtils.unitypackage」をダウンロードします
    https://github.com/baba-s/unity-curve-utils/blob/master/UnityCurveUtils.unitypackage?raw=true
  2. ダウンロードした「UnityCurveUtils.unitypackage」を
    Unity プロジェクトにインポートします

サンプルシーン

f:id:baba_s:20180221210704p:plain

「Example」フォルダ内に、各曲線アルゴリズムの使用例が格納されています

曲線アルゴリズム一覧

B-スプライン曲線

f:id:baba_s:20180221210652p:plain

var point = UnityCurveUtils.B_SplineCurve( x1, y1, x2, y2, x3, y3, t );

ベジェ曲線

f:id:baba_s:20180221210711p:plain

var point = UnityCurveUtils.BezierCurve( x1, y1, x2, y2, x3, y3, x4, y4, t );

双曲螺旋

f:id:baba_s:20180221210724p:plain

var point = UnityCurveUtils.HyperbolicSpiral( a, c theta );

アーネシの曲線

f:id:baba_s:20180221210734p:plain

var point = UnityCurveUtils.WitchOfAgnesi( a, theta );

デカルトの正葉線

f:id:baba_s:20180221210741p:plain

var point = UnityCurveUtils.FoliumOfDescartes( a, theta );

楕円

f:id:baba_s:20180221210751p:plain

var point = UnityCurveUtils.Ellipse( a, b, theta );

双曲線

f:id:baba_s:20180221210759p:plain

var point = UnityCurveUtils.Hyperbola( a, b, theta );

インボリュート曲線

f:id:baba_s:20180221210809p:plain

var point = UnityCurveUtils.InvoluteOfCircle( a, theta );

ストロフォイド

f:id:baba_s:20180221210820p:plain

var point = UnityCurveUtils.Strophoid( a, theta );

コンコイド

f:id:baba_s:20180221210829p:plain

var point = UnityCurveUtils.Conchoid( a, l, theta );

シッソイド

f:id:baba_s:20180221210843p:plain

var point = UnityCurveUtils.Cissoid( a, theta );

リサジュー曲線

f:id:baba_s:20180221210851p:plain

var point = UnityCurveUtils.LissajousCurve( A, B, a, b, delta, theta );

トロコイド

f:id:baba_s:20180221210859p:plain

var point = UnityCurveUtils.Trochoid( rm, theta, rd );

外トロコイド

f:id:baba_s:20180221210909p:plain

var point = UnityCurveUtils.Epitrocoid( rc, rm, theta, rd );

内トロコイド

f:id:baba_s:20180221210919p:plain

var point = UnityCurveUtils.Hypetrocoid( rc, rm, theta, rd );

サイクロイド

f:id:baba_s:20180221210930p:plain

var point = UnityCurveUtils.Cycloid( rm, theta );

外サイクロイド

f:id:baba_s:20180221210937p:plain

var point = UnityCurveUtils.Epicycloid( rm, rd, theta );

内サイクロイド

f:id:baba_s:20180221210945p:plain

var point = UnityCurveUtils.Hypocycloid( rm, rd, theta );