Marcadores Aruco con openCv, obtén las coordenadas de la esquina 3d?

Estoy detectando un marcador Aruco impreso usando opencv 3.2:

aruco::estimatePoseSingleMarkers(corners, markerLength, camMatrix, distCoeffs, rvecs,tvecs);

Esto devuelve un vector de traslación y rotación para el marcador. Lo que necesito son las coordenadas 3d para cada esquina del marcador.

Como sé la longitud del marcador, podría hacer algo como

corner1 = tvecs[0] - markerlength /2;
corner2 = tvecs[0] + markerlength /2;

....

¿Pero hay una mejor manera? O una función existente? Para resumir, tengo:

un punto 3d en el centro de un 2d cuadrado.

la longitud de los lados de ese cuadrado.

El valor de rotación del cuadrado.

¿Cómo puedo encontrar las coordenadas 3d de las esquinas?