/**
* 在[a, b]间的拟柱体数值积分。
* @param f 积分函数
* @param a 左界限
* @param b 右界限
* @return [a, b]间的定积分
*/
public static function cylinderInte(f:Function, a:Number, b:Number):Number {
var h:Number = b-a;
return (h/6)*(f(a) + 4*f( (a+b) / 2 ) + f(b));
}
/**
* 在[a, b]间的拟柱体数值积分。
* @param f 积分函数
* @param a 左界限
* @param b 右界限
* @return [a, b]间的定积分
*/
public static function cylinderInte(f:Function, a:Number, b:Number):Number {
var h:Number = b-a;
return (h/6)*(f(a) + 4*f( (a+b) / 2 ) + f(b));
}
/**
* 在[a, b]间的辛普森数值积分
* @param f 积分函数
* @param a 左界限
* @param b 右界限
* @param n 分段数
* @return [a, b]间的定积分
*/
public static function simpsonInte(f:Function, a:Number, b:Number, n:int = 1024):Number {
n*=2;//2n => n
var h:Number = (b-a) / (n);
var x1:Number = 0;
var x2:Number = 0;
n--;//2n-1 => n
for(var i:int = 1; i i++*/) {
x1 += f(a + i*h);
i++;//i+1 => i
x2 += f(a + i*h);
}
return (h/3)*(f(a) + f(b) + 4*x1 + 2*x2);
}
/**
* 在[a, b]间的梯形数值积分
* @param f 被积分函数
* @param a 左界限
* @param b 右界限
* @param n 分段数
* @return [a, b]间的定积分
*/
public static function trapezoidalInte(f:Function, a:Number, b:Number,n:int = 1024):Number {
var h:Number = (b-a) / n;
var result:Number = 0;
n--;//n-1 => n
for(var i:int = 1; i<n; i++) {
result += f(a + i*h);
}
return (h/2)*(f(a) + f(b) + 2*result);
}
/**
* 忽略符号的四舍五入。
*
* AMath.rint(1.2) //-> 1
* AMath.rint(-1.2)//-> -1
* AMath.rint(1.7) //-> 2
* AMath.rint(-1.7)//-> -2
* @param v a Number
* @return Rounded Nuumber.
*/
public static function rint(v:Number):int {
if(v > 0) {
return int(v + 0.5);
}
if(v < 0) {
return -int(-v + 0.5);
}else{
return 0;
}
}
/**
* 截取原始 ByteArray 中某一范围的元素构成的新 ByteArray。
* 返回的 ByteArray 包括 start 元素以及从其开始到 end 元素(但不包括该元素)的所有元素。
*
* @param bytes 原始 ByteArray
* @param result 返回指针,如果为 null,将会创建新的 ByteArray。
* @param start 开始下标,负数表示从后面开始数。
* @param end 结束下标,负数表示从后面开始数。
* @return result
*/
public static function slice(
bytes:ByteArray, result:IDataOutput = null,
start:int = 0, end:int = -1):IDataOutput
{
if(!bytes) {
throw new ArgumentError("Param:must not be null.");
}
var totalLength:int = bytes.length;
if(!result) result = new ByteArray();
if(start<0) start = totalLength + start;
if(end<0) end = totalLength + end;
var length:int = end - start + 1;
result.writeBytes(bytes, start, length);
return result;
}
package advancedflex.graphics.images.filters {
import flash.filters.BitmapFilter;
import flash.filters.ColorMatrixFilter;
/**
* 颜色反转工厂。
* 它是AFGL(Advanced Flex Graphics Library)的一部分。
*/
public class ReversesFilterFactory implements IBitmapFilterFactory {
/* The Reverses Matrix */
private static const $MATRIX:Array = [
-1, 0, 0, 0, 255,
0,-1, 0, 0, 255,
0, 0,-1, 0, 255,
0, 0, 0, 1, 0,
];
/**
* 创建滤镜。
* @return 滤镜。
*/
public function create():BitmapFilter {
return new ColorMatrixFilter($MATRIX);
}
/**
* 释放滤镜工厂占用的大内存,但实际上什么也不做。
* 调用后在调用其他方法时也不会发成错误。
*/
public function dispose():void {
//Do Nothing.
}
/**
* 返回 ReversesFilterFactory 对象,
* 它是与原始 ReversesFilterFactory 对象完全相同的副本。
* @return ReversesFilterFactory 对象。
*/
public function clone():IBitmapFilterFactory {
return new ReversesFilterFactory();
}
}
}
ActionScript Snippets 是一个收集 Advanced Flex Project 在开发时有用的代码、类的博客。
代码均遵循 Apache License 2.0。希望对大家有所帮助。