initVariables();
//////////////////////////////////
function funcionGo(ctx, width, height) {
  if (lInit) {
    jsreinitProcedure();
    jsinitTimer(1);
    txClocalUp = "IA PARA LA POSE DEL TRONCO";
    txClocalDown = "sepárese de la cámara, la cara debe activarse";
  }
  //displaymodulo(0);
  displayPose();
  noStroke();
}

function displayPose() {
  let angle = 0;
  textSize(20)

  strokeWeight(20)
  stroke(200, 200, 200, 128)
  fill(255, 255, 255, 128);

  //cabeza
  beginShape();
  curveVertex((x11 + x12) / 2, (y11 + y12) / 2)
  curveVertex(x9, y9);
  curveVertex(x0, y0);
  curveVertex(x1, y1);
  curveVertex(x2, y2);
  curveVertex(x3, y3);
  curveVertex(x7, y7);
  curveVertex(x0, y0);
  curveVertex(x9, y9);
  curveVertex((x11 + x12) / 2, (y11 + y12) / 2)
  endShape();

  beginShape();
  curveVertex((x11 + x12) / 2, (y11 + y12) / 2)
  curveVertex(x10, y10);
  curveVertex(x0, y0);
  curveVertex(x4, y4);
  curveVertex(x5, y5);
  curveVertex(x6, y6);
  curveVertex(x8, y8);
  curveVertex(x0, y0);
  curveVertex(x10, y10);
  curveVertex((x11 + x12) / 2, (y11 + y12) / 2)
  endShape();

  /*//cuello
  beginShape();
  curveVertex(x11, y11);
  curveVertex((x11+(x11+x12)/2)/2, (y11+(y11+y12)/2)/2)
  curveVertex(x9, y9);
  curveVertex(x0, y0);
  curveVertex(x1, y1);
  curveVertex(x2, y2);
  curveVertex(x3, y3);
  curveVertex(x7, y7);
  curveVertex(x0, y0);
  curveVertex(x9, y9);
  curveVertex((x11+x12)/2, (y11+y12)/2)
  curveVertex((x11+(x11+x12)/2)/2, (y11+(y11+y12)/2)/2)
  endShape();

  beginShape();
  curveVertex(x12, y12);
  curveVertex((x12+(x11+x12)/2)/2, (y12+(y11+y12)/2)/2)
  curveVertex(x10, y10);
  curveVertex(x0, y0);
  curveVertex(x4, y4);
  curveVertex(x5, y5);
  curveVertex(x6, y6);
  curveVertex(x8, y8);
  curveVertex(x0, y0);
  curveVertex(x10, y10);
  curveVertex((x11+x12)/2, (y11+y12)/2)
  curveVertex((x12+(x11+x12)/2)/2, (y12+(y11+y12)/2)/2)
  endShape();


  //eess
  beginShape();
  curveVertex(x0, y0);
  curveVertex((x11+x12)/2, (y11+y12)/2)
  curveVertex(x11, y11);
  curveVertex(x13, y13);
  curveVertex(x15, y15);
  curveVertex(x17, y17);
  curveVertex(x19, y19);
  curveVertex(x21, y21);
  curveVertex(x15, y15);
  curveVertex(x13, y13);
  curveVertex((x11+x12)/2, (y11+y12)/2)
  curveVertex(x12, y12);
  endShape();

  beginShape();
  curveVertex(x0, y0);
  curveVertex((x11+x12)/2, (y11+y12)/2)
  curveVertex(x12, y12);
  curveVertex(x14, y14);
  curveVertex(x16, y16);
  curveVertex(x18, y18);
  curveVertex(x20, y20);
  curveVertex(x22, y22);
  curveVertex(x16, y16);
  curveVertex(x14, y14);
  curveVertex((x11+x12)/2, (y11+y12)/2)
  curveVertex(x11, y11);
  endShape();
*/
  //tronco
  beginShape();
  curveVertex(x0, y0);
  curveVertex((x11 + x12) / 2, (y11 + y12) / 2)
  curveVertex(x11, y11);
  curveVertex((x11 + (x23 + x24) / 2) / 2, (y11 + (y23 + y24) / 2) / 2)
  curveVertex(x23, y23);
  curveVertex(x24, y24);
  curveVertex((x23 + x24) / 2, (y23 + y24) / 2)
  endShape();

  beginShape();
  curveVertex(x0, y0);
  curveVertex((x11 + x12) / 2, (y11 + y12) / 2)
  curveVertex(x12, y12);
  curveVertex((x12 + (x23 + x24) / 2) / 2, (y12 + (y23 + y24) / 2) / 2)
  curveVertex(x24, y24);
  curveVertex(x23, y23);
  curveVertex((x23 + x24) / 2, (y23 + y24) / 2)
  endShape();

  //eeii
  /*beginShape();
  curveVertex((x23+x24)/2, (y23+y24)/2);
  curveVertex(x23, y23);
  curveVertex(x25, y25);
  curveVertex(x27, y27);
  curveVertex(x29, y29);
  curveVertex(x31, y31);
  curveVertex(x27, y27);
  curveVertex(x25, y25);
  curveVertex((x23+x24)/2, (y23+y24)/2);
  curveVertex(x24, y24);
  endShape();

  beginShape();
  curveVertex((x23+x24)/2, (y23+y24)/2);
  curveVertex(x24, y24);
  curveVertex(x26, y26);
  curveVertex(x28, y28);
  curveVertex(x30, y30);
  curveVertex(x32, y32);
  curveVertex(x28, y28);
  curveVertex(x26, y26);
  curveVertex((x23+x24)/2, (y23+y24)/2);
  curveVertex(x23, y23);
  endShape();
*/
  /*strokeWeight(1.5)
  stroke(155, 155, 155, 128)
  fill(155, 155, 155, 128);

  line(x12, y12, x14, y14)
  line(x14, y14, x16, y16)
  line(x11, y11, x13, y13)
  line(x13, y13, x15, y15)
  line(x12, y12, x11, y11)
  line(x11, y11, x23, y23)

  line(x24, y24, x26, y26)
  line(x26, y26, x28, y28)
  line(x23, y23, x25, y25)
  line(x25, y25, x27, y27)
  line(x24, y24, x23, y23)
  line(x12, y12, x24, y24)
  //line(x9, y9, x10, y10)

  //line((x11+x12)/2, (y11+y12)/2, x0, y0)

  line(x0, y0, x1, y1)
  line(x1, y1, x2, y2)
  line(x2, y2, x3, y3)
  line(x3, y3, x7, y7)

  line(x0, y0, x4, y4)
  line(x4, y4, x5, y5)
  line(x5, y5, x6, y6)
  line(x6, y6, x8, y8)

  line(x16, y16, x20, y20)
  //line(x16, y16, x18, y18)
  //line(x16, y16, x22, y22)
  line(x15, y15, x19, y19)
  //line(x15, y15, x17, y17)
  //line(x15, y15, x21, y21)
  */

  noStroke();
  fill(0);
  let rshoulder = [x12, y12]
  let relbow = [x14, y14]
  let rwrist = [x16, y16]
  angle = calculate_angle(rshoulder, relbow, rwrist)
  //text(parseInt(angle), x14, y14)

  let lshoulder = [x11, y11]
  let lelbow = [x13, y13]
  let lwrist = [x15, y15]
  angle = calculate_angle(lshoulder, lelbow, lwrist)
  //text(parseInt(angle), x13, y13)

  let rhip = [x24, y24]
  angle = calculate_angle(rhip, rshoulder, relbow)
  text(parseInt(angle), x12, y12)

  let lhip = [x23, y23]
  angle = calculate_angle(lhip, lshoulder, lelbow)
  text(parseInt(angle), x11, y11)

  let rknee = [x26, y26]
  let rankle = [x28, y28]
  angle = calculate_angle(rhip, rknee, rankle)
  text(parseInt(angle), x26, y26)

  let lknee = [x25, y25]
  let lankle = [x27, y27]
  angle = calculate_angle(lhip, lknee, lankle)
  text(parseInt(angle), x25, y25)

  angle = calculate_angle(lshoulder, lhip, lknee)
  text(parseInt(angle), x23, y23)

  angle = calculate_angle(rshoulder, rhip, rknee)
  text(parseInt(angle), x24, y24)

  let lfoot = [x31, y31]
  angle = calculate_angle(lknee, lankle, lfoot)
  text(parseInt(angle), x27, y27)

  let rfoot = [x32, y32]
  angle = calculate_angle(rknee, rankle, rfoot)
  text(parseInt(angle), x28, y28)

  let loreja = [x7, y7]
  let cervical = [(x11 + x12) / 2, (y11 + y12) / 2]
  angle = calculate_angle(loreja, cervical, lshoulder)
  //text(parseInt(angle), x7, y7)

  let roreja = [x8, y8]
  angle = calculate_angle(roreja, cervical, rshoulder)
  //text(parseInt(angle), x8, y8)

  let nariz = [x0, y0]
  angle = calculate_angle(nariz, cervical, lshoulder)
  //text(parseInt(angle), x9, y9)

  angle = calculate_angle(nariz, cervical, rshoulder)
  //text(parseInt(angle), x10, y10)

  let entrecejo = [(x4 + x1) / 2, (y4 + y1) / 2]
  angle = calculate_angle(entrecejo, nariz, cervical)
  //text(parseInt(angle), (x11 + x12) / 2, (y11 + y12) / 2)

}