コード例 #1
0
        private void updateViewport()
        {
            if (xyViewportRB.Checked)
            {
                this.scalingFactorTB.Text=Convert.ToString(localSettingsInstance.viewportXYScalingFactor);
                this.horizontalResTB.Text=Convert.ToString(localSettingsInstance.viewportXYHorizontalRes);
                this.verticalResTB.Text=Convert.ToString(localSettingsInstance.viewportXYVerticalRes);
                if (localSettingsInstance.viewportXYScalingType==BaseTypes.scalingType.Native) this.keepNativeSizeRB.Checked=true;
                if (localSettingsInstance.viewportXYScalingType==BaseTypes.scalingType.ScaleBy) this.scaleByRB.Checked=true;
                if (localSettingsInstance.viewportXYScalingType==BaseTypes.scalingType.Custom) this.customResolutionRB.Checked=true;

                last_viewport = BaseTypes.viewport.XY;
            }
            else if (xzViewportRB.Checked)
            {
                this.scalingFactorTB.Text=Convert.ToString(localSettingsInstance.viewportXZScalingFactor);
                this.horizontalResTB.Text=Convert.ToString(localSettingsInstance.viewportXZHorizontalRes);
                this.verticalResTB.Text=Convert.ToString(localSettingsInstance.viewportXZVerticalRes);
                if (localSettingsInstance.viewportXZScalingType==BaseTypes.scalingType.Native) this.keepNativeSizeRB.Checked=true;
                if (localSettingsInstance.viewportXZScalingType==BaseTypes.scalingType.ScaleBy) this.scaleByRB.Checked=true;
                if (localSettingsInstance.viewportXZScalingType==BaseTypes.scalingType.Custom) this.customResolutionRB.Checked=true;
                last_viewport = BaseTypes.viewport.XZ;
            }
            else
            {
                this.scalingFactorTB.Text=Convert.ToString(localSettingsInstance.viewportYZScalingFactor);
                this.horizontalResTB.Text=Convert.ToString(localSettingsInstance.viewportYZHorizontalRes);
                this.verticalResTB.Text=Convert.ToString(localSettingsInstance.viewportYZVerticalRes);
                if (localSettingsInstance.viewportYZScalingType==BaseTypes.scalingType.Native) this.keepNativeSizeRB.Checked=true;
                if (localSettingsInstance.viewportYZScalingType==BaseTypes.scalingType.ScaleBy) this.scaleByRB.Checked=true;
                if (localSettingsInstance.viewportYZScalingType==BaseTypes.scalingType.Custom) this.customResolutionRB.Checked=true;
                last_viewport = BaseTypes.viewport.YZ;
            }
        }
コード例 #2
0
        //updates point coordinates for given frames, and with given acceptance threshold and presumed position offset
        public void trackPoint(Bitmap xyFrame, Bitmap xzFrame, Bitmap yzFrame, int acceptanceThreshold, int lastPositionOffset)
        {
            vprtNotTracked=BaseTypes.viewport.None;
            prevXYCoordX=xyCoordX;
            prevXYCoordY=xyCoordY;
            prevXZCoordX=xzCoordX;
            prevXZCoordZ=xzCoordZ;
            prevYZCoordY=yzCoordY;
            prevYZCoordZ=yzCoordZ;

            Rectangle xyArea, xzArea, yzArea;

            xyArea = new Rectangle(xyCoordX - lastPositionOffset, xyCoordY-lastPositionOffset, xyCoordX+(2*xyRadius)+lastPositionOffset, xyCoordY+(2*xyRadius)+lastPositionOffset);
            xzArea = new Rectangle(xzCoordX - lastPositionOffset, xzCoordZ-lastPositionOffset, xzCoordX+(2*xzRadius)+lastPositionOffset, xzCoordZ+(2*xzRadius)+lastPositionOffset);
            yzArea = new Rectangle(yzCoordY - lastPositionOffset, yzCoordZ-lastPositionOffset, yzCoordY+(2*yzRadius)+lastPositionOffset, yzCoordZ+(2*yzRadius)+lastPositionOffset);

            locatePointThread lptXY = new locatePointThread(BaseTypes.viewport.XY,
            xyArea,xyFrame,acceptanceThreshold,xyRadius,xyAnn,new locatePointThreadCallback(locatePointThreadCallbackResult));

            locatePointThread lptXZ = new locatePointThread(BaseTypes.viewport.XZ,
            xzArea,xzFrame,acceptanceThreshold,xzRadius,xzAnn,new locatePointThreadCallback(locatePointThreadCallbackResult));

            locatePointThread lptYZ = new locatePointThread(BaseTypes.viewport.YZ,
                yzArea,yzFrame,acceptanceThreshold,yzRadius,yzAnn,new locatePointThreadCallback(locatePointThreadCallbackResult));

            Thread xyTrackingThread = new Thread(new ThreadStart(lptXY.ThreadProc));
            Thread xzTrackingThread = new Thread(new ThreadStart(lptXZ.ThreadProc));
            Thread yzTrackingThread = new Thread(new ThreadStart(lptYZ.ThreadProc));

            xyTrackingThread.Start();
            xzTrackingThread.Start();
            yzTrackingThread.Start();

            calculateWorldCoords();
        }
