2013-02-20 4 views
0

나는 투표 수를 세는 카운터가 있습니다. 그러나 서버에서 30 초 밖에 걸리지 않았습니다. 프론트 엔드에서 상당히 일관성있게 보이기를 원합니다. 그래서 약간의 스크립트를 작성하여 증가량을 추적하고 초당 여러 번 투표율이 증가합니다.자바 스크립트에서 두 줄 사이의 곡선 찾기 ​​

그러나 나는 다른 속도 사이에서 아주 잘 전환 할 수없는 것처럼 보입니다. 제 뇌가 과거의 선형을 잠그고 있습니다.

예 : 우리는 100 표를 얻는다 고합니다.

투표가 다음 30 초 동안 60 씩, 1 초당 2 득점 (2/1)으로 증가 할 것으로 예상됩니다. 나는 그것을 이미 멀리 얻을 수있다.

30 초 후에 우리는 선형 이득에서 160 표를 얻습니다.

이제 다음 세그먼트는 30 초 동안 20만큼 증가하거나 3 초당 2 표 (2/3) 증가 할 것으로 예측됩니다.

갑자기 투표율이 떨어지는 것보다는 30 초 후에 총 투표 수 (180)가 넉넉하고 카운터가 감속 (또는 그에 따라 가속)하는 것이 아니라 속도를 부드럽게 전환하고 싶습니다. 갑자기 선형 이득이 바뀌 었습니다.

var t = 0; 
function upCount(){ 
    $("#votecount").text(Math.floor(current + nextInc*(t/60)); 
    t++; 
} 

current 서버에서보고 된 투표의 현재 수 있으며, nextInc는 투표의 예상 번호가 다음 30 초 동안 발생하는 것입니다.

t은 "시간"이며, 서버에서 각각의 ajax 풀을 사용하여 0으로 재설정됩니다. 이것은 500ms 간격 내에 있습니다.

어쩌면 나는 완전히 잘못 될 것입니다. 미친 아이디어를 환영합니다. 도움이된다면 여기 jQuery를 사용할 수 있습니다.

감사합니다.

+0

[spline] (http://en.wikipedia.org/wiki/Spline_ (수학))을 사용하십시오! – Bergi

+0

위대한 .... 그 JS에서 어떻게 작동합니까? –

답변

0

요금에 지수 필터를 적용하는 방법은 어떻습니까? 즉,

smoothed_rate = (current_rate + c*smoothed_rate)/(1+c) 

이렇게하면 부드럽게 조정하는 매개 변수 c를 얻을 수 있습니다. c = 0 -> 전혀 스무딩 없음. 큰 c -> 더 부드럽게.

비율 변경도 원활하게하려면 더 많은 포인트를 도입하십시오. 추가 서버 왕복은 필요하지 않습니다. 네가 가진 것을 복제해라. 예 : 비율 x를 30 초 동안 계산 한 다음 비율 x가 3 인 인터벌을 10 초 동안 가정하고 다듬기를 적용합니다. 이렇게하면 더 많은 노력을 들이지 않고 더 높은 주문을 부드럽게 할 수 있습니다.