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); }
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); }