逐像素插值

时间:2012-07-24 12:02:19

标签: math line interpolation

我需要按行偏移一个点。

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,则此函数可以按百分比插值点,该点将位于行pt1 pt2的中心。有没有办法用像素制作这个?

1 个答案:

答案 0 :(得分: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);
}