import {ClassUtil} from '../common/reflect/ClassUtil';
//==========================================================
// 平面。
//
// @struct
// @author maocy
// @version 150116
//==========================================================
export class PlaneSurface {
// A数值
public a: number;
// B数值
public b: number;
// C数值
public c: number;
// D数值
public d: number;
//============================================================
// 构造处理。
//============================================================
public constructor(a: number = 0, b: number = 0, c: number = 0, d: number = 0) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}
//============================================================
// 接收平面数据。
//
// @param value 平面
//============================================================
public assign(value: PlaneSurface) {
this.a = value.a;
this.b = value.b;
this.c = value.c;
this.d = value.d;
}
//============================================================
// 设置数据内容。
//
// @param a 数据
// @param b 数据
// @param c 数据
// @param d 数据
//============================================================
public set(a, b, c, d) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}
//============================================================
// 单位标准化处理。
//============================================================
public normalize() {
var r = 1 / Math.sqrt((this.a * this.a) + (this.b * this.b) + (this.c * this.c));
this.a *= r;
this.b *= r;
this.c *= r;
this.d *= r;
}
//============================================================
// 点乘处理。
//
// @param x 数据
// @param y 数据
// @param z 数据
//============================================================
public dot(x, y, z) {
return (x * this.a) + (y * this.b) + (z * this.c) + this.d;
}
//============================================================
// 获得字符串。
//
// @return 字符串
//============================================================
public toString() {
return this.a + ',' + this.b + ',' + this.c + ',' + this.d;
}
//============================================================
// 获得运行信息。
//
// @return 运行信息
//============================================================
public dump() {
return ClassUtil.dump(this) + ' [' + this.toString() + ']';
}
}