プロが教えるわが家の防犯対策術!

ある物体が中央から上に移動し、中央に戻り、下に移動し中央に戻るまでを1周期とした関数を作りたいのですが、時間(0~1)を渡して移動量(-1~1)を得る式はどのようにすればいいのでしょうか?

数学で言う三角波に近いグラフになると思います。
現状は時間を4分割してそれぞれを1次関数として動かしていますが
あまりいい方法ではないので別の方法を探しています。

使用言語は特に問いません。

「物体が往復する動きを作りたい」の質問画像

A 回答 (4件)

#1の回答


double w=fmod(x,4*T);
ではなくて
double w=4*fmod(x/T,1.0);
でした。これで周期Tの繰り返しになります。横軸がx<=Tのときだけでよいのなら
double w=4*x/T;
でかまいません。
    • good
    • 0
この回答へのお礼

教えていた方法で目的の動作ができました。
周期を繰り返す方の式を使わせていただきました。
ありがとうございます。

お礼日時:2014/02/21 15:49

正直な話, 現状で何に不満なのかが分からない. 何がどう「あまりいい方法ではない」のでしょうか?



なぜ 4分割するのかはよくわからんが.

この回答への補足

ここに公開するに値しないほど回りくどい方法で実装していたという意味です。
その方法よりも簡潔に書きたかったのです。

補足日時:2014/02/21 15:46
    • good
    • 0

単振動になって良いのなら、



移動量=sin(時間/(2*π))

とか。
    • good
    • 0
この回答へのお礼

回答有難うございます。
今回は等速な動きをするように作ろうと考えています。

お礼日時:2014/02/21 15:47

c++で、四則演算と標準関数だけ(std::は省いています)を使うことにして、


double w=fmod(x,4*T);
y=min(abs(w+1),abs(w-3))-1;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!