Actionscript 3 内插as3
我正在做一个项目,将一些源代码ActionScript3转换成C。它具有以下功能:Actionscript 3 内插as3,actionscript-3,interpolation,Actionscript 3,Interpolation,我正在做一个项目,将一些源代码ActionScript3转换成C。它具有以下功能: Point.interpolate(Point p1, Point p2, Number distance) 此函数的文档如下所示 我想问函数的算法是如何工作的。如文档所述: 参数f的值越接近1.0,插值点就越接近第一个点(参数pt1)。参数f的值越接近0,插值点就越接近第二个点(参数pt2) 这可以通过以下方式实现: public static function interpolate(pt1:Point,
Point.interpolate(Point p1, Point p2, Number distance)
此函数的文档如下所示
我想问函数的算法是如何工作的。如文档所述: 参数f的值越接近1.0,插值点就越接近第一个点(参数pt1)。参数f的值越接近0,插值点就越接近第二个点(参数pt2) 这可以通过以下方式实现:
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的值越接近1.0,插值点就越接近第一个点(参数pt1)。参数f的值越接近0,插值点就越接近第二个点(参数pt2) 这可以通过以下方式实现:
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);
}
var x:Number=pt1.x+f*(pt2.x-pt1.x)
是另一种编写它的方法(更少的乘法,更多的公共属性读取…可能不是瓶颈)。我刚刚尝试过,两个版本的性能相同:10000000次调用,每个版本12378和12374毫秒。我知道这取决于平台,但我认为可读性在这里更重要。所以OP可以选择他喜欢的版本。我运行了一些基准测试(如果可以肯定,为什么要争论!),它的性能几乎相同(在flash中,这是-不确定C#)。编辑:基准测试:D@JonatanHedborg-是的,我自己已经做了一些基准测试。参见我之前的评论:)var x:Number=pt1.x+f*(pt2.x-pt1.x)
是另一种编写方法(更少的乘法,更多的公共属性读取…可能不是瓶颈)。我刚刚尝试过,两个版本的性能相同:10000000次调用,每个版本12378和12374毫秒。我知道这取决于平台,但我认为可读性在这里更重要。所以OP可以选择他喜欢的版本。我运行了一些基准测试(如果可以肯定,为什么要争论!),它的性能几乎相同(在flash中,这是-不确定C#)。编辑:基准测试:D@JonatanHedborg-是的,我自己已经做了一些基准测试。见我之前的评论:)