randRange(0, 2) ["BC", "AC", "AB"][UNKNOWN] "abc"[UNKNOWN] (UNKNOWN + randRange(1, 2)) % 3 randRange(5, 16) _.map([null, null, null], function (s, i) { return i === KNOWN ? KNOWN_SIDE : s; }) (function() { var angles = [null, null, null]; var angle = randRange(20, 140); angles[UNKNOWN] = angle; angles[KNOWN] = randRange(20, 160 - angle); return angles; })() solveTriangle({ sides: SIDES.slice(), angles: ANGLES.slice(), sideLabels: SIDES.slice(), angleLabels: _.map(ANGLES, function(a) { return a == null ? a : a + "^\\circ"; }), vertexLabels: ["A", "B", "C"] }) roundTo(1, KNOWN_SIDE * sin(ANGLES[UNKNOWN] * PI / 180) / sin(ANGLES[KNOWN] * PI / 180)) rand(2) ? randRange(-20, 20) : randRange(160, 200)

Find `UNKNOWN_MEASURE`.

Round to the nearest tenth.

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

We can use the law of sines:

`\qquad \blue{\dfrac{UNKNOWN_SIDE}{\sin("ABC"[UNKNOWN])}} = \green{\dfrac{"abc"[KNOWN]}{\sin("ABC"[KNOWN])}}`

TRIANGLE.sideLabels[KNOWN] = "\\green{" + "abc"[KNOWN] + " = " + KNOWN_SIDE + "}"; TRIANGLE.angleLabels[KNOWN] = "\\green{" + TRIANGLE.angleLabels[KNOWN] + "}"; TRIANGLE.sideLabels[UNKNOWN] = "\\blue{" + "abc"[UNKNOWN] + "}"; TRIANGLE.angleLabels[UNKNOWN] = "\\blue{" + TRIANGLE.angleLabels[UNKNOWN] + "}"; TRIANGLE.color = GRAY; TRIANGLE.draw();

Multiply both sides by `\blue{\sin("ABC"[UNKNOWN])}`:

`\qquad \blue{UNKNOWN_SIDE} = \green{"abc"[KNOWN]} \dfrac{\blue{\sin("ABC"[UNKNOWN])}}{\green{\sin("ABC"[KNOWN])}}`

Plug in the known values:

`\qquad \blue{UNKNOWN_SIDE} = \green{KNOWN_SIDE} \dfrac{\blue{\sin(ANGLES[UNKNOWN])}}{\green{\sin(ANGLES[KNOWN])}}`

Evaluate and round to the nearest tenth:

`\qquad \blue{UNKNOWN_MEASURE} = \blue{UNKNOWN_SIDE} \approx \blue{SOLUTION}`

TRIANGLE.sideLabels[UNKNOWN] = "\\blue{" + UNKNOWN_SIDE + " \\approx " + SOLUTION + "}"; TRIANGLE.draw();
randRange(0, 2) "ABC"[UNKNOWN] (UNKNOWN + randRange(1, 2)) % 3 randRange(5, 15, 3) (function() { var sides = [null, null, null]; sides[UNKNOWN] = SIDES[UNKNOWN]; sides[KNOWN] = SIDES[KNOWN]; return sides; })() solveTriangle({ sides: SIDES.slice(), angles: [null, null, null], sideLabels: SIDE_LABELS, vertexLabels: ["A", "B", "C"] }) TRIANGLE.angles roundTo(0, ANGLES[KNOWN]) roundTo(0, asin(sin(KNOWN_ANGLE * PI / 180) * SIDES[UNKNOWN] / SIDES[KNOWN]) * 180 / PI) ANGLES[UNKNOWN] > 90 ? 180 - POSSIBLE_SOLUTION : POSSIBLE_SOLUTION roundTo(2, SIDES[UNKNOWN] / SIDES[KNOWN] * sin(KNOWN_ANGLE * PI / 180)) rand(2) ? randRange(-20, 20) : randRange(160, 200)

Find `m\angle UNKNOWN_ANGLE`.

Note that `m\angle UNKNOWN_ANGLE` is obtuse. Note that `m\angle UNKNOWN_ANGLE` is acute. Round to the nearest degree.

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.angleLabels[KNOWN] = KNOWN_ANGLE + "^\\circ"; TRIANGLE.draw();
SOLUTION `\Large{^\circ}`

We can use the law of sines:

`\qquad \blue{\dfrac{\sin(UNKNOWN_ANGLE)}{"abc"[UNKNOWN]}} = \green{\dfrac{\sin("ABC"[KNOWN])}{"abc"[KNOWN]}}`

TRIANGLE.sideLabels[KNOWN] = "\\green{" + "abc"[KNOWN] + " = " + SIDES[KNOWN] + "}"; TRIANGLE.angleLabels[KNOWN] = "\\green{" + TRIANGLE.angleLabels[KNOWN] + "}"; TRIANGLE.sideLabels[UNKNOWN] = "\\blue{" + "abc"[UNKNOWN] + " = " + SIDES[UNKNOWN] + "}"; TRIANGLE.vertexLabels[UNKNOWN] = "\\blue{" + UNKNOWN_ANGLE + "}"; TRIANGLE.color = GRAY; TRIANGLE.draw();

Multiply both sides by `\blue{"abc"[UNKNOWN]}`:

`\qquad \blue{\sin(UNKNOWN_ANGLE)} = \dfrac{\blue{"abc"[UNKNOWN]}}{\green{"abc"[KNOWN]}} \green{\sin("ABC"[KNOWN])}`

Plug in the known values:

`\qquad \blue{\sin(UNKNOWN_ANGLE)} = \dfrac{\blue{SIDES[UNKNOWN]}}{\green{SIDES[KNOWN]}} \green{\sin(KNOWN_ANGLE)}`

Evaluate the inverse sin to find `UNKNOWN_ANGLE`:

`\qquad \blue{UNKNOWN_ANGLE} =\sin^{-1}\left( \dfrac{\blue{SIDES[UNKNOWN]}}{\green{SIDES[KNOWN]}} \green{\sin(KNOWN_ANGLE)}\right)`

`\qquad \blue{UNKNOWN_ANGLE} \approx \blue{POSSIBLE_SOLUTION^\circ}`

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

Since `m\angle UNKNOWN_ANGLE` is obtuse, it can't be `POSSIBLE_SOLUTION^\circ`. We can find `m\angle UNKNOWN_ANGLE` using the fact that `\sin(\theta) = \sin(180^\circ - \theta)`.

`\qquad \blue{UNKNOWN_ANGLE} \approx 180^\circ - \blue{POSSIBLE_SOLUTION^\circ} \approx \blue{SOLUTION^\circ}`

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