2009-07-05 5 views
3

私はチェーン抱擁のリンクベジェ曲線の輪郭を作るしようとしています。カーブの2つの点の間の角度を見つけるには、どうすればチェーンのリンクがカーブをたどるように配置することができますか?ベジェ曲線の2点間の角度はどのようにして求めることができますか?私の現在のOpenGLプロジェクトで

Hereは曲線とチェーンの絵で、私は彼らが曲線をたどるようにリンクを回転させるいくつかの方法が必要です。これをどのように行うには

は、ここでは誰もが知っていますか?

答えて

4

はたぶんthisのようなものは何が必要です。

How to calculate the tangent to a Bezier curve

これは、オンラインで見つけるのは難しいです。それは知っている人たちによって密かに保持される秘密でなければなりません。ああ、あなたは数式を見つけることができますが、あなたが数学者でないなら、それらを解釈するのが楽しいです。だから、貧しい開発者は何をするのですか?学校へ戻る。

私はこの1つ上で、私の頭蓋骨をバッシング数日を過ごしました。私は私の頭脳を見つけた(私の頭蓋骨が十分に荒れたところで、より簡単だった)。そして、土曜日の明るい美しい土曜日、私は私の疲れた骨を抱えている私の開発者のダンジョンで黙っていました。私は右に私とウィキペディアの目の前でテレビを持っていた上、そこに私が遅延し、それらの両方を見ての切り替えました。

Continue Reading...

+0

リンクされた記事を読んで、私が自分のベジェ曲線を理解し、コード化するのに費やしたすべての時間が突然クリックされました。ありがとう! – Liam

+0

+1だけで美しいアニメーションを再生できます。私はこのタイプのものを見るのが大好きです:) – Sampson

+7

リンクが壊れています。あなたはリンクを投稿すべきではありません。 –

0

は、それが長さ1これはAB_normとするしているので、あなたのベジェ曲線上の点は、AとBノーマライズベクトルABとします。次に、asin(AB_norm.y)またはacos(AB_norm.x)を使用して角度を取得します。 0度の角度は、右の水平ベクトルです。 Cスタイルの擬似コードは次のとおりです。

get_angle(Point A, Point B) { 
    AB.x = B.x - A.x; 
    AB.y = B.y - A.y; 
    length = sqrt(AB.x * AB.x + AB.y * AB.y); 

    AB_norm.y /= AB.y/length; 
    angle = asin(AB_norm.y); 
    // or 
    // AB_norm.x /= AB.x/length; 
    // angle = acos(AB_norm.x); 
} 

angle = get_angle(A, B); 
glRotatef(angle, 0.0f, 0.0f, 1.0f); 
// Draw the chain link here 
0

あなたはここにいくつかの数学を必要とします。タンジェント、ノーマル、バイノーマルのベクトルを見つけることができ、角度を見つけることができます。あなたがまだ興味があるのであれば、このトピックに関するいくつかの詳細があります。

関連する問題