コード例 #3
0
 // The constructor obtains the state information.
 public locatePointThread( BaseTypes.viewport Vprt,Rectangle ScanArea,Bitmap Bmp,int AcceptanceThreshold,int radius, NeuralNetwork aan, locatePointThreadCallback callbackDelegate)
 {
     this.vprt = Vprt;
     this.scanArea = ScanArea;
     this.bmp = Bmp;
     this.acceptanceThreshold = AcceptanceThreshold;
     this.Radius=radius;
     this.Ann=aan;
     callback = callbackDelegate;
 }
コード例 #4
0
        //callback procedure used to retrieve results from tracking thread
        public void locatePointThreadCallbackResult(int xA, int yA, BaseTypes.viewport vPrt, bool tracked)
        {
            if (!tracked) vprtNotTracked=vPrt;

            switch (vPrt)
            {
                case BaseTypes.viewport.XY:
                {
                    this.xyCoordX=xA;
                    this.xyCoordY=yA;
                    break;
                }
                case BaseTypes.viewport.XZ:
                {
                    this.xzCoordX=xA;
                    this.xzCoordZ=yA;
                    break;
                }
                case BaseTypes.viewport.YZ:
                {
                    this.yzCoordY=xA;
                    this.yzCoordZ=yA;
                    break;
                }

            }
            leftToProcess--;

            if (leftToProcess==0)
            {
                if (vprtNotTracked!=BaseTypes.viewport.None)
                {
                    //locating missing point, using data from other viewports
                    switch (vprtNotTracked)
                    {

                        case BaseTypes.viewport.XY:
                        {
                            this.xyCoordX=
                        (int)((trackingPoint.DistanceQuotientXY*(this.xzCoordX - prevXZCoordX))/trackingPoint.DistanceQuotientXZ);

                            this.xyCoordY=
                        (int)((trackingPoint.DistanceQuotientXY*(this.yzCoordY - prevYZCoordY))/trackingPoint.DistanceQuotientYZ);

                            break;
                        }

                        case BaseTypes.viewport.XZ:
                        {
                            this.xzCoordX=
                        (int)((trackingPoint.DistanceQuotientXZ*(this.xyCoordX - prevXYCoordX))/trackingPoint.DistanceQuotientXY);

                            this.xzCoordZ=
                        (int)((trackingPoint.DistanceQuotientXZ*(this.yzCoordZ - prevYZCoordZ))/trackingPoint.DistanceQuotientYZ);
                            break;
                        }
                        case BaseTypes.viewport.YZ:
                        {
                            this.yzCoordY=
                        (int)((trackingPoint.DistanceQuotientYZ*(this.xyCoordY - prevXYCoordY))/trackingPoint.DistanceQuotientXY);

                            this.yzCoordZ=
                        (int)((trackingPoint.DistanceQuotientYZ*(this.xzCoordZ - prevXZCoordZ))/trackingPoint.DistanceQuotientXZ);
                            break;
                        }

                    }

                }

                OnFrameProcessed();
            }
        }