/// <summary> /// Transform /// </summary> /// <param name="r"></param> /// <param name="origin"></param> /// <param name="point"></param> /// <returns></returns> public Point3dModel Transform(double r, Point3dModel origin, Point3dModel point) { List <double> arraTranform1 = new List <double> { 1, 0, 0, -origin.X, 0, 1, 0, -origin.Y, 0, 0, 1, -origin.Z, 0, 0, 0, 1 }; Matrix3dModel T1 = new Matrix3dModel(arraTranform1); List <double> rotationMatrix = new List <double> { Math.Cos(r), -Math.Sin(r), 0, 0, Math.Sin(r), Math.Cos(r), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }; Matrix3dModel T2 = new Matrix3dModel(rotationMatrix); List <double> arraTranform2 = new List <double> { 1, 0, 0, origin.X, 0, 1, 0, origin.Y, 0, 0, 1, origin.Z, 0, 0, 0, 1 }; Matrix3dModel T3 = new Matrix3dModel(arraTranform2); Point3dModel tfBack = T1.Transform(point); Point3dModel tfRotate = T2.Transform(tfBack); Point3dModel tfMove = T3.Transform(tfRotate); Point3dModel tfBlockTransform = this.Transform(tfMove); return(tfBlockTransform); }
public Matrix3dModel MatrixTransForm(Matrix3dModel matrix) { double i1 = index[0] * matrix.index[0] + index[1] * matrix.index[4] + index[2] * matrix.index[8] + index[3] * matrix.index[12]; double i2 = index[0] * matrix.index[1] + index[1] * matrix.index[5] + index[2] * matrix.index[9] + index[3] * matrix.index[13]; double i3 = index[0] * matrix.index[2] + index[1] * matrix.index[6] + index[2] * matrix.index[10] + index[3] * matrix.index[14]; double i4 = index[0] * matrix.index[3] + index[1] * matrix.index[7] + index[2] * matrix.index[11] + index[3] * matrix.index[15]; double i5 = index[4] * matrix.index[0] + index[5] * matrix.index[4] + index[6] * matrix.index[8] + index[7] * matrix.index[12]; double i6 = index[4] * matrix.index[1] + index[5] * matrix.index[5] + index[6] * matrix.index[9] + index[7] * matrix.index[13]; double i7 = index[4] * matrix.index[2] + index[5] * matrix.index[6] + index[6] * matrix.index[10] + index[7] * matrix.index[14]; double i8 = index[4] * matrix.index[3] + index[5] * matrix.index[7] + index[6] * matrix.index[11] + index[7] * matrix.index[15]; double i9 = index[8] * matrix.index[0] + index[9] * matrix.index[4] + index[10] * matrix.index[8] + index[11] * matrix.index[12]; double i10 = index[8] * matrix.index[1] + index[9] * matrix.index[5] + index[10] * matrix.index[9] + index[11] * matrix.index[13]; double i11 = index[8] * matrix.index[2] + index[9] * matrix.index[6] + index[10] * matrix.index[10] + index[11] * matrix.index[14]; double i12 = index[8] * matrix.index[3] + index[9] * matrix.index[7] + index[10] * matrix.index[11] + index[11] * matrix.index[15]; double i13 = index[12] * matrix.index[0] + index[13] * matrix.index[4] + index[14] * matrix.index[8] + index[15] * matrix.index[12]; double i14 = index[12] * matrix.index[1] + index[13] * matrix.index[5] + index[14] * matrix.index[9] + index[15] * matrix.index[13]; double i15 = index[12] * matrix.index[2] + index[13] * matrix.index[6] + index[14] * matrix.index[10] + index[15] * matrix.index[14]; double i16 = index[12] * matrix.index[3] + index[13] * matrix.index[7] + index[14] * matrix.index[11] + index[15] * matrix.index[15]; List <double> newList = new List <double> { i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16 }; return(new Matrix3dModel(newList)); }
/// <summary> /// Transform with rotation, this means it is already tranformed back to /// </summary> /// <param name="r"></param> /// <param name="point"></param> /// <returns></returns> public Point3dModel Transform(double r, Point3dModel point) { List <double> rotationMatrix = new List <double> { Math.Cos(r), -Math.Sin(r), 0, 0, Math.Sin(r), Math.Cos(r), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }; Matrix3dModel T1 = new Matrix3dModel(rotationMatrix); return(this.Transform(T1.Transform(point))); }
public InsertPointModel(string alias, string name, long ID, DwgFileModel file, string Handle, Point3dModel position, Matrix3dModel matrixTransform) { this.handle = Handle; this.alias = alias; this.name = name; this.ID = ID; this.file = file; this.position = position; this.matrixTransform = matrixTransform; }