完善mathhelper类与vector2
This commit is contained in:
@@ -145,6 +145,18 @@ module es {
|
||||
return new Vector2(MathHelper.lerp(value1.x, value2.x, amount), MathHelper.lerp(value1.y, value2.y, amount));
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个新的Vector2,其中包含指定矢量的线性插值
|
||||
* @param value1
|
||||
* @param value2
|
||||
* @param amount
|
||||
* @returns
|
||||
*/
|
||||
public static lerpPrecise(value1: Vector2, value2: Vector2, amount: number) {
|
||||
return new Vector2(MathHelper.lerpPrecise(value1.x, value2.x, amount),
|
||||
MathHelper.lerpPrecise(value1.y, value2.y, amount));
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个新的Vector2,该Vector2包含了通过指定的Matrix进行的二维向量变换。
|
||||
* @param position
|
||||
@@ -155,6 +167,16 @@ module es {
|
||||
(position.x * matrix.m12) + (position.y * matrix.m22) + matrix.m32);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个新的Vector2,其中包含由指定的Matrix转换的指定法线
|
||||
* @param normal
|
||||
* @param matrix
|
||||
*/
|
||||
public static transformNormal(normal: Vector2, matrix: Matrix) {
|
||||
return new Vector2((normal.x * matrix.m11) + (normal.y * matrix.m21),
|
||||
(normal.x * matrix.m12) + (normal.y * matrix.m22));
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回两个向量之间的距离
|
||||
* @param value1
|
||||
@@ -189,6 +211,32 @@ module es {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个新的Vector2,其中包含给定矢量和法线的反射矢量
|
||||
* @param vector
|
||||
* @param normal
|
||||
* @returns
|
||||
*/
|
||||
public static reflect(vector: Vector2, normal: Vector2) {
|
||||
let result: Vector2 = new Vector2();
|
||||
let val = 2 * ((vector.x * normal.x) + (vector.y * normal.y));
|
||||
result.x = vector.x - (normal.x * val);
|
||||
result.y = vector.y - (normal.y * val);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个新的Vector2,其中包含指定矢量的三次插值
|
||||
* @param value1
|
||||
* @param value2
|
||||
* @param amount
|
||||
* @returns
|
||||
*/
|
||||
public static smoothStep(value1: Vector2, value2: Vector2, amount: number) {
|
||||
return new Vector2(MathHelper.smoothStep(value1.x, value2.x, amount),
|
||||
MathHelper.smoothStep(value1.y, value2.y, amount));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param value
|
||||
@@ -294,6 +342,46 @@ module es {
|
||||
return false;
|
||||
}
|
||||
|
||||
public isValid(): boolean {
|
||||
return MathHelper.isValid(this.x) && MathHelper.isValid(this.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个新的Vector2,其中包含来自两个向量的最小值
|
||||
* @param value1
|
||||
* @param value2
|
||||
* @returns
|
||||
*/
|
||||
public static min(value1: Vector2, value2: Vector2) {
|
||||
return new Vector2(value1.x < value2.x ? value1.x : value2.x,
|
||||
value1.y < value2.y ? value1.y : value2.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个新的Vector2,其中包含两个向量的最大值
|
||||
* @param value1
|
||||
* @param value2
|
||||
* @returns
|
||||
*/
|
||||
public static max(value1: Vector2, value2: Vector2) {
|
||||
return new Vector2(value1.x > value2.x ? value1.x : value2.x,
|
||||
value1.y > value2.y ? value1.y : value2.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个新的Vector2,其中包含Hermite样条插值
|
||||
* @param value1
|
||||
* @param tangent1
|
||||
* @param value2
|
||||
* @param tangent2
|
||||
* @param amount
|
||||
* @returns
|
||||
*/
|
||||
public static hermite(value1: Vector2, tangent1: Vector2, value2: Vector2, tangent2: Vector2, amount: number){
|
||||
return new Vector2(MathHelper.hermite(value1.x, tangent1.x, value2.x, tangent2.x, amount),
|
||||
MathHelper.hermite(value1.y, tangent1.y, value2.y, tangent2.y, amount));
|
||||
}
|
||||
|
||||
public clone(): Vector2 {
|
||||
return new Vector2(this.x, this.y);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user