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() + ']'; } }