public PolygonExtended GetBallSpeedArrow() { PolygonExtended polygonToDisplay = new PolygonExtended(); if (location != null) { double angleTeteFleche = Math.PI / 6; double longueurTeteFleche = 0.30; double LongueurFleche = Math.Sqrt(location.Vx * location.Vx + location.Vy * location.Vy); double headingAngle = Math.Atan2(location.Vy, location.Vx) + location.Theta; double xTete = LongueurFleche * Math.Cos(headingAngle); double yTete = LongueurFleche * Math.Sin(headingAngle); polygonToDisplay.polygon.Points.Add(new Point(location.X, location.Y)); polygonToDisplay.polygon.Points.Add(new Point(location.X + xTete, location.Y + yTete)); double angleTeteFleche1 = headingAngle + angleTeteFleche; double angleTeteFleche2 = headingAngle - angleTeteFleche; polygonToDisplay.polygon.Points.Add(new Point(location.X + xTete - longueurTeteFleche * Math.Cos(angleTeteFleche1), location.Y + yTete - longueurTeteFleche * Math.Sin(angleTeteFleche1))); polygonToDisplay.polygon.Points.Add(new Point(location.X + xTete, location.Y + yTete)); polygonToDisplay.polygon.Points.Add(new Point(location.X + xTete - longueurTeteFleche * Math.Cos(angleTeteFleche2), location.Y + yTete - longueurTeteFleche * Math.Sin(angleTeteFleche2))); polygonToDisplay.polygon.Points.Add(new Point(location.X + xTete, location.Y + yTete)); polygonToDisplay.borderWidth = 2; polygonToDisplay.borderColor = Color.FromArgb(0xFF, 0xFF, 0x00, 0x00); polygonToDisplay.borderDashPattern = new double[] { 3, 3 }; polygonToDisplay.borderOpacity = 1; polygonToDisplay.backgroundColor = Color.FromArgb(0x00, 0x00, 0x00, 0x00); } return(polygonToDisplay); }
public RobotDisplay(PolygonExtended pe, System.Drawing.Color color, double transparency) { location = new Location(0, 0, 0, 0, 0, 0); destinationLocation = new Location(0, 0, 0, 0, 0, 0); waypointLocation = new Location(0, 0, 0, 0, 0, 0); shape = pe; lidarMap = new List <PointD>(); displayTransparency = (int)(transparency * 255); displayColor = System.Windows.Media.Color.FromArgb((byte)displayTransparency, color.R, color.G, color.B); }
public void AddOrUpdatePolygonExtended(int id, PolygonExtended p) { if (polygonList.ContainsKey(id)) { polygonList[id] = p; } else { polygonList.Add(id, p); } }
public void InitOpponent(int robotId) { PolygonExtended robotShape = new PolygonExtended(); robotShape.polygon.Points.Add(new Point(-0.25, -0.25)); robotShape.polygon.Points.Add(new Point(0.25, -0.25)); robotShape.polygon.Points.Add(new Point(0.2, 0)); robotShape.polygon.Points.Add(new Point(0.25, 0.25)); robotShape.polygon.Points.Add(new Point(-0.25, 0.25)); robotShape.polygon.Points.Add(new Point(-0.25, -0.25)); RobotDisplay rd = new RobotDisplay(robotShape, System.Drawing.Color.Blue, 1); rd.SetPosition(0, 0, 0); OpponentDisplayDictionary.Add(robotId, rd); }
public PolygonExtended GetRobotPolygon() { PolygonExtended polygonToDisplay = new PolygonExtended(); foreach (var pt in shape.polygon.Points) { Point polyPt = new Point(pt.X * Math.Cos(location.Theta) - pt.Y * Math.Sin(location.Theta), pt.X * Math.Sin(location.Theta) + pt.Y * Math.Cos(location.Theta)); polyPt.X += location.X; polyPt.Y += location.Y; polygonToDisplay.polygon.Points.Add(polyPt); polygonToDisplay.backgroundColor = displayColor;// shape.backgroundColor; polygonToDisplay.borderColor = shape.borderColor; polygonToDisplay.borderWidth = shape.borderWidth; } return(polygonToDisplay); }
public PolygonExtended GetRobotWaypointArrow() { PolygonExtended polygonToDisplay = new PolygonExtended(); double angleTeteFleche = Math.PI / 6; double longueurTeteFleche = 0.30; double headingAngle = Math.Atan2(waypointLocation.Y - location.Y, waypointLocation.X - location.X); polygonToDisplay.polygon.Points.Add(new Point(location.X, location.Y)); polygonToDisplay.polygon.Points.Add(new Point(waypointLocation.X, waypointLocation.Y)); double angleTeteFleche1 = headingAngle + angleTeteFleche; double angleTeteFleche2 = headingAngle - angleTeteFleche; polygonToDisplay.polygon.Points.Add(new Point(waypointLocation.X - longueurTeteFleche * Math.Cos(angleTeteFleche1), waypointLocation.Y - longueurTeteFleche * Math.Sin(angleTeteFleche1))); polygonToDisplay.polygon.Points.Add(new Point(waypointLocation.X, waypointLocation.Y)); polygonToDisplay.polygon.Points.Add(new Point(waypointLocation.X - longueurTeteFleche * Math.Cos(angleTeteFleche2), waypointLocation.Y - longueurTeteFleche * Math.Sin(angleTeteFleche2))); polygonToDisplay.polygon.Points.Add(new Point(waypointLocation.X, waypointLocation.Y)); return(polygonToDisplay); }
public PolygonExtended GetBallPolygon() { PolygonExtended polygonToDisplay = new PolygonExtended(); if (location != null) { int nbSegments = 10; double radius = 0.4; for (double theta = 0; theta <= Math.PI * 2; theta += Math.PI * 2 / nbSegments) { Point pt = new Point(radius * Math.Cos(theta), radius * Math.Sin(theta)); pt.X += location.X; pt.Y += location.Y; polygonToDisplay.polygon.Points.Add(pt); polygonToDisplay.backgroundColor = backgroundColor; polygonToDisplay.borderColor = borderColor; polygonToDisplay.borderWidth = borderWidth; } } return(polygonToDisplay); }
public PolygonExtended GetRobotDestinationArrow() { PolygonExtended polygonToDisplay = new PolygonExtended(); double angleTeteFleche = Math.PI / 6; double longueurTeteFleche = 0.30; double headingAngle = Math.Atan2(destinationLocation.Y - location.Y, destinationLocation.X - location.X); polygonToDisplay.polygon.Points.Add(new Point(location.X, location.Y)); polygonToDisplay.polygon.Points.Add(new Point(destinationLocation.X, destinationLocation.Y)); double angleTeteFleche1 = headingAngle + angleTeteFleche; double angleTeteFleche2 = headingAngle - angleTeteFleche; polygonToDisplay.polygon.Points.Add(new Point(destinationLocation.X - longueurTeteFleche * Math.Cos(angleTeteFleche1), destinationLocation.Y - longueurTeteFleche * Math.Sin(angleTeteFleche1))); polygonToDisplay.polygon.Points.Add(new Point(destinationLocation.X, destinationLocation.Y)); polygonToDisplay.polygon.Points.Add(new Point(destinationLocation.X - longueurTeteFleche * Math.Cos(angleTeteFleche2), destinationLocation.Y - longueurTeteFleche * Math.Sin(angleTeteFleche2))); polygonToDisplay.polygon.Points.Add(new Point(destinationLocation.X, destinationLocation.Y)); polygonToDisplay.borderWidth = 5; polygonToDisplay.borderColor = Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF); polygonToDisplay.borderDashPattern = new double[] { 5, 5 }; polygonToDisplay.borderOpacity = 0.4; polygonToDisplay.backgroundColor = Color.FromArgb(0x00, 0x00, 0x00, 0x00); return(polygonToDisplay); }
//void InitTeam() //{ // //Team1 // for (int i = 0; i < 1; i++) // { // PolygonExtended robotShape = new PolygonExtended(); // robotShape.polygon.Points.Add(new Point(-0.25, -0.25)); // robotShape.polygon.Points.Add(new Point(0.25, -0.25)); // robotShape.polygon.Points.Add(new Point(0.2, 0)); // robotShape.polygon.Points.Add(new Point(0.25, 0.25)); // robotShape.polygon.Points.Add(new Point(-0.25, 0.25)); // robotShape.polygon.Points.Add(new Point(-0.25, -0.25)); // RobotDisplay rd = new RobotDisplay(robotShape); // rd.SetPosition((float)(i * 0.50), (float)(Math.Pow(i, 1.3) * 0.50), (float)Math.PI / 4 * i); // robotDictionary.Add((int)TeamId.Team1+i, rd); // } //} void InitSoccerField() { int fieldLineWidth = 2; PolygonExtended p = new PolygonExtended(); p.polygon.Points.Add(new Point(-12, -8)); p.polygon.Points.Add(new Point(12, -8)); p.polygon.Points.Add(new Point(12, 8)); p.polygon.Points.Add(new Point(-12, 8)); p.polygon.Points.Add(new Point(-12, -8)); p.borderWidth = fieldLineWidth; p.borderColor = Color.FromArgb(0x00, 0x00, 0x00, 0x00); p.backgroundColor = Color.FromArgb(0xFF, 0x22, 0x22, 0x22); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.ZoneProtegee, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(11, -7)); p.polygon.Points.Add(new Point(0, -7)); p.polygon.Points.Add(new Point(0, 7)); p.polygon.Points.Add(new Point(11, 7)); p.polygon.Points.Add(new Point(11, -7)); p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0xFF, 0x00, 0x66, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.DemiTerrainDroit, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(-11, -7)); p.polygon.Points.Add(new Point(0, -7)); p.polygon.Points.Add(new Point(0, 7)); p.polygon.Points.Add(new Point(-11, 7)); p.polygon.Points.Add(new Point(-11, -7)); p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0xFF, 0x00, 0x66, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.DemiTerrainGauche, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(-11, -1.95)); p.polygon.Points.Add(new Point(-10.25, -1.95)); p.polygon.Points.Add(new Point(-10.25, 1.95)); p.polygon.Points.Add(new Point(-11.00, 1.95)); p.polygon.Points.Add(new Point(-11.00, -1.95)); p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.SurfaceButGauche, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(11.00, -1.95)); p.polygon.Points.Add(new Point(10.25, -1.95)); p.polygon.Points.Add(new Point(10.25, 1.95)); p.polygon.Points.Add(new Point(11.00, 1.95)); p.polygon.Points.Add(new Point(11.00, -1.95)); p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.SurfaceButDroit, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(11.00, -3.45)); p.polygon.Points.Add(new Point(8.75, -3.45)); p.polygon.Points.Add(new Point(8.75, 3.45)); p.polygon.Points.Add(new Point(11.00, 3.45)); p.polygon.Points.Add(new Point(11.00, -3.45)); p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.SurfaceReparationDroit, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(-11.00, -3.45)); p.polygon.Points.Add(new Point(-8.75, -3.45)); p.polygon.Points.Add(new Point(-8.75, 3.45)); p.polygon.Points.Add(new Point(-11.00, 3.45)); p.polygon.Points.Add(new Point(-11.00, -3.45)); p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.SurfaceReparationGauche, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(-11.00, -1.20)); p.polygon.Points.Add(new Point(-11.00, 1.20)); p.polygon.Points.Add(new Point(-11.50, 1.20)); p.polygon.Points.Add(new Point(-11.50, -1.20)); p.polygon.Points.Add(new Point(-11.00, -1.20)); p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.ButGauche, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(11.00, -1.20)); p.polygon.Points.Add(new Point(11.00, 1.20)); p.polygon.Points.Add(new Point(11.50, 1.20)); p.polygon.Points.Add(new Point(11.50, -1.20)); p.polygon.Points.Add(new Point(11.00, -1.20)); p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.ButDroit, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(-12.00, -8.00)); p.polygon.Points.Add(new Point(-12.00, -9.00)); p.polygon.Points.Add(new Point(-4.00, -9.00)); p.polygon.Points.Add(new Point(-4.00, -8.00)); p.polygon.Points.Add(new Point(-12.00, -8.00)); p.borderWidth = fieldLineWidth; p.borderColor = Color.FromArgb(0x00, 0x00, 0x00, 0x00); p.backgroundColor = Color.FromArgb(0xFF, 0x00, 0x00, 0xFF); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.ZoneTechniqueGauche, p); p = new PolygonExtended(); p.polygon.Points.Add(new Point(+12.00, -8.00)); p.polygon.Points.Add(new Point(+12.00, -9.00)); p.polygon.Points.Add(new Point(+4.00, -9.00)); p.polygon.Points.Add(new Point(+4.00, -8.00)); p.polygon.Points.Add(new Point(+12.00, -8.00)); p.borderWidth = fieldLineWidth; p.borderColor = Color.FromArgb(0x00, 0x00, 0x00, 0x00); p.backgroundColor = Color.FromArgb(0xFF, 0x00, 0x00, 0xFF); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.ZoneTechniqueDroite, p); p = new PolygonExtended(); int nbSteps = 30; for (int i = 0; i < nbSteps + 1; i++) { p.polygon.Points.Add(new Point(1.0f * Math.Cos((double)i * (2 * Math.PI / nbSteps)), 1.0f * Math.Sin((double)i * (2 * Math.PI / nbSteps)))); } p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.RondCentral, p); p = new PolygonExtended(); for (int i = 0; i < (int)(nbSteps / 4) + 1; i++) { p.polygon.Points.Add(new Point(-11.00 + 0.75 * Math.Cos((double)i * (2 * Math.PI / nbSteps)), -7.0 + 0.75 * Math.Sin((double)i * (2 * Math.PI / nbSteps)))); } p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.CornerBasGauche, p); p = new PolygonExtended(); for (int i = (int)(nbSteps / 4) + 1; i < (int)(2 * nbSteps / 4) + 1; i++) { p.polygon.Points.Add(new Point(11 + 0.75 * Math.Cos((double)i * (2 * Math.PI / nbSteps)), -7 + 0.75 * Math.Sin((double)i * (2 * Math.PI / nbSteps)))); } p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.CornerBasDroite, p); p = new PolygonExtended(); for (int i = (int)(2 * nbSteps / 4); i < (int)(3 * nbSteps / 4) + 1; i++) { p.polygon.Points.Add(new Point(11 + 0.75 * Math.Cos((double)i * (2 * Math.PI / nbSteps)), 7 + 0.75 * Math.Sin((double)i * (2 * Math.PI / nbSteps)))); } p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.CornerHautDroite, p); p = new PolygonExtended(); for (int i = (int)(3 * nbSteps / 4) + 1; i < (int)(nbSteps) + 1; i++) { p.polygon.Points.Add(new Point(-11 + 0.75 * Math.Cos((double)i * (2 * Math.PI / nbSteps)), 7 + 0.75 * Math.Sin((double)i * (2 * Math.PI / nbSteps)))); } p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.CornerHautGauche, p); p = new PolygonExtended(); for (int i = 0; i < (int)(nbSteps) + 1; i++) { p.polygon.Points.Add(new Point(-7.4 + 0.075 * Math.Cos((double)i * (2 * Math.PI / nbSteps)), 0.075 * Math.Sin((double)i * (2 * Math.PI / nbSteps)))); } p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.PtAvantSurfaceGauche, p); p = new PolygonExtended(); for (int i = 0; i < (int)(nbSteps) + 1; i++) { p.polygon.Points.Add(new Point(7.4 + 0.075 * Math.Cos((double)i * (2 * Math.PI / nbSteps)), 0.075 * Math.Sin((double)i * (2 * Math.PI / nbSteps)))); } p.borderWidth = fieldLineWidth; p.backgroundColor = Color.FromArgb(0x00, 0x00, 0xFF, 0x00); PolygonSeries.AddOrUpdatePolygonExtended((int)Terrain.PtAvantSurfaceDroit, p); }