shuffle([null].concat(randRangeUnique(5,16,2))) _.map(SIDES,function(e){return null===e?randRange(20,140):null}) solveTriangle({sides:SIDES.slice(),angles:ANGLES.slice(),sideLabels:SIDES.slice(),angleLabels:_.map(ANGLES,function(e){return null==e?e:e+"^\\circ"}),vertexLabels:["A","B","C"]}) SIDES.indexOf(null) ["BC", "AC", "AB"][UNKNOWN] "abc"[UNKNOWN] SIDES[(UNKNOWN + 1) % 3] SIDES[(UNKNOWN + 2) % 3] roundTo(1,sqrt(KNOWN_SIDE_1*KNOWN_SIDE_1+KNOWN_SIDE_2*KNOWN_SIDE_2-2*KNOWN_SIDE_1*KNOWN_SIDE_2*cos(ANGLES[UNKNOWN]*PI/180))) rand(2)?randRange(-20,20):randRange(160,200)

Encuentra UNKNOWN_MEASURE.

Redondea a la décima más cercana.

TRIANGLE=addTriangle(_.extend(TRIANGLE,{xPos:1,yPos:1,width:10,height:6,rot:ROTATION})),init({range:[[0,TRIANGLE.width+2],[0,TRIANGLE.height+2]]}),TRIANGLE.draw()
SOLUTION

Puedes usar la ley de cosenos:

\qquad \pink{UNKNOWN_SIDE}^2 \quad = \quad \blue{"abc"[(UNKNOWN + 1) % 3]}^2 + \green{"abc"[(UNKNOWN + 2) % 3]}^2 - 2\blue{"abc"[(UNKNOWN + 1) % 3]} \green{"abc"[(UNKNOWN + 2) % 3]} \space\cos(\pink{"ABC"[UNKNOWN]})

TRIANGLE.sideLabels=_.map(SIDES,function(e,r){return null==e?"abc"[r]:"abc"[r]+" = "+e}),TRIANGLE.sideLabels[UNKNOWN]="\\pink{"+TRIANGLE.sideLabels[UNKNOWN]+"}",TRIANGLE.angleLabels[UNKNOWN]="\\pink{"+TRIANGLE.angleLabels[UNKNOWN]+"}",TRIANGLE.sideLabels[(UNKNOWN+1)%3]="\\blue{"+TRIANGLE.sideLabels[(UNKNOWN+1)%3]+"}",TRIANGLE.sideLabels[(UNKNOWN+2)%3]="\\green{"+TRIANGLE.sideLabels[(UNKNOWN+2)%3]+"}",TRIANGLE.color=GRAY,TRIANGLE.draw()

Introduce los valores conocidos:

\qquad \pink{UNKNOWN_SIDE}^2 \quad = \quad \blue{KNOWN_SIDE_1}^2 + \green{KNOWN_SIDE_2}^2 - 2(\blue{KNOWN_SIDE_1}) (\green{KNOWN_SIDE_2}) \space\cos(\pink{ANGLES[UNKNOWN]^\circ})

\qquad \pink{UNKNOWN_SIDE}^2 \quad = \quad KNOWN_SIDE_1*KNOWN_SIDE_1+KNOWN_SIDE_2*KNOWN_SIDE_2 - 2*KNOWN_SIDE_1*KNOWN_SIDE_2 \cdot\cos(\pink{ANGLES[UNKNOWN]^\circ})

Evalúa y simplifica el lado derecho:

\qquad \pink{UNKNOWN_SIDE}^2 \quad \approx \quad roundTo(9,KNOWN_SIDE_1*KNOWN_SIDE_1+KNOWN_SIDE_2*KNOWN_SIDE_2-2*KNOWN_SIDE_1*KNOWN_SIDE_2*cos(ANGLES[UNKNOWN]*Math.PI/180))

Saca raíz cuadrada a ambos lados (sólo necesitamos preocuparnos por la raíz positiva pues el lado del triángulo no puede tener longitud negativa):

\qquad \pink{UNKNOWN_SIDE} \quad \approx \quad \sqrt{roundTo(9,KNOWN_SIDE_1*KNOWN_SIDE_1+KNOWN_SIDE_2*KNOWN_SIDE_2-2*KNOWN_SIDE_1*KNOWN_SIDE_2*cos(ANGLES[UNKNOWN]*Math.PI/180))}

Evalúa y redondea a la décima más cercana:

\qquad \pink{UNKNOWN_MEASURE} \quad = \quad \pink{UNKNOWN_SIDE} \quad \approx \quad SOLUTION

