// Numbas version: exam_results_page_options {"name": "sine rule - find an angle", "extensions": [], "custom_part_types": [], "resources": [["question-resources/AcuteTriangle_tSonQMW.svg", "/srv/numbas/media/question-resources/AcuteTriangle_tSonQMW.svg"], ["question-resources/ObtuseTriangle_Fe8ESh4.svg", "/srv/numbas/media/question-resources/ObtuseTriangle_Fe8ESh4.svg"]], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"name": "sine rule - find an angle", "tags": [], "metadata": {"description": "

Student is given a triangle with 2 or 3 side lengths given and asked to use the sine rule to find the value of an angle. Triangle can be acute or obtuse.

\n

Side and angle lengths are randomised. Units are randomised.

", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "

Use the sine rule to find the value of angle {dspchosenangle}. Angle {dspchosenangle} is obtuse.

\n

Give your answer rounded to the nearest minute.

\n

       

\n

not to scale

", "advice": "

To find the value of {dspchosenangle} we need to use the sine rule.

\n

This means that we need to find the value of the side opposite angle{dspchosenangle} and one other side and opposite angle.

\n

$\\frac{\\var{side_dsp_vals[findvar]}}{\\sin(\\var{dspchosenangle})}=\\frac{\\var{side_dsp_vals[helpingvar]}}{\\sin(\\var{angle_dsp_vals[helpingvar]})}$

\n

Next we multiply both sides by ${\\sin(\\var{dspchosenangle})}$:

\n

$\\var{side_dsp_vals[findvar]}=\\frac{\\sin(\\var{dspchosenangle})\\times \\var{side_dsp_vals[helpingvar]}}{\\sin(\\var{angle_dsp_vals[helpingvar]})}$

\n

Multiply both sides by $\\sin(\\var{angle_dsp_vals[helpingvar]})$:

\n

$\\var{side_dsp_vals[findvar]}\\times \\sin(\\var{angle_dsp_vals[helpingvar]}) =\\sin(\\var{dspchosenangle})\\times \\var{side_dsp_vals[helpingvar]}$

\n

Divide both sides by $\\var{side_dsp_vals[helpingvar]}$:

\n

$\\frac{\\var{side_dsp_vals[findvar]}\\times\\sin(\\var{angle_dsp_vals[helpingvar]})}{\\var{side_dsp_vals[helpingvar]}} =\\sin(\\var{dspchosenangle})$

\n

Swap the sides around and take the inverse sin of both sides: 

\n

$\\sin(\\var{dspchosenangle})=\\frac{\\var{side_dsp_vals[findvar]}\\times\\sin(\\var{angle_dsp_vals[helpingvar]})}{\\var{side_dsp_vals[helpingvar]}}$

\n

$ \\var{dspchosenangle} = sin^{-1}(\\frac{\\var{side_dsp_vals[findvar]}\\times\\sin(\\var{angle_dsp_vals[helpingvar]})}{\\var{side_dsp_vals[helpingvar]}}) = \\var{answer_deg}$° $\\var{answer_min}$'

