// Numbas version: exam_results_page_options {"name": "sine rule - find a side", "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 a side", "tags": [], "metadata": {"description": "

Student is given a triangle with the value of 1 side and 2 or 3 angles and asked to find the value of another side. 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": "

Find the value of side {dspchosenside}. Round your answer to 1 decimal place.

\n

       

\n

not to scale

\n

", "advice": "

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

\n

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

\n

Since the angle opposite {dspchosenside} is not given, we need to work it out, using the fact that the angles in the triangle sum to 180º.

\n

angle = 180º - {angle_dsp_vals[helpingvar]} - {angle_dsp_vals[othervar]} = {angle_dsp_vals[findvar]}

\n

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

\n

Next we multiply both sides by ${\\sin(\\var{angle_dsp_vals[findvar]})}$

\n

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

", "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": "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": "pi-angle_A_val-angle_B_val", "description": "", "templateType": "anything", "can_override": false}, "aA": {"name": "aA", "group": "display vars", "definition": "if ((findvar=0 and dsp3rdangle <> 0) or (helpingvar=0) or (findvar<>0 and helpingvar <>0 and dsp3rdangle<>1), angle_dsp_vals[0],'')", "description": "", "templateType": "anything", "can_override": false}, "aB": {"name": "aB", "group": "display vars", "definition": "if ((findvar=1 and dsp3rdangle <> 0) or (helpingvar=1) or (findvar<>1 and helpingvar <>1 and dsp3rdangle<>1), angle_dsp_vals[1],'')", "description": "", "templateType": "anything", "can_override": false}, "aC": {"name": "aC", "group": "display vars", "definition": "if ((findvar=2 and dsp3rdangle <> 0) or (helpingvar=2) or (findvar<>2 and helpingvar <>2 and dsp3rdangle<>1), angle_dsp_vals[2],'')", "description": "", "templateType": "anything", "can_override": false}, "sa": {"name": "sa", "group": "display vars", "definition": "if(findvar=0,'a',if(helpingvar=0,string(side_dsp_vals[0])+' ' +units,''))", "description": "", "templateType": "anything", "can_override": false}, "sb": {"name": "sb", "group": "display vars", "definition": "if(findvar=1,'b',if(helpingvar=1,string(side_dsp_vals[1])+' ' +units,''))", "description": "", "templateType": "anything", "can_override": false}, "sc": {"name": "sc", "group": "display vars", "definition": "if(findvar=2,'c',if(helpingvar=2,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}, "dsp3rdangle": {"name": "dsp3rdangle", "group": "display vars", "definition": "random(0,1,2)", "description": "

0 = display 2nd angle

\n

1 = display 3rd angle

\n

2 = display both

", "templateType": "anything", "can_override": false}, "dspchosenside": {"name": "dspchosenside", "group": "set up the problem", "definition": "side_dsp_names[findvar]", "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": {"name": "answer", "group": "set up the problem", "definition": "precround(sin(angle_vals[findvar])*side_vals[helpingvar]/sin(angle_vals[helpingvar]),1)", "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"]}, {"name": "display vars", "variables": ["aA", "aB", "aC", "sa", "sb", "sc", "unitchoices", "units", "dsp3rdangle"]}, {"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", "dspchosenside", "answer"]}], "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);"}}, "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": "

{dspchosenside} = [[0]] {units}

", "gaps": [{"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minValue": "answer", "maxValue": "answer", "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/"}]}