2010-06-11 3 views
0

목표 C로 코딩하고 있지만 일반적인 프로그래밍 문제입니다.
끊임없이 변화하는 스칼라 값을 변화하는 간격 또는 빈도로 변환하는 가장 좋은 방법은 무엇입니까?끊임없이 변화하는 스칼라 값을 변경 간격 또는 빈도로 변환

지금 내가 변화 스칼라 때문에, NSInterval

[self.myTimer invalidate]; 
    self.myTimer = nil; 

을 파괴하고 새로운 하나를 만들어,하지만 내 목표를 달성하기 위해 매우 비싼 방법처럼 보인다 오전 스칼라 값이 변경 될 때마다 내 경우의 값은 스 와이프의 수평 속도를 나타냅니다.

비유를 들자면 비주얼 메트로놈에 스 와이프의 속도가 반영되는 것을 생각하면 스 와이프가 빠를수록 메트로놈의 빈도가 높습니다 (짧은 간격).

답변

1

먼저 이것이 "측정"문제라는 것을 이해하십시오. 이. 제점을 해결하려면. 제점을 해결하는 데 필요한 최소 속성을 분리하고 나머지는 파생시킵니다.

이동 된 거리와 거리를 이동하는 데 걸리는 시간은 각 측정의 특성에서 파생됩니다.이 경우 측정의 이름은 "스 와이프"입니다. 경주 비유에서 측정은 랩이라고합니다. 이제 "속도"를 계산할 수 있습니다. 이것은 단순히 거리/시간 인 "속도"입니다.

distance은 스 와이프의 시작 및 끝 지점에서 계산할 수 있습니다. 당신이 할 수 있도록 이 시간 값을 얻으려면, touchesBegan:withEvents:NSDatestartTime 인스턴스를 생성하고 touchesEnded:withEvents:에서 필요에 따라 [startTime timeIntervalSinceNow];

를 사용하여 elapsedTimeInterval를 계산, 당신은 startPosition입니다, endPosition, startTime을하고 endTime- 사용자에 대한 특성을 가진 Measurement 클래스를해야 할 수도 있습니다 "가장 빠른"속도 등을 추적하십시오.

Analysis PatternsMartin Fowler으로 봅니다. 도메인 문제를 소프트웨어 솔루션에 매핑하려고 할 때 매우 유용합니다.

+0

감사합니다. 시간 간격 당 이동 한 거리를 기준으로 내 속도를 계산 한 일정한 간격 (이동 된 터치에서 파생 된)을 유지하고이 속도 변화를 필자가 필요로하는 스칼라 값에 매핑하여 문제를 다시 해결하지 못하게했습니다. –