Exemple #1
0
        public void GenerateFiducialPattern(double radius = 2.5, int numOfLines = 4)
        {
            _fiducialPattern = new List <IMarkGeometry>();

            var baseLine  = new MarkGeometryLine(new MarkGeometryPoint(-radius, 0), new MarkGeometryPoint(radius, 0));
            var transform = GeometricArithmeticModule.GetRotationTransformationMatrix(
                0, 0, Math.PI / numOfLines
                );

            for (int i = 0; i < numOfLines; i++)
            {
                _fiducialPattern.Add((IMarkGeometry)baseLine.Clone());
                baseLine.Transform(transform);
            }

            _fiducialPattern.Add(new MarkGeometryCircle(radius));
        }
Exemple #2
0
        public Matrix4x4 ToMatrix4x4()
        {
            return(GeometricArithmeticModule.CombineTransformations(
                       // apply scale
                       GeometricArithmeticModule.GetScalingTransformationMatrix(
                           ScaleX, ScaleY, ScaleZ
                           ),

                       // apply rotation - don't forget to convert degrees to radians
                       GeometricArithmeticModule.GetRotationTransformationMatrix(
                           GeometricArithmeticModule.ToRadians(RotationDegX),
                           GeometricArithmeticModule.ToRadians(RotationDegY),
                           GeometricArithmeticModule.ToRadians(RotationDegZ)
                           ),

                       // apply offset
                       GeometricArithmeticModule.GetTranslationTransformationMatrix(
                           OffsetX, OffsetY, OffsetZ
                           )
                       ));
        }
        // TODO: Implement mask angle align func
        //     1. The mask angle is measured directly by camera.
        //     2. The mask is rotated to compensate for the angle.
        //     3. The procedure continues until the angle is zero.

        public MVertex ConvertCADToMachineCoordinate(MVertex cadOrigin, MVertex pointOnCAD)
        {
            var transform = GeometricArithmeticModule.CombineTransformations(
                GeometricArithmeticModule.GetTranslationTransformationMatrix(
                    -cadOrigin.X, -cadOrigin.Y
                    ),
                GeometricArithmeticModule.GetRotationTransformationMatrix(
                    0, 0, Angle
                    ),
                GeometricArithmeticModule.GetTranslationTransformationMatrix(
                    OriginRelativeBEAM.X, OriginRelativeBEAM.Y
                    )
                );

            var result = Vector3.Transform(
                new Vector3((float)pointOnCAD.X, (float)pointOnCAD.Y, 0),
                transform
                );

            return(new MVertex(Inverts.X * result.X, Inverts.Y * result.Y));
        }