Position.create constructor

Position.create({
  1. required double x,
  2. required double y,
  3. double? z,
  4. double? m,
})

A position from parameters compatible with CreatePosition function type.

The Position.view constructor is used to create a position from a double array filled by given x, y, and optionally z and m.

Examples:

// a 2D position (x: 10.0, y: 20.0)
Position.create(x: 10.0, y: 20.0);

// a 3D position (x: 10.0, y: 20.0, z: 30.0)
Position.create(x: 10.0, y: 20.0, z: 30.0);

// a measured 2D position (x: 10.0, y: 20.0, m: 40.0)
Position.create(x: 10.0, y: 20.0, m: 40.0);

// a measured 3D position (x: 10.0, y: 20.0, z: 30.0, m: 40.0)
Position.create(x: 10.0, y: 20.0, z: 30.0, m: 40.0);

Implementation

factory Position.create({
  required double x,
  required double y,
  double? z,
  double? m,
}) {
  if (z != null) {
    // 3D coordinates
    if (m != null) {
      // 3D and measured coordinates
      final list = Float64List(4);
      list[0] = x;
      list[1] = y;
      list[2] = z;
      list[3] = m;
      return Position.view(list, type: Coords.xyzm);
    } else {
      // 3D coordinates (not measured)
      final list = Float64List(3);
      list[0] = x;
      list[1] = y;
      list[2] = z;
      return Position.view(list, type: Coords.xyz);
    }
  } else {
    // 2D coordinates
    if (m != null) {
      // 2D and measured coordinates
      final list = Float64List(3);
      list[0] = x;
      list[1] = y;
      list[2] = m;
      return Position.view(list, type: Coords.xym);
    } else {
      // 2D coordinates (not measured)
      final list = Float64List(2);
      list[0] = x;
      list[1] = y;
      return Position.view(list, type: Coords.xy);
    }
  }
}