我尝试使用JavaScript和Tinkercad API绘制三角形进行CAD建模。我将两个角度和一边的长度作为输入。我几乎让它工作,但我的数学一定是错的。你能发现它在哪里脱轨吗?显然,生成的三角形不是等边的,即使我有60和60的角度输入。
这是我的代码:
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适应我的输入,但我遗漏了一些东西。