Creating a structure of linked tetrahedra

I guess not, because translation will occur in Cartesian space.
You can still build from the center using two points of a face and distance the other along the quadray axis.
Below a code with one tetrahedron attached forming a triangular bipyramid, rotating around centroid of the center tetrahedron. I did not close all faces just to see through.
Maybe you can build something using a PVector array like @kll suggested. Let us know if you succeed.



float rotX, rotY, s, t;

void setup(){
  size(720, 480, P3D);
  s = 60;  
  t = 2*sqrt(6)/3;
  noFill();
  stroke(255);
  hint ( DISABLE_DEPTH_TEST);
} 

void draw(){
  background(0);
  translate(width/2, height/2);
  rotateX(rotX); 
  rotateY(-rotY); 
  
  fill(255, 0, 0, 200); // first red face
  beginShape(TRIANGLES);
  strokeWeight(3); 
  vertex( s,  s,  s); 
  vertex(-s, -s,  s);
  vertex(-s,  s, -s); 
  endShape();
  
  fill(0, 255, 0, 200); // second green face
  beginShape(TRIANGLES);
  //stroke(255, 255, 0);
  vertex( s, -s, -s); 
  //stroke(255, 0, 0);
  vertex( s,  s,  s); 
  //stroke(0, 255, 0);
  vertex(-s, -s, s); 
  endShape();
  
  fill(255, 255, 0, 200); // third yellow face
  beginShape(TRIANGLES);
  vertex( -s, s, -s); 
  vertex( s,  s,  s); 
  vertex(s, -s, -s);
  endShape();
  
  // Using two points of first red face and distance the other
  fill(255, 0, 0, 200); 
  beginShape(TRIANGLES);
  strokeWeight(3);
  vertex( s,  s,  s); 
  vertex(-s, -s,  s); 
  vertex(-t*s,  t*s, t*s); 
  endShape();
  
  fill(255, 0, 0, 200); 
  beginShape(TRIANGLES);
  strokeWeight(3);
  vertex( s,  s,  s); 
  vertex(-t*s, t*s,  t*s); 
  vertex(-s,  s, -s); 
  endShape();
 
  // The axes
  stroke(200, 0, 0, 100);
  line(0, 0, 0, -4*s, -4*s, -4*s);
  stroke(255, 50, 50, 100);
  line(0, 0, 0,  4*s,  4*s,  4*s);
  stroke(0, 200, 0, 100);
  line(0, 0, 0, -4*s, -4*s,  4*s);
  stroke(50, 255, 50, 100);
  line(0, 0, 0,  4*s,  4*s, -4*s);
  stroke(0, 0, 200, 100);
  line(0, 0, 0, -4*s,  4*s, -4*s);
  stroke(50, 50, 255, 100);
  line(0, 0, 0,  4*s, -4*s,  4*s);
  stroke(255, 100);
  line(0, 0, 0,  4*s, -4*s, -4*s);
  stroke(150, 100);
  line(0, 0, 0, -4*s,  4*s,  4*s);
}

void mouseDragged() { 
  rotY -= (mouseX - pmouseX) * 0.01; 
  rotX -= (mouseY - pmouseY) * 0.01;
}