0

キャンバスからこれらのデータを取得するアプリを開発しています:

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);
}

私が間違っていなければ、ピクセル/秒として結果が得られますが、それは正しいですか??

サポートを事前に感謝します

4

0 に答える 0