What is the value of the angle `x`?

rand(3) "" ["CAB", "ABC", "BCA"] "" "" randomTriangleAngles.triangle() "" [RAND_ANG] clearArray(["x", "x", "x"], [RAND_ANG]) [0, 2] [0, 2] function(){ var trA = new Triangle([0, 0], ANGLES, 8, {}); trA.labels = { "points": ["A", "B", "C"], "sides": clearArray(trA.niceSideLengths, SIDES_A), "angles": clearArray(trA.niceAngles, ANGLES_A) }; return trA; }() function(){ var trB = new Triangle( [ TR_A.centroid[ 0 ], TR_A.centroid[ 1 ] ], ANGLES, 8, {} ); trB.rotate( 180 ); trB.labels = { "points" : [ "D", "", "" ], "sides" : clearArray( trB.niceSideLengths, SIDES_B ),"angles" : ANGLES_B }; return trB; }() ANGLES[ RAND_ANG ]

var minX = min(0, min(TR_A.points[1][0], TR_A.points[2][0])); var maxX = TR_A.points[1][0] + max(0, TR_A.points[2][0]); var scale = min(60, 400 / (maxX - minX + 2)); init({ range: [[minX - 1, maxX + 1], [-1, TR_A.points[2][1] + 1]], scale: scale }) TR_A.draw(); TR_A.drawLabels(); TR_B.draw(); TR_B.drawLabels();

`x =` ANSWER `^\circ`

randRangeUnique(0, 2, 2) randFromArray(ANG_FIRST) ANG_FIRST clearArray(["x", "x", "x"], [ANG_LEFT]) TR_B.angles[ANG_LEFT]

`\triangle ABC` and `\triangle BCD` have three sides equal.
They share side `BC`.
`AB = CD`
`AC = BD`

Therefore `\triangle ABC` and `\triangle BCD` are congruent.

Congruent triangles also have congruent (equal) angles.

If we superimpose these two triangles, by rotating `\triangle ABC`, we see that angle `x` corresponds to `\angle ANGLE_LABELS[ANG_LEFT]`.

Angle `x` is therefore equal to `ANSWER^\circ`.

randRangeUnique( 0, 2, 2 ) randRangeExclude( 0, 2, ANG_FIRST ) ANG_FIRST clearArray( [ "x", "x", "x" ], [ ANG_LEFT ] ) TR_B.angles[ANG_LEFT]

`x =` ANSWER `^\circ`

`\triangle ABC` and `\triangle BCD` have three sides equal.
They share side `BC`.
`AB = CD`
`AC = BD`

Therefore `\triangle ABC` and `\triangle BCD` are congruent.

Congruent triangles also have congruent (equal) angles.

If we superimpose these two triangles, by rotating `\triangle ABC`, we see that angle `x` corresponds to `\angle ANGLE_LABELS[ANG_LEFT]`.

`ANGLE_LABELS[ANG_LEFT] = 180^\circ - TR_A.angles[ANG_FIRST[0]]^\circ - TR_A.angles[ANG_FIRST[1]]^\circ`

`ANGLE_LABELS[ ANG_LEFT ] = x = ANSWER^\circ`

TR_A.labels.angles = TR_A.niceAngles; TR_A.labels = {"angles" : clearArray(TR_A.niceAngles, [ANG_LEFT])}; TR_A.drawLabels();
RAND_ANG === 2 ? 2 : 1 - RAND_ANG [0, 1] randRangeUnique(0, 2, 2) randFromArray([0, 2]) ANG_LEFT === 2 ? 2 : 1 - ANG_LEFT ($.inArray( SHOW_ANGLE, ANG_FIRST) !== -1) ANG_FIRST clearArray(["x", "x", "x"], [ANG_LEFT]) ANGLES[0] / 2 function(){ var trA = new Triangle([0, 0], ANGLES ,6, {}); trA.rotationCenter = trA.points[0]; trA.rotate(ANG); trA.labels = { "points": ["", "B", "C"], "sides": clearArray(trA.niceSideLengths, SIDES_A), "angles": clearArray(trA.niceAngles, ANGLES_A) }; return trA; }() function(){ var rad = ANG * PI / 180; var trB = new Triangle([-cos(rad) * TR_A.sideLengths[0], -sin(rad) * TR_A.sideLengths[0]], [ANGLES[1], ANGLES[0], ANGLES[2]], 6, {}); trB.rotationCenter = trB.points[0]; trB.rotate(-ANG); trB.labels = { "points" : [ "D", "", "E" ], "sides" : clearArray( trB.niceSideLengths, SIDES_B ), "angles" : ANGLES_B }; return trB; }() TR_B.angles[ANG_LEFT]
var maxX = max(TR_A.points[1][0], TR_A.points[2][0]) + 1; var minY = TR_A.points[1][1] - 1; var maxY = TR_A.points[2][1] + 1; var scale = min(500 / (maxY - minY), 220 / maxX); init({ range: [[-maxX, maxX], [minY, maxY]], scale: scale }) TR_A.draw(); TR_A.drawLabels(); TR_B.draw(); TR_B.drawLabels(); label(TR_B.points[1], "A", "above");

`x =` ANSWER `^\circ`

`\angle DAE` forms a vertical angle with `\angle BAC`, so `\angle DAE = \angle BAC`.

`\triangle ABC` and `\triangle ADE` also have two sides equal.

Therefore `\triangle ABC` and `\triangle ADE` are congruent.

Congruent triangles also have congruent (equal) angles.

If we superimpose these two triangles, by flipping `\triangle EDA`, we see that angle `x` corresponds to `\angle ANGLE_LABELS[SHOW_ANGLE]`.

`ANGLE_LABELS[SHOW_ANGLE] = 180 - TR_A.angles[ANG_FIRST[0]] - TR_A.angles[ANG_FIRST[1]]`

TR_A.labels.angles = TR_A.niceAngles; TR_B.labels.angles = mergeArray(TR_B.labels.angles, [TR_A.niceAngles[1], TR_A.niceAngles[0], TR_A.niceAngles[2]]); TR_A.drawLabels(); TR_B.drawLabels();

`ANGLE_LABELS[SHOW_ANGLE] = x = TR_B.angles[ANG_LEFT]`

Angle `x` is therefore equal to `ANSWER^\circ`.