質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

2回答

1687閲覧

ベジェ曲線などのスプライン曲線上を一定の速度で移動する方法

退会済みユーザー

退会済みユーザー

総合スコア0

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

1クリップ

投稿2019/06/29 00:56

編集2019/06/30 09:50

前提・実現したいこと

タイトルの通りスプライン曲線上を一定の速度で移動させたいと考えています。しかし媒介変数tを線形で増減させても始点・終点の距離がまちまちですし、そもそも補間される点の分布が均等でないため、一定の速度で移動させることができません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

majiponi

2019/06/29 02:35

ソースコードはありますか?
guest

回答2

0

ベストアンサー

雑な近似ですが,

曲線上のN個の点を求めて,
各点に関して曲線の開始位置(一方の端点)からの距離を求めれば,
横軸をt,縦軸を移動距離距離とした折れ線グラフが作れるので,
所望の移動距離に対するtの値を折れ線グラフから決める.

という方法で,経験上,そこそこ使えます.

投稿2019/06/30 08:53

編集2019/06/30 08:54
fana

総合スコア12164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/30 09:48

うまくいきました! ありがとうございます(*´ω`*)
guest

0

媒介変数があるのなら、それを用いてx座標、y座標が表されているはず。あるいは他の形式の座標かもしれませんが。

xyならわかりやすく微分を使って速さ
v=sqrt((dx/dt)^2 + (dy/dt)^2)
を求めて、
dv/dt = 0
となるようにすればいい。
式で表せるとは限らないので、dx/dtなどは差分で近似する。

投稿2019/06/29 02:15

swordone

総合スコア20675

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/29 10:36

すいません。馬鹿なのでさっぱりわかりません(;´Д`) 3次ベジェ曲線を微分すると3(1-t)^2(p1-p0)+6(1-t)t(p2-p1)+3t^2(p3-p2)という式が得られますが、この式を使ってどう次のtを決定すればいいのでしょうか。 例えば10フレームかけて等速で移動するとして、このとき必要になる10つのtを求めたいのです。
swordone

2019/06/29 15:21

ん?微分で1本の式にはならないはずでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問