キャンバスからこれらのデータを取得するアプリを開発しています:
windowPosition (CGFloat) previousWindowPosition (CGFloat) timeStamp (NSTimeInterval)
現在、2点間の距離を取得する式があります
-(float)calculateDistanceFrom:(CGPoint)point1 to:(CGPoint)point2
{
CGFloat xDist = (point2.x - point1.x);
CGFloat yDist = (point2.y - point1.y);
return sqrt((xDist * xDist) + (yDist * yDist));
}
ストローク速度を取得するための式は何を取得する必要がありますか?それを取得する方法はありますか?
前もって感謝します
編集:これは私がそのような必要性のために開発した式です。必要に応じて分析し、改善するのを手伝ってください:
必要な変数:
float speedStroke; //stroke speed
float strokeDistance; //stroke distance
NSDate *startTimeStroke; //records begin of stroke
CGPoint prevPointStroke; //saves previous point of stroke
次のコード ブロックは、キャンバスが描画などのスタイラス イベントをキャプチャするたびに実行されます。ここからロジックが開始されます。
//start running the line of time
if (startTimeStroke == nil) startTimeStroke = [NSDate date];
//this applies when the first point of the line is drawn
if (prevPointStroke.x == 0 && prevPointStroke.y == 0)
speedStroke = [self calculateSpeedfromPointA:[touch locationInView:self]
toPointB:[touch locationInView:self]
startTime:startTimeStroke];
// if the line has already begun
if (prevPointStroke.x != 0 && prevPointStroke.y != 0)
speedStroke = [self calculateSpeedfromPointA:prevPointStroke
toPointB:[touch locationInView:self]
startTime:startTimeStroke];
//then saves the current point for next calculation
prevPointStroke = [touch locationInView:self];
そして、この他のブロックは速度を得るための式です
-(float)calculateSpeedfromPointA:(CGPoint)puntoA
toPointB:(CGPoint)puntoB
startTime:(NSDate *)startTime{
//1. calculates distance
CGFloat Xdist = (puntoB.x - puntoA.x);
CGFloat Ydist = (puntoB.y - puntoA.y);
strokeDistance += sqrt((Xdist * Xdist) + (Ydist * Ydist));;
//2. calculates time
float strokeTime = [[NSDate date] timeIntervalSinceDate:startTimeStroke];
//3. calculates and returns speed
return (strokeDistance / strokeTime);
}
私が間違っていなければ、ピクセル/秒として結果が得られますが、それは正しいですか??
サポートを事前に感謝します