0

線上の1点をピクセル単位でオフセットする必要があります。

public static function interpolate(pt1:Point, pt2:Point, f:Number):Point
{
     var x:Number = f * pt1.x + (1 - f) * pt2.x;
     var y:Number = f * pt1.y + (1 - f) * pt2.y;

     return new Point(x, y);
}

この関数は、「f」が0.5の場合、ポイントをパーセントで補間できます。ポイントは、線pt1pt2の中心になります。ピクセルでこれを作る方法はありますか?

4

1 に答える 1

1

メソッドを書きたいようですねinterpolate(pt1, pt2, distanceFromPt1)。既存のinterpolateメソッドは同様のことを行うため、後者を使用して前者を実装できます。

現在、 を呼び出すとinterpolate(A,B,f)、点 D が得られます(distanceBetween(A,D) / distanceBetween(A,B)) == 1-f。書きたい補間のバージョンでは、どうあるfべきかわかりませんが、 を知っているので、それを解決できますdistanceBetween(A,D)

function iterpolateByDistance(A, B, distanceFromA){
    //(dist(A,D) / dist(A,B)) == 1-f
    //f + (dist(A,D) / dist(A,B)) == 1
    //f == 1 - (dist(A,D) / dist(A,B))
    f = 1 - (distanceFromPt1 / distanceBetween(A, B));
    return interpolate(A, B, f);
}
于 2012-07-24T13:34:31.477 に答える