在JavaScript三角形计算中导出第三个顶点

时间:2017-12-16 20:58:38

标签: javascript trigonometry cad

我尝试使用JavaScript和Tinkercad API绘制三角形进行CAD建模。我将两个角度和一边的长度作为输入。我几乎让它工作,但我的数学一定是错的。你能发现它在哪里脱轨吗?显然,生成的三角形不是等边的,即使我有60和60的角度输入。 Wedge By Angles Screenshot

这是我的代码:

function process(params) {
  var h = params.height || 20;
  var angleA = params.angleA || 60;
  var angleB = params.angleB || 60;
  var angleC = 180 - (angleA + angleB);
  var sideA = params.sideA || 20;

  // TODO: account for invalid input > than 180?

  var sinA = Math.sin(degToR(angleA));
  var sinB = Math.sin(degToR(angleB));
  var sinC = Math.sin(degToR(angleC));

  var ratio = sideA / sinA;
  var sideB = ratio * sinB; // length of side B
  var sideC = ratio * sinC; // length of side C

  // Find vertex C
  var vertexC = {};
  vertexC.x = Math.round(Math.cos(angleC * Math.PI / 180) * sideC + 0);
  vertexC.y = Math.round(Math.sin(angleC * Math.PI / 180) * sideC + sideA);

  // Build triangle
  var path = new Path2D();
  path.moveTo(0,0);
  path.lineTo(0, sideA);
  path.lineTo(vertexC.x, vertexC.y);
  path.close();

  // "Extrude" to CAD's third dimension
  return Solid.extrude([path], h);
}

function degToR(x){
  return x / 180 * Math.PI;
}

我试图让this answer适应我的输入,但我遗漏了一些东西。

0 个答案:

没有答案