originX = 400; originY = 300; origin is Circle(originX, originY, 5, "white", "black"); originText is Text("Origin", originX-5, originY+20, "black"); ##comment vectorPX is mouseClickX; vectorPY is mouseClickY; pointP is Circle(vectorPX, vectorPY, 5, "red", "black"); vectorP is Line(originX, originY, vectorPX, vectorPY, "red"); vectorPtext is Text("Position vector P", vectorPX, vectorPY-10, "red"); ##scaled from pixels to more appropriate units unit = 50; PXunits is ((vectorPX)-originX); ##the x component of P in units PYunits is ((originY)-vectorPY); ##the y component of P in units vectorPMagnitude is round((sqrt((PXunits*PXunits) + (PYunits*PYunits))),2); ##the magnitude of P labelMagnitude is Text("Vector P Magnitude: ", 100, 400, "black"); ##text label labelMagnitudeValue is Text(vectorPMagnitude/unit, 310, 400, "black"); ##text label adjacentMagnitude is abs((vectorPY-originY)); ##used in trig to work out the ADJ for cos(T) angle is acos(adjacentMagnitude/vectorPMagnitude); ##value of the angle between the vertical and P labelAngle is Text("Accute angle between vertical and vector: ", 100, 420, "black"); ##text label labelAngleValue is Text(angle, 310, 420, "black"); ##text label baseAX = 1; baseAY = 0; baseBX = 0; baseBY = 1; baseAvector is Line(originX, originY, originX+baseAX*unit, originY-baseAY*unit, "blue"); baseAtext is Text("A", originX+baseAX*unit+10, originY-baseAY*unit, lightblue); baseBvector is Line(originX, originY, originX+baseBX*unit, originY-baseBY*unit, "blue"); baseBtext is Text("B", originX+baseBX*unit, originY-baseBY*unit-10, lightblue); ##coefficients for bases det is ((baseAX*baseBY) - (baseBX*baseAY)); coefA is (((1/det)*baseBY*PXunits)-((1/det)*(1)*baseBX*PYunits)); coefB is (((1/det)*(baseAX*PYunits))-((1/det)*baseAY*PXunits)); ##The coefficient text for the linear combinations coefAText is Div("coefatext", 150, 500, 1, 1, "

"+coefA/unit+"

"); coefBText is Div("coefbtext", 300, 500, 1, 1, "

"+coefB/unit+"

"); plusSymb is Div("plus", 280, 500, 1, 1, "

\+

"); ##Base vector labels baseText is Div("basetext",200 ,450 ,1 ,1, "

Base A

"); baseText2 is Div("basetext2", 340, baseText.y, 1, 1, "

Base B

"); ##A base vector resultText is Div("resultText", 100, 500, 1, 1, "

P = 

"); vectorBrackXpos3 = 190; vectorBrackYpos3 = 490-85; vectorElem1Xpos3 is vectorBrackXpos3+28; vectorElem1Ypos3 is vectorBrackYpos3+80; vectorElem2Xpos3 is vectorBrackXpos3+28; vectorElem2Ypos3 is vectorBrackYpos3+113; vectorBrack3 is Div("Brack3",vectorBrackXpos3,vectorBrackYpos3,1,1,"

( )

"); vecX3 is Div("vecx3",vectorElem1Xpos3,vectorElem1Ypos3,1,1,"

"+baseAX+"

"); vecY3 is Div("vecy3",vectorElem2Xpos3 ,vectorElem2Ypos3 ,1,1,"

"+baseAY+"

"); ##B base vector vectorBrackXpos4 = vectorBrackXpos3+150; vectorBrackYpos4 = vectorBrackYpos3; vectorElem1Xpos4 is vectorBrackXpos4+28; vectorElem1Ypos4 is vectorBrackYpos4+80; vectorElem2Xpos4 is vectorBrackXpos4+28; vectorElem2Ypos4 is vectorBrackYpos4+113; vectorBrack4 is Div("Brack4",vectorBrackXpos4,vectorBrackYpos4,1,1,"

( )

"); vecX4 is Div("vecx4",vectorElem1Xpos4,vectorElem1Ypos4,1,1,"

"+baseBX+"

"); vecY4 is Div("vecy4",vectorElem2Xpos4 ,vectorElem2Ypos4 ,1,1,"

"+baseBY+"

"); ty1 = ""; alert is Div("ohdear", 100, 50, 1, 1, "

"+ty1+"

"); detzero is (((baseAX*baseBY)-(baseBX*baseAY))==0) ? ty1="Base Vectors are not a Basis: B is dependant on A" : ty1=""; x is Button("X", "Select P", 600, 100, true); picture is [alert, plusSymb, coefBText, coefAText, vecX4, vecY4, vectorBrack4, resultSymbText, resultSymbText2, vectorBrack3, resultText, vecY3, vecX3, baseText2, vecX2, vecY2, vectorBrack2, vecX, vecY, vectorBrack1, baseText, linComText, baseAvector, baseAtext, baseBvector, baseBtext, origin, originText, pointP, vectorP, vectorPtext, labelMagnitude, labelMagnitudeValue, labelAngle, labelAngleValue];