我需要按行偏移一个点。
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的中心。有没有办法用像素制作这个?
答案 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);
}