2017-01-15 14 views
1

答えは単に「なし」はないかも知れませんそのため難を説明し、質問、事前に謝罪...三角法を使用せずにsin/cosin曲線に近似する値を返す簡単な方法は?

私はその振幅を大きくしたい値-1 >= n <= 1

を持っています、2で言う:2*n

私もその位相を調整したいのですが、0.5で言う:ときnは過去の増加1よう2*n + .5

がどのように私はこれを行うことができ、それは、サインを反転させ、それ自体を減らします実例le:nが1.1に増加すると、結果は実際には.9になります。

私は、これは三角関数を使用して行うことができます知っているが、私は難易度の振幅を大きくし、その位相をずらしを抱えている - 私はやって終わりだ、両方の私はこの表現を得る時間によって:

Math.sin(n*1.57 + Math.PI/4)

をそしてその表現には、私は最終的な価値を得るためにさらに計算/丸めを行う必要があります。表現が複雑になってしまいます。

希望の範囲/値を取得する簡単な方法があり、トリグを完全に避けているのだろうかと思いますか?私はモジュロに似た演算子を想像していますが、 "リセット"ではなく0で値が小さくなります...

+0

希望する結果のより長いシーケンスを5〜10エレメント長く追加できますか? – LutzL

+1

[Bhaskara I's](https://en.wikipedia.org/wiki/Bhaskara_I's_sine_approximation_formula)やピリオド4の鋸歯関数など、(pi * x)の正弦/余弦の値を近似したいですか? – traktor53

+0

ありがとう@ Traktor53 - Bhaskara私の数式は非常に面白い読書/テストでした。 私は無視しているような派手な演算子(%など)がないことを確認したかったと思います。それはtrigを使うのが本当に私がしたいことをする最も簡単な方法だと思われます。 – calipoop

答えて

1

3つの波が私の問題を解決します。これは、正弦波に似た振動値(簡単にはない)を与え、Math.trigを回避して式を単純化します。私はthisで与えられた公式と同様にこれらのwikipedia formulasの式を展開しました。ノコギリを示唆

Triangle wave with period 4 and amplitude 2

フライドブライスの答えは正しい軌道に乗っていた - しかし、三角波は私のために適していて、1行の式は、私の目が感じ良くなります。

1

1つの期間のケースで数式を明示的に書き出し、基本的な期間。

など。

function notTrig(x) { 
    switch (true) { 
    case (x >= 0 && x < 1): 
     return x 
    case (x >= 1 && x < 2): 
     return 2 - x 
    default: 
     notTrig(x - 2) 
    } 
} 

これは、あなたが同様にネガを処理する必要がノコギリ平均1/2の信号振幅の1/2、および期間2を与える必要があります:運動は;-)

編集をアスカーために残さ:私は上記の用語「ノコギリ波」を誤って使用していることが私に起こります。私が描いている機能は連続的で、私が使用すべき用語は「三角波」です。つまり、@ calipoopの答えにはとても満足しています。

+1

返事をありがとう。上記の私のコメントを参照してください。Traktor53 - あなたの解決策はうまくいくはずですが、私の方程式を単純化できる新しい秘密オペレータまたは短い1ライナーを学ぶことを望んでいました!結局、私の元のコードは私がやることが最高かもしれないと思う。 – calipoop

+0

ええ、私はあなたが原始的な演算子について尋ねていたことに気付きました。私はJavascriptやそれよりも一般的にはMathのようなものはないと思います。乾杯! –

関連する問題