2017-01-15 10 views
1

사과 어려운 투 설명 대답은 간단하게 "을"있을 수있는 질문 ... 나는 -1 >= n <= 1삼각법을 사용하지 않고 sin/cosin 곡선을 근사하는 값을 반환하는 간단한 방법은 무엇입니까? 사전에

내가 진폭을 증가 싶습니다 값을 가지고

을 , 2 말 : 2*n

나는 또한 그 위상을 조정하고 싶습니다, 0.5로 말 : 2*n + .5

어떻게 내가 할 수있는이,이 표시를 화나게 자체를 줄일 때 n은 1 증가 과거 있도록, 예를 들어 le : n이 1.1로 증가하면 결과는 실제로 .9입니다.

나는이 삼각을 사용하여 수행 할 수 있습니다,하지만 난 어려움 진폭을 증가시키고 그 위상을 이동하는 데 알고있다 -이 표현 얻을 내가 둘 다 일을 다 했어 시간에 의해을 :

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

을 그리고 그 표현에 나는 여전히 최종 값을 얻기 위해 추가 계산/반올림을 수행해야합니다. 표현이 복잡해진다.

원하는 범위/값을 얻을 수있는 간단한 방법이 있는지 궁금합니다. 모두 삼각법을 사용하지 않으시겠습니까? 나는 "리셋"대신 0을 사용하고, 나머지는 0으로 줄이고, 값은 줄인다. ...

+0

5 ~ 10 개의 길이로 원하는 결과를 더 길게 추가 할 수 있습니까? – LutzL

+1

[Bhaskara I 's] (https://en.wikipedia.org/wiki/Bhaskara_I's_sine_approximation_formula)와 같은 (pi * x)에 대한 근사 사인/코사인 값 또는 기간 4와의 톱니 함수를 원하십니까? – traktor53

+0

Thanks @ Traktor53 - Bhaskara I의 수식은 매우 흥미로운 읽기/테스트였습니다. 저는 방금 무시하고있는 멋진 연산자 (% 같은)가 없도록하고 싶었습니다. trig를 사용하는 것이 실제로 내가 원하는 것을하는 가장 간단한 방법 인 것 같습니다. – calipoop

답변

1

밝혀지면 삼각형의 물결이 내 문제를 해결합니다. 사인과 비슷한 진동 값을 제공합니다 (쉽게), Math.trig를 피하고 수식을 단순화합니다. 나는 this에서 주어진 수식뿐만 아니라이 wikipedia formulas의 답변을 확대했습니다. 톱니을 제안

Triangle wave with period 4 and amplitude 2

튀김 브라이스의 대답은 바른 길에 있었다 - 그러나 삼각파 나를 위해 더 적합하고, 한 줄 수식이 내 눈 느낌을 더합니다.

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 - 당신의 솔루션이 잘 작동하는 동안, 나는 아마도 새로운 방정식 연산자 또는 짧은 방정식을 배울 수 있었으면 좋겠다. 내 방정식을 단순화 할 수있다. 결국, 내 원래 코드가 내가 할 수있는 최선이라고 생각합니다. – calipoop

+0

그래, 원시 연산자에 대해 물어 보았다. Javascript 나 더 일반적으로 Math에 그런 것이 없다고 생각합니다. 건배! –