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.