draw method

void draw(
  1. Canvas canvas,
  2. Color color, {
  3. bool drawArrowHead = true,
  4. bool drawOrigin = false,
  5. Offset origin = Offset.zero,
  6. double scale = 1,
})

Implementation

void draw(Canvas canvas, Color color,
    {bool drawArrowHead = true,
    bool drawOrigin = false,
    Offset origin = Offset.zero,
    double scale = 1}) {
  Shape.paint.color = color;

  // Origin
  final o = origin;
  // Tip
  final t = Offset(o.dx + x * scale, o.dy + y * scale);

  if (drawOrigin) {
    Shape.paint.style = PaintingStyle.fill;
    canvas.drawCircle(o, 4, Shape.paint);
  }

  Shape.paint.style = PaintingStyle.stroke;
  canvas.drawLine(o, t, Shape.paint);

  if (drawArrowHead) {
    const arrowLen = 12.0;
    const arrowAngle = 0.45;
    final dist = magnitude;
    if (dist <= 0.001) return;
    final dx = -(x / dist) * arrowLen;
    final dy = -(y / dist) * arrowLen;
    final ca = cos(arrowAngle);
    final sa = sin(arrowAngle);

    canvas.drawLine(t, Offset(t.dx + dx * ca - dy * sa, t.dy + dy * ca + dx * sa), Shape.paint);
    canvas.drawLine(t, Offset(t.dx + dx * ca + dy * sa, t.dy + dy * ca - dx * sa), Shape.paint);
  }
}