2014-02-08 4 views
-1

이 겉으로보기에는 쉬운 문제를 해결하기 위해 내 머리를 감쌌습니다. 진폭 범위의 상한 및 하한을 가진 sin 파형을 만드는 방법

나는 (가장 높은 지점은 3 예. 가장 낮은 점 0.4) 진폭에 대한 상부 및 하부의 경계를 가지는 사인파를 만들려고하고 난에 정현파를 얻을 수 있어요 일반 수학을 사용

배열을 1에서 -1로 바꾸지 만 경계를 어떻게 바꿀지 모르겠습니다.

static int MAX_POINTS = 100; 
static int CYCLES = 1; 
static double[] list = new double[100]; 

public static void SineCurve() 
    { 
    double phaseMultiplier = 2 * Math.PI * CYCLES/MAX_POINTS; 
    for (int i = 0; i < MAX_POINTS; i++) 
    { 
     double cycleX = i * phaseMultiplier; 
     double sineResult = Math.sin(cycleX); 
     list[i]= sineResult; 

    } 

    for(int i=0;i<list.length;i++){ 
     System.out.println(list[i]); 
    } 
    } 

모든 도움말을 크게 높이세요.

+0

- 확장하거나 번역을 원하는 값과 추가의 범위를 축소하는 곱셈 그것은 원하는 중심에. 연필로 종이에 그릴 때이 작업을 수행 할 수 있습니다. –

+1

실제로 종이와 연필을 사용하고 배율을 사용하여 게임을하면이 문제를 해결하고 자신이하는 일을 더 잘 이해할 수 있습니다. –

답변

2

진폭 (sin (x) 값의 승수)은 원하는 최고 값과 최저 값의 차이의 절반입니다. 귀하의 경우

amplitude = (3 - 0.4)/2 

1.3입니다. 그런 다음 제로 오프셋이 가장 낮은 값에 진폭을 더한 값이되어, 귀하의 경우에는 1.7이됩니다.

그래프로 원하는 방정식은 다음이다

1.3 * sin(x) + 1.7 
당신은 간단한 수학, 단지뿐만 아니라보다 더 아무것도 곱하기 사용하는 것이
+0

감사합니다 Jim! ... 나는 지금 꽤 바보 같아. – Cheesegraterr