", "rulesets": {}, "extensions": [], "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"obtuse": {"name": "obtuse", "group": "build the triangle", "definition": "if(angle_C_val>pi/2,1,0)", "description": "", "templateType": "anything", "can_override": false}, "findvar": {"name": "findvar", "group": "set up the problem", "definition": "random(0,1,2)", "description": "

0 = A, 1 = B, 2 = C

", "templateType": "anything", "can_override": false}, "side_b_val": {"name": "side_b_val", "group": "build the triangle", "definition": "decimal(random(5..200)/10)", "description": "", "templateType": "anything", "can_override": false}, "side_c_val": {"name": "side_c_val", "group": "build the triangle", "definition": "decimal(random(side_b_val*10..min(250,2*side_b_val*10))/10)", "description": "", "templateType": "anything", "can_override": false}, "angle_A_deg": {"name": "angle_A_deg", "group": "build the triangle", "definition": "random(10..50)", "description": "", "templateType": "anything", "can_override": false}, "angle_A_min": {"name": "angle_A_min", "group": "build the triangle", "definition": "random(0..59)", "description": "", "templateType": "anything", "can_override": false}, "angle_A_val": {"name": "angle_A_val", "group": "build the triangle", "definition": "radians(angle_A_deg + angle_A_min/60)", "description": "", "templateType": "anything", "can_override": false}, "side_a_val": {"name": "side_a_val", "group": "build the triangle", "definition": "precround(cosrule_side(side_b_val,side_c_val,angle_A_val),1)", "description": "", "templateType": "anything", "can_override": false}, "angle_B_val": {"name": "angle_B_val", "group": "build the triangle", "definition": "round_to_min(cosrule_angle(side_a_val,side_c_val,side_b_val))", "description": "", "templateType": "anything", "can_override": false}, "angle_C_val": {"name": "angle_C_val", "group": "build the triangle", "definition": "round_to_min(pi-angle_A_val-angle_B_val)", "description": "", "templateType": "anything", "can_override": false}, "aA": {"name": "aA", "group": "display vars", "definition": "if (findvar=0,'A',if(helpingvar=0,angle_dsp_vals[0],''))", "description": "", "templateType": "anything", "can_override": false}, "aB": {"name": "aB", "group": "display vars", "definition": "if (findvar=1,'B',if(helpingvar=1,angle_dsp_vals[1],''))", "description": "", "templateType": "anything", "can_override": false}, "aC": {"name": "aC", "group": "display vars", "definition": "if (findvar=2,'C',if(helpingvar=2,angle_dsp_vals[2],''))", "description": "", "templateType": "anything", "can_override": false}, "sa": {"name": "sa", "group": "display vars", "definition": "if(findvar=0,string(side_dsp_vals[0])+' ' +units,if(helpingvar=0 or dsp3rdside=1,string(side_dsp_vals[0])+' ' +units,''))", "description": "", "templateType": "anything", "can_override": false}, "sb": {"name": "sb", "group": "display vars", "definition": "if(findvar=1,string(side_dsp_vals[1])+' ' +units,if(helpingvar=1 or dsp3rdside=1,string(side_dsp_vals[1])+' ' +units,''))", "description": "", "templateType": "anything", "can_override": false}, "sc": {"name": "sc", "group": "display vars", "definition": "if(findvar=2,string(side_dsp_vals[2])+' ' +units,if(helpingvar=2 or dsp3rdside=1,string(side_dsp_vals[2])+' ' +units,''))", "description": "", "templateType": "anything", "can_override": false}, "helpingvar": {"name": "helpingvar", "group": "set up the problem", "definition": "if(findvar=0,random(1,2),if(findvar=1,random(0,2),random(0,1)))", "description": "

0=a, 1=b, 2=c

", "templateType": "anything", "can_override": false}, "side_vals": {"name": "side_vals", "group": "set up the problem", "definition": "[side_a_val,side_b_val,side_c_val]", "description": "", "templateType": "anything", "can_override": false}, "angle_vals": {"name": "angle_vals", "group": "set up the problem", "definition": "[angle_A_val,angle_B_val,angle_C_val]", "description": "", "templateType": "anything", "can_override": false}, "side_dsp_names": {"name": "side_dsp_names", "group": "set up the problem", "definition": "['a','b','c']", "description": "", "templateType": "anything", "can_override": false}, "angle_dsp_names": {"name": "angle_dsp_names", "group": "set up the problem", "definition": "['A','B','C']", "description": "", "templateType": "anything", "can_override": false}, "side_dsp_vals": {"name": "side_dsp_vals", "group": "set up the problem", "definition": "[precround(side_a_val,1),precround(side_b_val,1),precround(side_c_val,1)]", "description": "", "templateType": "anything", "can_override": false}, "angle_dsp_vals": {"name": "angle_dsp_vals", "group": "set up the problem", "definition": "[deg_to_degmin(degrees(angle_A_val)),deg_to_degmin(degrees(angle_B_val)),deg_to_degmin(degrees(angle_C_val))]", "description": "", "templateType": "anything", "can_override": false}, "unitchoices": {"name": "unitchoices", "group": "display vars", "definition": "['mm','cm','m','km']", "description": "", "templateType": "anything", "can_override": false}, "units": {"name": "units", "group": "display vars", "definition": "random(unitchoices)", "description": "", "templateType": "anything", "can_override": false}, "othervar": {"name": "othervar", "group": "set up the problem", "definition": "3-findvar-helpingvar", "description": "", "templateType": "anything", "can_override": false}, "answer_acute": {"name": "answer_acute", "group": "set up the problem", "definition": "arcsin(side_vals[findvar]*sin(angle_vals[helpingvar])/side_vals[helpingvar])", "description": "", "templateType": "anything", "can_override": false}, "dspchosenangle": {"name": "dspchosenangle", "group": "set up the problem", "definition": "angle_dsp_names[findvar]", "description": "", "templateType": "anything", "can_override": false}, "dsp3rdside": {"name": "dsp3rdside", "group": "display vars", "definition": "random(0,1)", "description": "

0 = no

\n

1 = yes

", "templateType": "anything", "can_override": false}, "answer_deg": {"name": "answer_deg", "group": "set up the problem", "definition": "decimal(split(deg_to_degmin(degrees(answer)),'\u00b0')[0])", "description": "", "templateType": "anything", "can_override": false}, "answer_min": {"name": "answer_min", "group": "set up the problem", "definition": "decimal(split(split(deg_to_degmin(degrees(answer)),'\u00b0')[1],\"'\")[0])", "description": "", "templateType": "anything", "can_override": false}, "test": {"name": "test", "group": "set up the problem", "definition": "angle_vals[findvar]>radians(90)", "description": "", "templateType": "anything", "can_override": false}, "answer": {"name": "answer", "group": "set up the problem", "definition": "if(angle_vals[findvar]>radians(90),radians(180)-answer_acute,answer_acute)", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": [], "variable_groups": [{"name": "build the triangle", "variables": ["side_a_val", "side_b_val", "side_c_val", "angle_A_deg", "angle_A_min", "angle_A_val", "angle_B_val", "angle_C_val", "obtuse", "test"]}, {"name": "display vars", "variables": ["aA", "aB", "aC", "sa", "sb", "sc", "unitchoices", "units", "dsp3rdside"]}, {"name": "set up the problem", "variables": ["findvar", "helpingvar", "othervar", "side_vals", "side_dsp_vals", "side_dsp_names", "angle_vals", "angle_dsp_vals", "angle_dsp_names", "answer_acute", "dspchosenangle", "answer_deg", "answer_min", "answer", "test"]}], "functions": {"deg_to_degmin": {"parameters": [["deg", "number"]], "type": "string", "language": "javascript", "definition": "min=Math.round((deg-Math.trunc(deg))*60);\ndegstr=String(Math.trunc(deg))+\"\u00b0\"+String(min)+\"'\";\nreturn degstr;"}, "dms": {"parameters": [["deg", "number"]], "type": "string", "language": "javascript", "definition": "degrees = Math.trunc(deg);\nmin = (deg - Math.trunc(deg))*60;\nminutes = Math.round(min);\nseconds = Math.round((min - Math.trunc(min))*6000)/100;\ndegstr=String(degrees)+\"\u00b0\"+String(minutes)+\"'\"+String(seconds)+\"''\";\nreturn degstr;"}, "cosrule_side": {"parameters": [["a", "number"], ["b", "number"], ["C", "number"]], "type": "number", "language": "javascript", "definition": "tmp=Math.pow(a,2) + Math.pow(b,2) - 2*a*b*Math.cos(C);\ntmp2 = Math.sqrt(tmp);\nreturn tmp2;"}, "sinerule_angle": {"parameters": [["a", "number"], ["b", "number"], ["angB", "number"]], "type": "number", "language": "javascript", "definition": "return Math.asin(a*Math.sin(angB)/b)"}, "cosrule_angle": {"parameters": [["a", "number"], ["b", "number"], ["c", "number"]], "type": "number", "language": "javascript", "definition": "num = Math.pow(a,2) + Math.pow(b,2) - Math.pow(c,2);\nden = 2 * a * b\nreturn Math.acos(num/den);"}, "round_to_min": {"parameters": [["angle", "number"]], "type": "number", "language": "javascript", "definition": "deg = angle * 180 / Math.PI;\ndegrees = Math.trunc(deg);\nmin = (deg - Math.trunc(deg))*60;\nminutes = Math.round(min);\nrounded = degrees + minutes/60;\nreturn rounded * Math.PI / 180;"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

{dspchosenangle} = [[0]] °[[1]]'

", "gaps": [{"type": "numberentry", "useCustomName": true, "customName": "degrees", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minValue": "answer_deg", "maxValue": "answer_deg", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}, {"type": "numberentry", "useCustomName": true, "customName": "minutes", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minValue": "answer_min", "maxValue": "answer_min", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "contributors": [{"name": "Merryn Horrocks", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/4052/"}]}]}], "contributors": [{"name": "Merryn Horrocks", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/4052/"}]}