Graviness Blog

算数・数学・科学・電脳・雑記・アホの順の密度で記事が構成されます。
<< May 2018 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >> ブログランキング・にほんブログ村へ
 
RECOMMEND
ビッグバン宇宙論 (上)
ビッグバン宇宙論 (上) (JUGEMレビュー »)
サイモン・シン, 青木 薫
RECENT COMMENT
  • 豊臣秀吉と曾呂利新左衛門から学ぶ数列の和
    優乃 (07/12)
  • 【誰か解いて】漸化式 a_(n+1) = f(n) * a_n ^ g(n) + h(n) の一般項
    優乃 (02/18)
  • 【誰か解いて】漸化式 a_(n+1) = f(n) * a_n ^ g(n) + h(n) の一般項
    S.S.+ (02/16)
  • 豊臣秀吉と曾呂利新左衛門から学ぶ数列の和
    坂井昭 (03/19)
  • d/dx(x↑↑n): 高さが定数のテトレーションの微分 - 数学的帰納法を用いる方法
    (09/30)
  • 全ての三角形は二等辺三角形
    優乃 (09/28)
  • 全ての三角形は二等辺三角形
    亀レス (09/28)
  • 全ての三角形は二等辺三角形
    優乃 (09/24)
  • 全ての三角形は二等辺三角形
    亀レス (09/23)
  • 【未解決】新しい演算子を創る
    $_ (09/10)
RECENT TRACKBACK
MOBILE
qrcode
PROFILE
無料ブログ作成サービス JUGEM
 
【数学】 イージングロジックメモ
曲線の表現方法っていろいろなものがあると思うけど,このようなイメージのものを考えてみる.
媒介変数tを使ってx座標,y座標を表し,t = 0を始点,t = 1を終点とする.
    x = x(t)
    y = y(t)
    0 ≦ t ≦ 1

とする.条件として

    x(0) = p0x
    x(1) = p1x
    x'(0) = v0x
    x'(1) = v1x

    y(0) = p0y
    y(1) = p1y
    y'(0) = v0y
    y'(1) = v1y

を与える.ここで,

    x'(t) = dx/dt
    y'(t) = dy/dt

である.

さて,x(t)y(t) を n次多項式 で定義する.
x(t) の条件式は4つなので3次の式,y(t) も同じく3次の式となる.

    x(t) = at3 + bt2 + ct + d
    y(t) = et3 + ft2 + gt + h

とおく.

    x'(t) = 3at2 + 2bt + c
    y'(t) = 3et2 + 2ft + g

となる.ここで先ず,xを解くことを考える.

条件式x(0) = p0x,x(1) = p1x,x'(0) = v0x,x'(1) = v1xより

    d = p0x
    a + b + c + d = p1x
    c = v0x
    3a + 2b + c = v1x

これを解いて,

    a = -2p1x + 2p0x + v1x + v0x
    b = 3p1x - 3p0x - v1x - 2v0x
    c = v0x
    d = p0x

ゆえに

    x(t) = (v0x + v1x + 2p0x - 2p1x)t3
            + (-2v0x - v1x - 3p0x + 3p1x)t2 + v0xt + p0x

y(t) も同様にして

    y(t) = (v0y + v1y + 2p0y - 2p1y)t3
            + (-2v0y - v1y - 3p0y + 3p1y)t2 + v0yt + p0y

まとめると
x(t) = (v0x + v1x + 2p0x - 2p1x)t3
        + (-2v0x - v1x - 3p0x + 3p1x)t2 + v0xt + p0x
y(t) = (v0y + v1y + 2p0y - 2p1y)t3
        + (-2v0y - v1y - 3p0y + 3p1y)t2 + v0yt + p0y

0 ≦ t ≦ 1

ただし,

    v0x : 始点の方向ベクトルのx成分
    v0y : 始点の方向ベクトルのy成分
    v1x : 終点の方向ベクトルのx成分
    v1y : 終点の方向ベクトルのy成分
    p0x : 始点の位置ベクトルのx成分
    p0y : 始点の位置ベクトルのy成分
    p1x : 終点の位置ベクトルのx成分
    p1y : 終点の位置ベクトルのy成分

ちなみにこれを行列表記すると
(x y)T(t) = P・K・s(t)
P = [v0 v1 p0 p1]       : パラメータ行列
K = [ 1 -2  1  0
 1 -1  0  0
 2 -3  0  1
-2  3  0  0
 ]     : 係数行列
s(t) = (t3 t2 t1 t0)T   : 時間ベクトル

ただし,
v0 = (v0x v0y)T : 始点の方向ベクトル
v1 = (v1x v1y)T : 終点の方向ベクトル
p0 = (p0x p0y)T : 始点の位置ベクトル
p1 = (p1x p1y)T : 終点の位置ベクトル

※Tは転置を表す
となる.

汎用的で自由度は高いけど,そのためパラメータが(座標を除いて)4つもあるし,計算量が若干多い.そのままではイージングロジックには使いたくないのが正直なところ.パラメータ数はせめて2つにしたい.

まぁ,メモだ.

関連:
イージングの考え方
【数学・DHTML】 イージング [Easing] (1)
【数学・DHTML】 イージング [Easing] (2)
【数学】 イージングロジックメモ
【数学・DHTML】 イージング [Easing] (3)
【DHTML】 加速・減速を考慮したアニメーションプログラム
【数学・DHTML】 イージング [Easing] (4)
コメント
コメントする









 
トラックバック
この記事のトラックバックURL
http://blog.graviness.com/trackback/45573
 

(C) 2018 ブログ JUGEM Some Rights Reserved.