Ejemplo n.º 1
0
        private PointCollection OneStagePath(BazelyChuck chuck, double inc)
        {
            PointCollection pnts       = new PointCollection();
            BazelyStageData stage1     = chuck.Stages[0];
            var             stage1Vnum = stage1.Vnum;
            var             stage1Vden = stage1.Vden;
            var             stage1PHI  = FNR(stage1.PHI);

            var V = stage1Vnum / stage1Vden;

            if (!stage1.SameDirection)
            {
                V *= -1;
            }
            if (stage1Vden % stage1Vnum == 0)
            {
                stage1Vden /= stage1Vnum;
            }

            //pnts.Add(new Point(stage1.Ex * Math.Cos(0) + chuck.SR * Math.Cos(stage1PHI),
            //                   stage1.Ex * Math.Sin(0) + chuck.SR * Math.Sin(stage1PHI)));

            double maxangle = stage1.Vden * Alpha;

            for (double Theta = 0; Theta <= maxangle; Theta += inc)
            {
                pnts.Add(
                    new Point(stage1.Ex * Math.Cos(Theta) + chuck.SR * Math.Cos((1 + V) * Theta + stage1PHI),
                              stage1.Ex * Math.Sin(Theta) + chuck.SR * Math.Sin((1 + V) * Theta + stage1PHI))
                    );
            }
            return(pnts);
        }
Ejemplo n.º 2
0
        Windows.UI.Xaml.Shapes.Polygon Path(PathData pd, double inc)
        {
            Windows.UI.Xaml.Shapes.Polygon p = new Windows.UI.Xaml.Shapes.Polygon();
            p.Tag = "Bazley";
            //Debug.WriteLine("BazelyEngine Polygon Created");
            p.Stroke          = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
            p.RenderTransform = new CompositeTransform();
            if (!(pd is BazelyChuck))
            {
                return(p);
            }
            BazelyChuck chuck = (pd as BazelyChuck);

            //Debug.WriteLine("BazelyEngine Calc Points");
            if (chuck.Stages.Count == 1)
            {
                p.Points = OneStagePath(chuck, inc);
            }
            else
            {
                p.Points = TwoStagePath(chuck, inc);
            }
            //Debug.WriteLine("BazelyEngine Points created");
            CentrePolygon(ref p);
            return(p);
        }
Ejemplo n.º 3
0
        static private async Task ReadData()
        {
            string data;
            var    file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"GEODATA.txt");

            var stream = await file.OpenStreamForReadAsync();

            var rdr = new StreamReader(stream);

            data = await rdr.ReadToEndAsync();

            var lines = data.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

            foreach (string line in lines)
            {
                var         info  = line.Split(new char[] { ':' });
                int         indx  = int.Parse(info[0].Substring(1, info[0].Length - 2));
                string[]    pdata = info[1].Split(new char[] { ',' });
                PatternType typ   = PatternType.BAZELEY;
                if ((indx > MainPage.Max_Built_In_Bazeley_Index) &&
                    (indx < MainPage.Max_Built_In_Ross_Index))
                {
                    typ = PatternType.ROSS;
                }
                BazelyChuck bc = new BazelyChuck(indx, pdata);
                _data.Add(bc);
            }
        }
Ejemplo n.º 4
0
        public ToolPath CreateToolPath(PathData pd, double inc)
        {
            BazelyChuck chuck = (pd as BazelyChuck);

            if (chuck.Stages.Count == 1)
            {
                return(new ToolPath(OneStagePath(chuck, inc)));
            }
            else
            {
                return(new ToolPath(TwoStagePath(chuck, inc)));
            }
        }
Ejemplo n.º 5
0
        private PointCollection TwoStagePath(BazelyChuck chuck, double inc)
        {
            PointCollection pnts   = new PointCollection();
            BazelyStageData stage1 = chuck.Stages[0];
            BazelyStageData stage2 = chuck.Stages[1];

            var stage1Vnum = stage1.Vnum;
            var stage1Vden = stage1.Vden;

            var stage2Vnum = stage2.Vnum;
            var stage2Vden = stage2.Vden;

            var V1 = stage1Vnum / stage1Vden;
            var V2 = stage2Vnum / stage2Vden;

            double stage1PHI = FNR(ToRadians * stage1.PHI);
            double stage2PHI = FNR(ToRadians * stage2.PHI);

            if (stage2Vnum % stage1Vden == 0)
            {
                stage2Vden /= stage1Vden;
            }
            else if (stage2Vnum % stage1Vden == 11)
            {
                stage2Vden = stage2Vden / stage1Vden * 3;
            }

            double maxangle = stage1Vden * stage2Vden * Alpha;

            maxangle = Math.Max(maxangle, Alpha);

            for (double Theta = 0; Theta <= maxangle; Theta += inc)
            {
                //X = .Ex2 * Math.Cos(Theta) + .Ex1 * Math.Cos((1 + V2) * Theta + .PHI2) + .SR * Math.Cos((1 + V2 - (V1 * V2)) * Theta + .PHI1)
                //Y = .Ex2 * Math.Sin(Theta) + .Ex1 * Math.Sin((1 + V2) * Theta + .PHI2) + .SR * Math.Sin((1 + V2 - (V2 * V1)) * Theta + .PHI1)

                double x = stage2.Ex * Math.Cos(Theta) + stage1.Ex * Math.Cos((1 + V2) * Theta + stage2PHI) + chuck.SR * Math.Cos((1 + V2 - (V1 * V2)) * Theta + stage1PHI);
                double y = stage2.Ex * Math.Sin(Theta) + stage1.Ex * Math.Sin((1 + V2) * Theta + stage2PHI) + chuck.SR * Math.Sin((1 + V2 - (V2 * V1)) * Theta + stage1PHI);
                pnts.Add(new Point(x, y));
            }
            return(pnts);
        }
