public void CancelMove(Coordinates orig, WorldTransform t) { throw new NotSupportedException(); }
public void Render(Graphics g, WorldTransform t) { Coordinates wll = t.WorldLowerLeft; Coordinates wup = t.WorldUpperRight; if ((position.X < wll.X || position.X > wup.X || position.Y < wll.Y || position.Y > wup.Y)) { return; } Matrix bodyTrans = new Matrix(); bodyTrans.Rotate((float)(this.Heading) * 180 / (float)Math.PI - 90); bodyTrans.Translate((float)position.X, (float)position.Y, MatrixOrder.Append); Matrix origTrans = g.Transform.Clone(); bodyTrans.Multiply(g.Transform, MatrixOrder.Append); g.Transform = bodyTrans; float penWidth = nomPixelWidth / t.Scale; using (Pen p = new Pen(color, penWidth)) { DrawRectangle(g, p, bodyRect); // build the transform for the rear wheels // do the left wheel Matrix wheelTransform = bodyTrans.Clone(); wheelTransform.Translate(-wheelOffset, 0, MatrixOrder.Prepend); try { g.Transform = wheelTransform; g.FillRectangle(Brushes.White, wheelRectL); DrawRectangle(g, p, wheelRectL); } catch (Exception) { } // do the right wheel wheelTransform = bodyTrans.Clone(); wheelTransform.Translate(wheelOffset, 0, MatrixOrder.Prepend); try { g.Transform = wheelTransform; g.FillRectangle(Brushes.White, wheelRectR); DrawRectangle(g, p, wheelRectR); } catch (Exception) { } // do the front wheels // do the left wheel wheelTransform = bodyTrans.Clone(); wheelTransform.Translate(-wheelOffset, wheelbase, MatrixOrder.Prepend); wheelTransform.Rotate(steeringAngle * 180 / (float)Math.PI, MatrixOrder.Prepend); try { g.Transform = wheelTransform; g.FillRectangle(Brushes.White, wheelRectL); DrawRectangle(g, p, wheelRectL); } catch (Exception) { } // do the right wheel wheelTransform = bodyTrans.Clone(); wheelTransform.Translate(wheelOffset, wheelbase, MatrixOrder.Prepend); wheelTransform.Rotate(steeringAngle * 180 / (float)Math.PI, MatrixOrder.Prepend); try { g.Transform = wheelTransform; g.FillRectangle(Brushes.White, wheelRectR); DrawRectangle(g, p, wheelRectR); } catch (Exception) { } } g.Transform = origTrans; // draw Position DrawingUtility.DrawControlPoint(this.position, color, null, ContentAlignment.MiddleCenter, ControlPointStyle.LargeX, g, t); }
public void CompleteMove(Coordinates orig, Coordinates offset, WorldTransform t) { throw new NotSupportedException(); }
public void Render(Graphics g, WorldTransform t) { if (this.observedVehicle.ObservationState != ObservedVehicleState.Deleted || (this.observedVehicle.ObservationState == ObservedVehicleState.Deleted && DrawingUtility.DisplayDeletedVehicles)) { Coordinates wll = t.WorldLowerLeft; Coordinates wup = t.WorldUpperRight; if ((Position.X < wll.X || Position.X > wup.X || Position.Y < wll.Y || Position.Y > wup.Y)) { return; } Matrix bodyTrans = new Matrix(); bodyTrans.Rotate((float)(this.Heading) * 180 / (float)Math.PI - 90); bodyTrans.Translate((float)Position.X, (float)Position.Y, MatrixOrder.Append); Matrix origTrans = g.Transform.Clone(); bodyTrans.Multiply(g.Transform, MatrixOrder.Append); g.Transform = bodyTrans; float penWidth = nomPixelWidth / t.Scale; using (Pen p = new Pen(color, penWidth)) { DrawRectangle(g, p, bodyRect); // build the transform for the rear wheels // do the left wheel Matrix wheelTransform = bodyTrans.Clone(); wheelTransform.Translate(-WheelOffset, 0, MatrixOrder.Prepend); try { g.Transform = wheelTransform; g.FillRectangle(Brushes.White, wheelRectL); DrawRectangle(g, p, wheelRectL); } catch (Exception) { } // do the right wheel wheelTransform = bodyTrans.Clone(); wheelTransform.Translate(WheelOffset, 0, MatrixOrder.Prepend); try { g.Transform = wheelTransform; g.FillRectangle(Brushes.White, wheelRectR); DrawRectangle(g, p, wheelRectR); } catch (Exception) { } // do the front wheels // do the left wheel wheelTransform = bodyTrans.Clone(); wheelTransform.Translate(-WheelOffset, WheelBase, MatrixOrder.Prepend); wheelTransform.Rotate(steeringAngle * 180 / (float)Math.PI, MatrixOrder.Prepend); try { g.Transform = wheelTransform; g.FillRectangle(Brushes.White, wheelRectL); DrawRectangle(g, p, wheelRectL); } catch (Exception) { } // do the right wheel wheelTransform = bodyTrans.Clone(); wheelTransform.Translate(WheelOffset, WheelBase, MatrixOrder.Prepend); wheelTransform.Rotate(steeringAngle * 180 / (float)Math.PI, MatrixOrder.Prepend); try { g.Transform = wheelTransform; g.FillRectangle(Brushes.White, wheelRectR); DrawRectangle(g, p, wheelRectR); } catch (Exception) { } } g.Transform = origTrans; // draw Position DrawingUtility.DrawControlPoint(this.Position, color, this.observedVehicle.Id.ToString(), ContentAlignment.MiddleCenter, ControlPointStyle.LargeBox, g, t); Coordinates head = this.Position + this.observedVehicle.Heading.Normalize(this.observedVehicle.Length / 2.0); DrawingUtility.DrawControlLine(this.Position, head, color, g, t); } }