//============================================================ // <T>设置平移内容。</T> //============================================================ public void TransformPosition3x4(SFloatPoint3 input, SFloatPoint4 output) { output.X = (input.X * data[0]) + (input.Y * data[4]) + (input.Z * data[8]) + data[12]; output.Y = (input.X * data[1]) + (input.Y * data[5]) + (input.Z * data[9]) + data[13]; output.Z = (input.X * data[2]) + (input.Y * data[6]) + (input.Z * data[10]) + data[14]; output.W = (data[3]) + (data[7]) + (data[11]) + data[15]; // output.align(); }
//============================================================ // <T>反序列化数据信息。</T> // // @param p:input 输入数据流 //============================================================ public void UpdateAll(SFloatPoint3 pt, SFloatVector3 pd, SFloatVector3 ps) { // 读取平移信息 tx = pt.X; ty = pt.Y; tz = pt.Z; // 读取旋转弧度 rx = pd.X; ry = pd.Y; rz = pd.Z; // 读取缩放信息 sx = ps.X; sy = ps.Y; sz = ps.Z; // 更新信息 UpdateForce(); }
//============================================================ public void InnerMax(SFloatPoint3 position) { X = Math.Max(X, position.X); Y = Math.Max(Y, position.Y); Z = Math.Max(Z, position.Z); }
//============================================================ public void Assign(SFloatPoint3 value) { X = value.X; Y = value.Y; Z = value.Z; }
//============================================================ // <T>设置平移内容。</T> //============================================================ public void Transform3x3Point3(SFloatPoint3 output, SFloatPoint3 input) { output.X = (input.X * data[0]) + (input.Y * data[4]) + (input.Z * data[8]); output.Y = (input.X * data[1]) + (input.Y * data[5]) + (input.Z * data[9]); output.Z = (input.X * data[2]) + (input.Y * data[6]) + (input.Z * data[10]); }
//============================================================ public void Sub(SFloatPoint3 point) { X -= point.X; Y -= point.Y; Z -= point.Z; }
//============================================================ public void Add(SFloatPoint3 point) { X += point.X; Y += point.Y; Z += point.Z; }