syntax = "proto3";

package cmvr.common;

message Vec2 {
  optional double x = 1;
  optional double y = 2;
}

message Vec3 {
  optional double x = 1;
  optional double y = 2;
  optional double z = 3;
}

message Vec6 {
  optional double x = 1;
  optional double y = 2;
  optional double z = 3;
  optional double rx = 4;
  optional double ry = 5;
  optional double rz = 6;
}

message Quat {
  optional double w = 1;
  optional double x = 2;
  optional double y = 3;
  optional double z = 4;
}

message Euler {
  optional double rx = 1;
  optional double ry = 2;
  optional double rz = 3;
}

message Pose3d {
  Vec3 position = 1;
  Quat quaternion = 2;
  Euler euler = 3;
}

message Pose2d {
  optional double x = 1;
  optional double y = 2;
  optional double theta = 3;
}

message Mat3 {
  optional double m00 = 1;
  optional double m01 = 2;
  optional double m02 = 3;
  optional double m10 = 4;
  optional double m11 = 5;
  optional double m12 = 6;
  optional double m20 = 7;
  optional double m21 = 8;
  optional double m22 = 9;
}

message Mat4 {
  optional double m00 = 1;
  optional double m01 = 2;
  optional double m02 = 3;
  optional double m03 = 4;
  optional double m10 = 5;
  optional double m11 = 6;
  optional double m12 = 7;
  optional double m13 = 8;
  optional double m20 = 9;
  optional double m21 = 10;
  optional double m22 = 11;
  optional double m23 = 12;
  optional double m30 = 13;
  optional double m31 = 14;
  optional double m32 = 15;
  optional double m33 = 16;
}
