// 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.
\nSide 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.
\nGive 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.
\nThis 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]})}$
\nNext 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]})}$
\nMultiply 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]}$
\nDivide 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})$
\nSwap 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
\n1 = 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/"}]}