• 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

2次関数 f(x) = pK ( x - pX ) ^ 2 + pY の定義域 [ pP, pQ ] で描かれる曲線を3次ベジエで近似しようとするとき、 2つのコントロールポイントの座標を以下のプログラムのように求めればよい。 x1, y1 と x2, y2

   1  double wPQ = pP * pQ;
   2  double wPP = pP * pP;
   3  double wQQ = pQ * pQ;
   4  double x1 = ( ( wPQ - 2 * wPP + wQQ ) / 3 ) / ( pQ - pP );
   5  double x2 = ( ( wPQ + wPP - 2 * wQQ ) / 3 ) / ( pP - pQ );
   6  double wA = pK * ( pQ + pP - 2 * pX );
   7  double wB = pY + pK * ( pX * pX - ( wPP + wPQ + wQQ ) / 3 );
   8  double y1 = x1 * wA + wB;
   9  double y2 = x2 * wA + wB;

考え方 線分 p->q を L とする。( wA は L の傾き) L に平行な直線で、f(x)に接する直線を M とする。 L からみて M 側にあり、L と M の距離の 4/3 倍の距離にある L に平行な直線を N とする。 ( y = wA * x + wB ) この N の上に2つのコントロールポイントをおく。 N と x = pP における接線との交点が1つめのコントロールポイント N と x = pQ における接線との交点が2つめのコントロールポイント である。

pP = 0, pQ = 1 のとき、

   1  double x1 = 1. / 3.;
   2  double x2 = 2. / 3.;
   3  double wN = pY + pK * ( pX * pX - 1. / 3. );
   4  double y1 = x1 * pK + wN;
   5  double y2 = x2 * pK + wN;

posted by Face Saturn on Thu 19 Sep 2013 at 17:55

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry2328
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