Ejemplo n.º 6
0
        private PointCollection OneStagePath(BazelyChuck chuck, double inc)
        {
            PointCollection pnts = new PointCollection();
            BazelyStageData stage1 = chuck.Stages[0];
            var stage1Vnum = stage1.Vnum;
            var stage1Vden = stage1.Vden;
            var stage1PHI = FNR(stage1.PHI);

            var V = stage1Vnum / stage1Vden;

            if (!stage1.SameDirection)
                V *= -1;
            if (stage1Vden % stage1Vnum == 0)
                stage1Vden /= stage1Vnum;

            //pnts.Add(new Point(stage1.Ex * Math.Cos(0) + chuck.SR * Math.Cos(stage1PHI),
            //                   stage1.Ex * Math.Sin(0) + chuck.SR * Math.Sin(stage1PHI)));

            double maxangle = stage1.Vden * Alpha;
           
            for (double Theta = 0; Theta <= maxangle; Theta += inc)
            {
                pnts.Add(
                    new Point(stage1.Ex * Math.Cos(Theta) + chuck.SR * Math.Cos((1 + V) * Theta + stage1PHI),
                              stage1.Ex * Math.Sin(Theta) + chuck.SR * Math.Sin((1 + V) * Theta + stage1PHI))
                              );
            }
            return pnts;
        }
Ejemplo n.º 7
0
        private PointCollection TwoStagePath(BazelyChuck chuck, double inc)
        {
            PointCollection pnts = new PointCollection();
            BazelyStageData stage1 = chuck.Stages[0];
            BazelyStageData stage2 = chuck.Stages[1];

            var stage1Vnum = stage1.Vnum;
            var stage1Vden = stage1.Vden;

            var stage2Vnum = stage2.Vnum;
            var stage2Vden = stage2.Vden;

            var V1 = stage1Vnum / stage1Vden;
            var V2 = stage2Vnum / stage2Vden;

            double stage1PHI = FNR(ToRadians * stage1.PHI);
            double stage2PHI = FNR(ToRadians * stage2.PHI);

            if (stage2Vnum % stage1Vden == 0)
                stage2Vden /= stage1Vden;
            else if (stage2Vnum % stage1Vden == 11)
                stage2Vden = stage2Vden / stage1Vden * 3;

            double maxangle = stage1Vden * stage2Vden * Alpha;
            maxangle = Math.Max(maxangle, Alpha);
           
            for (double Theta = 0; Theta <= maxangle; Theta += inc)
            {
                //X = .Ex2 * Math.Cos(Theta) + .Ex1 * Math.Cos((1 + V2) * Theta + .PHI2) + .SR * Math.Cos((1 + V2 - (V1 * V2)) * Theta + .PHI1)
                //Y = .Ex2 * Math.Sin(Theta) + .Ex1 * Math.Sin((1 + V2) * Theta + .PHI2) + .SR * Math.Sin((1 + V2 - (V2 * V1)) * Theta + .PHI1)

                double x = stage2.Ex * Math.Cos(Theta) + stage1.Ex * Math.Cos((1 + V2) * Theta + stage2PHI) + chuck.SR * Math.Cos((1 + V2 - (V1 * V2)) * Theta + stage1PHI);
                double y = stage2.Ex * Math.Sin(Theta) + stage1.Ex * Math.Sin((1 + V2) * Theta + stage2PHI) + chuck.SR * Math.Sin((1 + V2 - (V2 * V1)) * Theta + stage1PHI);
                pnts.Add(new Point(x, y));
            }
            return pnts;
        }
Ejemplo n.º 8
0
 async void ReadWheelsData()
 {
     string data;
     var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"GEODATA.txt");
     var stream = await file.OpenStreamForReadAsync();
     var rdr = new StreamReader(stream);
     data = await rdr.ReadToEndAsync();
     var lines = data.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
     var index = 0;
     foreach (string line in lines)
     {
         var info = line.Split(new char[] { ':' });
         int indx = int.Parse(info[0].Substring(1, info[0].Length - 2));
         string[] pdata = info[1].Split(new char[] { ',' });
         BazelyChuck bc = new BazelyChuck(index++, pdata);
         _BazelyPatterns.Add(bc);
     }
     _lastWheelsPattern = _WheelsPatterns[0];
 }
Ejemplo n.º 9
0
 public ViewModel()
 {     
     NeedsInitialising = true;
     LastBazleyPattern = new BazelyChuck();
     LastRossPattern = new RossData();
     LastWheelsPattern = new WheelsData();
     LastBarrelPattern = new Barrel();
     LastLatticePattern = new LatticeData();
     LastBraidPattern = new BraidData();
 }