TRIANGLE.sideLabels[UNKNOWN]="\\pink{"+UNKNOWN_SIDE+" \\approx "+SOLUTION+"}",TRIANGLE.draw()
randRange(5, 15, 3) solveTriangle({sides:SIDES.slice(),angles:[null,null,null],sideLabels:SIDES.slice(),vertexLabels:["A","B","C"]}) randRange(0, 2) "ABC"[UNKNOWN] SIDES[(UNKNOWN + 1) % 3] SIDES[(UNKNOWN + 2) % 3] fraction(KNOWN_SIDE_1*KNOWN_SIDE_1+KNOWN_SIDE_2*KNOWN_SIDE_2-SIDES[UNKNOWN]*SIDES[UNKNOWN],2*KNOWN_SIDE_1*KNOWN_SIDE_2) roundTo(0,acos((KNOWN_SIDE_1*KNOWN_SIDE_1+KNOWN_SIDE_2*KNOWN_SIDE_2-SIDES[UNKNOWN]*SIDES[UNKNOWN])/(2*KNOWN_SIDE_1*KNOWN_SIDE_2))/PI*180) rand(2)?randRange(-20,20):randRange(160,200)

Encuentra m\angle UNKNOWN_ANGLE.

Redondea al grado más cercano.

TRIANGLE=addTriangle(_.extend(TRIANGLE,{xPos:1,yPos:1,width:10,height:6,rot:ROTATION})),init({range:[[0,TRIANGLE.width+2],[0,TRIANGLE.height+2]]}),TRIANGLE.draw()
SOLUTION \Large{^\circ}

Puedes usar la ley de cosenos:

\qquad \pink{"abc"[UNKNOWN]}^2 \quad = \quad \blue{"abc"[(UNKNOWN + 1) % 3]}^2 + \green{"abc"[(UNKNOWN + 2) % 3]}^2 - 2\blue{"abc"[(UNKNOWN + 1) % 3]} \green{"abc"[(UNKNOWN + 2) % 3]} \space\cos(\pink{"ABC"[UNKNOWN]})

TRIANGLE.sideLabels=_.map(SIDES,function(e,r){return"abc"[r]+" = "+e}),TRIANGLE.sideLabels[UNKNOWN]="\\pink{"+TRIANGLE.sideLabels[UNKNOWN]+"}",TRIANGLE.vertexLabels[UNKNOWN]="\\pink{"+"ABC"[UNKNOWN]+"}",TRIANGLE.sideLabels[(UNKNOWN+1)%3]="\\blue{"+TRIANGLE.sideLabels[(UNKNOWN+1)%3]+"}",TRIANGLE.sideLabels[(UNKNOWN+2)%3]="\\green{"+TRIANGLE.sideLabels[(UNKNOWN+2)%3]+"}",TRIANGLE.color=GRAY,TRIANGLE.draw()

Reescribe la ley de cosenos para resolver \cos(\pink{"ABC"[UNKNOWN]}):

\qquad \cos(\pink{"ABC"[UNKNOWN]}) \quad = \quad \dfrac{ \blue{"abc"[(UNKNOWN + 1) % 3]}^2 + \green{"abc"[(UNKNOWN + 2) % 3]}^2 - \pink{"abc"[UNKNOWN]}^2 }{2\blue{"abc"[(UNKNOWN + 1) % 3]} \green{"abc"[(UNKNOWN + 2) % 3]}}

Introduce los valores conocidos:

\qquad \cos(\pink{"ABC"[UNKNOWN]}) \quad = \quad \dfrac{ \blue{KNOWN_SIDE_1}^2 + \green{KNOWN_SIDE_2}^2 - \pink{SIDES[UNKNOWN]}^2 }{2(\blue{KNOWN_SIDE_1}) (\green{KNOWN_SIDE_2})}

Simplifica el lado derecho:

\qquad \cos(\pink{"ABC"[UNKNOWN]}) \quad = \quad COS_UNKNOWN

Evalúa el coseno inverso para encontrar m\angle UNKNOWN_ANGLE y redondea al grado más cercano:

\qquad \pink{m\angle UNKNOWN_ANGLE} \quad = \quad \cos^{-1}\left(COS_UNKNOWN\right) \quad \approx \quad \pink{SOLUTION^\circ}

TRIANGLE.angleLabels[UNKNOWN]="\\pink{"+SOLUTION+"^\\circ}",TRIANGLE.draw()