{ Taala-JSP CODE FOR JSX CONVERSION 19.11.2019 MEP } { Muista täpättää LaTeX points: } { Lineaarialgebra: Orthogonal projection to a general plane } { JSX board name: OrtogProj_32 } { JSX element id: ortogproj_32 } #CODEBASE = "http://cs.uef.fi/matematiikka/java/javasketchpad" #CODEBASE = "../jsp" #ARCHIVE = "jsp4.jar" #CODE = "GSP.class" #WIDTH = 400 #HEIGHT = 540 #ALIGN = Center *Frame = 1 *TextFont = "Courier" *TextBold = 0 *TextSize = 14 *LabelFont = "Courier" *LabelBold = 0 *LabelSize = 14 *MeasureFont = "Courier" *MeasureSize = 12 *MeasureBold = 0 *MeasureInDegrees = 1 *DirectedAngles = 0 *MeasureInDegrees = 0 *DirectedAngles = 1 *Backblue = 255 *BackGreen = 255 *Backred = 255 $ax_x1 FixedText( 60, 400,'x1')[ plain, font('Helvetica'), bold, red, justifyCenter]; {,text('\\( xSUB{1} \\)')} $ax_x2 FixedText(430, 330,'x2')[ plain, font('Helvetica'), bold, blue, justifyCenter]; {,text('\\( xSUB{2} \\)')} $ax_x3 FixedText(265, 20,'x3')[ plain, font('Helvetica'), bold, color(0,150,0), justifyCenter]; {,text('\\( xSUB{3} \\)')} { The real lines } $LUpp FixedPoint(0,475)[hidden]; $LLow FixedPoint(0,540)[hidden]; $RLow FixedPoint(400,540)[hidden]; $RUpp FixedPoint(400,475)[hidden]; $ULine Line($LUpp,$RUpp)[black, hidden]; $RectR Polygon($LUpp,$LLow,$RLow,$RUpp,$LUpp)[color(240,200,100)]; $ROu FixedPoint(200,495)[black,label('0')]; {,LabelAlign(-3,7)} $Refu Translation($ROu,25,0)[hidden]; $Rayu Ray($Refu,$ROu)[black, hidden]; $Rykku Point on object($Rayu,1)[white, label('1'), hidden]; $R1u FixedPoint(225,495)[white,label('1')]; {,LabelAlign(-3,7)} $RLu Line($Rykku,$ROu)[black, hidden]; $ROv FixedPoint(200,520)[black,label('0')]; {,LabelAlign(-3,-12)} $Refv Translation($ROv,25,0)[hidden]; $Rayv Ray($Refv,$ROv)[black, hidden]; $Rykkv Point on object($Rayv,1)[white, label('1'), hidden]; $R1v FixedPoint(225,520)[white,label('1')]; {,LabelAlign(-3,-12)} $RLv Line($Rykkv,$ROv)[black, hidden]; { Direction vector S (viewpoint) } $LUppS FixedPoint(0,520)[hidden]; $LLowS FixedPoint(0,550)[hidden]; $RLowS FixedPoint(800,550)[hidden]; $RUppS FixedPoint(800,520)[hidden]; $ULineS Line($LUppS,$RUppS)[black, hidden]; $RectRS Polygon($LUppS,$LLowS,$RLowS,$RUppS,$LUppS)[color(245,203,200),layer(50),hidden]; $ROS FixedPoint(400,530)[black,label('0'),hidden]; $RefS Translation($ROS,25,0)[hidden]; $RayS Ray($RefS,$ROS)[black, hidden]; $RykkS Point on object($RayS,1)[white, label('1'),hidden]; $RLS Line($RykkS,$ROS)[black,hidden]; $RptS1 Point on object($RLS,9)[label('S1'), red, layer(10),hidden]; $RptS2 Point on object($RLS,4)[label('S2'), blue, layer(10),hidden]; $RptS3 Point on object($RLS,2)[label('S3'), color(0,150,0), layer(10),hidden]; $S1val Ratio/Points($ROS,$RykkS,$RptS1, 5,543,'S1 = ')[red,hidden]; $S2val Ratio/Points($ROS,$RykkS,$RptS2,105,543,'S2 = ')[blue,hidden]; $S3val Ratio/Points($ROS,$RykkS,$RptS3,205,543,'S3 = ')[color(0,150,0),hidden]; $xykkalfa1 Calculate(0,360,'xykkalfa1 = ','0B- A2^ B2^ + @sqrt / ')($S1val,$S2val,$S3val)[red,hidden]; $xykkalfa2 Calculate(0,380,'xykkalfa2 = ','0AC*- A2^ B2^ + @sqrt / A2^ B2^ + C2^ + @sqrt / ')($S1val,$S2val,$S3val)[red,hidden]; $yykkalfa1 Calculate(0,400,'yykkalfa1 = ','A A2^ B2^ + @sqrt / ')($S1val,$S2val,$S3val)[blue,hidden]; $yykkalfa2 Calculate(0,420,'yykkalfa2 = ','0BC*- A2^ B2^ + @sqrt / A2^ B2^ + C2^ + @sqrt / ')($S1val,$S2val,$S3val)[blue,hidden]; $zykkalfa1 Calculate(0,440,'zykkalfa1 = ','0A*')($S1val,$S2val,$S3val)[color(0,150,0),hidden]; $zykkalfa2 Calculate(0,460,'zykkalfa2 = ','A2^ B2^ + A2^ B2^ + @sqrt / A2^ B2^ + C2^ + @sqrt / ')($S1val,$S2val,$S3val)[color(0,150,0),hidden]; { The virtual space with movable unit points } $Origo FixedPoint(200,320)[black, label('0')]; $unitp UnitPoint($Origo,50)[white, hidden]; $coord Origin&Unit($Origo,$unitp)[black,hidden]; $xykk PlotXY($xykkalfa2,$coord,$xykkalfa1)[white, label('1'),layer(10)]; $yykk PlotXY($yykkalfa2,$coord,$yykkalfa1)[white, label('1'),layer(10)]; $zykk PlotXY($zykkalfa2,$coord,$zykkalfa1)[white, label('1'),layer(10)]; $xRay Ray($xykk,$Origo)[ hidden]; $xRL Line($xykk,$Origo)[ red]; {,arrowL} $yRay Ray($yykk,$Origo)[ hidden]; $yRL Line($yykk,$Origo)[ blue]; {,arrowL} $zRay Ray($zykk,$Origo)[ hidden]; $zRL Line($zykk,$Origo)[color(0,150,0)]; {,arrowL} { restricting the real lines } $RLuLeftEndUp FixedPoint(0,495)[hidden]; $RLvLeftEndLow FixedPoint(0,520)[hidden]; $RLuRightEndUp FixedPoint(400,495)[hidden]; $RLvRightEndLow FixedPoint(400,520)[hidden]; $RLuvis Segment($RLuLeftEndUp,$RLuRightEndUp)[black]; {,arrowL} $RLvvis Segment($RLvLeftEndLow,$RLvRightEndLow)[black]; {,arrowL} $xM Point on object($xRL,-4)[red,hidden]; $xP Point on object($xRL, 5)[red,hidden]; $xRLvis Segment($xM,$xP)[red]; $yM Point on object($yRL,-3.5)[blue,hidden]; $yP Point on object($yRL, 3.5)[blue,hidden]; $yRLvis Segment($yM,$yP)[blue]; $zM Point on object($zRL,-3)[color(0,150,0),hidden]; $zP Point on object($zRL, 5)[color(0,150,0),hidden]; $zRLvis Segment($zM,$zP)[color(0,150,0)]; $FTV FixedText(70, 22,'V')[black,bold]; {,text('\\( V \\)')} $V_leftPar FixedText(50,40,'(')[black]; {,text('\\( \\Biggl( \\)' ),LabelAlign(0,0)} $V_rightPar FixedText(260,40,'(')[black]; {,text('\\( \\Biggr) = (\\mathbf{v}\\ \\ \\mathbf{w}) \\)' ),LabelAlign(0,0)} { Points and values U and V } $Rptu1 Point on object($RLu,3)[label('v1'), red, layer(10)]; {,label('vSUB{1}'),LabelAlign(-7,5),highlight} $Rptu2 Point on object($RLu,1)[label('v2'), blue, layer(10)]; {,label('vSUB{2}'),LabelAlign(-7,8),highlight} $Rptu3 Point on object($RLu,0)[label('v3'), color(0,150,0), layer(10)]; {,label('vSUB{3}'),LabelAlign(-7,10),highlight} $Rptv1 Point on object($RLv,-1)[label('w1'), red, layer(10)]; {,label('wSUB{1}'),LabelAlign(-7,5),highlight} $Rptv2 Point on object($RLv,2)[label('w2'), blue, layer(10)]; {,label('wSUB{2}'),LabelAlign(-7,8),highlight} $Rptv3 Point on object($RLv,0)[label('w3'), color(0,150,0), layer(10)]; {,label('wSUB{3}'),LabelAlign(-7,10),highlight} $u1val Ratio/Points($ROu,$Rykku,$Rptu1,15,40,'')[red]; $u2val Ratio/Points($ROu,$Rykku,$Rptu2,15,55,'')[blue]; $u3val Ratio/Points($ROu,$Rykku,$Rptu3,15,70,'')[color(0,150,0)]; $v1val Ratio/Points($ROv,$Rykkv,$Rptv1,65,40,'')[red]; $v2val Ratio/Points($ROv,$Rykkv,$Rptv2,65,55,'')[blue]; $v3val Ratio/Points($ROv,$Rykkv,$Rptv3,65,70,'')[color(0,150,0)]; $SBRLuv ShowButton( 0,450,'Change v,w')($ROu,$R1u,$RLuvis,$Rptu1,$Rptu2,$Rptu3,$ROv,$R1v,$RLvvis,$Rptv1,$Rptv2,$Rptv3,$RectR)[black,bold]; {,text('Change \\( \\mathbf{v}, \\mathbf{w} \\)')} $HBRLuv HideButton(100,450,'Fix')( $ROu,$R1u,$RLuvis,$Rptu1,$Rptu2,$Rptu3,$ROv,$R1v,$RLvvis,$Rptv1,$Rptv2,$Rptv3,$RectR)[black]; { the space vectors } $u1 Dilation/3PtRatio($xykk,$Origo,$ROu,$Rykku,$Rptu1)[red, label('V11'),hidden]; {,label('vSUB{1}'),LabelAlign(-7,6)} $u2 Dilation/3PtRatio($yykk,$Origo,$ROu,$Rykku,$Rptu2)[blue, label('V21'),hidden]; {,label('vSUB{2}'),LabelAlign(-7,6)} $u3 Dilation/3PtRatio($zykk,$Origo,$ROu,$Rykku,$Rptu3)[color(0,150,0), label('V31'),hidden]; {,label('vSUB{3}'),LabelAlign(-7,6)} $u1u2 VectorTranslation($u1,$Origo,$u2)[magenta, label('(V11,V21)'),hidden]; {,label('(vSUB{1},,vSUB{2} )'),LabelAlign(-7,6)} $Su1u2x Segment($u1,$u1u2)[blue,hidden]; $Su1u2y Segment($u2,$u1u2)[red,hidden]; $SOu1u2 Segment($Origo,$u1u2)[magenta,hidden]; $U VectorTranslation($u1u2,$Origo,$u3)[color(255,168,17), label('V1')]; {,label('\\mathbf{v}'),LabelAlign(-7,5)} $SUu1u2 Segment($u1u2,$U)[color(0,150,0),hidden]; $SOU Segment($Origo,$U)[color(255,168,17),thick]; {,arrowL} $SUu3 Segment($u3,$U)[magenta,hidden]; $v1 Dilation/3PtRatio($xykk,$Origo,$ROv,$Rykkv,$Rptv1)[red, label('V12'),hidden]; {,label('wSUB{1}'),LabelAlign(-7,6)} $v2 Dilation/3PtRatio($yykk,$Origo,$ROv,$Rykkv,$Rptv2)[blue, label('V22'),hidden]; {,label('wSUB{2}'),LabelAlign(-7,6)} $v3 Dilation/3PtRatio($zykk,$Origo,$ROv,$Rykkv,$Rptv3)[color(0,150,0), label('V32'),hidden]; {,label('wSUB{3}'),LabelAlign(-7,6)} $v1v2 VectorTranslation($v1,$Origo,$v2)[magenta, label('(V12,V22)'),hidden]; {,label('(wSUB{1},,wSUB{2} )'),LabelAlign(-7,6)} $Sv1v2x Segment($v1,$v1v2)[blue,hidden]; $Sv1v2y Segment($v2,$v1v2)[red,hidden]; $SOv1v2 Segment($Origo,$v1v2)[magenta,hidden]; $V VectorTranslation($v1v2,$Origo,$v3)[color(255,168,17), label('V2')]; {,label('\\mathbf{w}'),LabelAlign(-7,5)} $SVv1v2 Segment($v1v2,$V)[color(0,150,0),hidden]; $SOV Segment($Origo,$V)[color(255,168,17),thick]; {,arrowL} $SVv3 Segment($v3,$V)[magenta,hidden]; $UplusV VectorTranslation($U,$Origo,$V)[hidden]; $PlPol Polygon($Origo,$U,$UplusV,$V)[yellow,layer(20)]; $UminusV VectorTranslation($U,$V,$Origo)[hidden]; $UminusV VectorTranslation($U,$V,$Origo)[hidden]; $VminusU VectorTranslation($V,$U,$Origo)[hidden]; $minusUplusV VectorTranslation($VminusU,$UplusV,$UminusV)[hidden]; $PUV Polygon($UplusV,$VminusU,$minusUplusV,$UminusV)[color(236,245,175)]; $a11 Calculate(550, 150,'','AA* BB* + CC* +')($u1val,$u2val,$u3val)[black,hidden]; $a12 Calculate(610, 150,'','AD* BE* + CF* +')($u1val,$u2val,$u3val,$v1val,$v2val,$v3val)[black,hidden]; $a21 Calculate(550, 170,'','A0+')($a12)[black,hidden]; $a22 Calculate(610, 170,'','AA* BB* + CC* +')($v1val,$v2val,$v3val)[black,hidden]; $det Calculate( 0, 200,'det = ','AD* BC* -')($a11,$a12,$a21,$a22)[black,hidden]; $Ia11 Calculate(185, 100,'','AB/')($a22,$det)[black,hidden]; $Ia12 Calculate(250, 100,'','0A- B/')($a21,$det)[black,hidden]; $Ia21 Calculate(185, 120,'','0A+')($Ia12)[black,hidden]; $Ia22 Calculate(250, 120,'','AB/')($a11,$det)[black,hidden]; $c11 Calculate(350, 40,'','AC* BD* +')($Ia11,$Ia12,$u1val,$v1val)[black,hidden]; $c12 Calculate(350, 40,'','AC* BD* +')($Ia11,$Ia12,$u2val,$v2val)[black,hidden]; $c13 Calculate(350, 40,'','AC* BD* +')($Ia11,$Ia12,$u3val,$v3val)[black,hidden]; $c21 Calculate(350, 40,'','AC* BD* +')($Ia21,$Ia22,$u1val,$v1val)[black,hidden]; $c22 Calculate(350, 40,'','AC* BD* +')($Ia21,$Ia22,$u2val,$v2val)[black,hidden]; $c23 Calculate(350, 40,'','AC* BD* +')($Ia21,$Ia22,$u3val,$v3val)[black,hidden]; $p11 Calculate(500, 40,'','AC* BD* +')($u1val,$v1val,$c11,$c21)[black,hidden]; $p12 Calculate(500, 40,'','AC* BD* +')($u1val,$v1val,$c12,$c22)[black,hidden]; $p13 Calculate(500, 40,'','AC* BD* +')($u1val,$v1val,$c13,$c23)[black,hidden]; $p21 Calculate(500, 40,'','AC* BD* +')($u2val,$v2val,$c11,$c21)[black,hidden]; $p22 Calculate(500, 40,'','AC* BD* +')($u2val,$v2val,$c12,$c22)[black,hidden]; $p23 Calculate(500, 40,'','AC* BD* +')($u2val,$v2val,$c13,$c23)[black,hidden]; $p31 Calculate(500, 40,'','AC* BD* +')($u3val,$v3val,$c11,$c21)[black,hidden]; $p32 Calculate(500, 40,'','AC* BD* +')($u3val,$v3val,$c12,$c22)[black,hidden]; $p33 Calculate(500, 40,'','AC* BD* +')($u3val,$v3val,$c13,$c23)[black,hidden]; $Rptx1 Point on object($xRL,4)[red,label('u1')]; {,highlight,label('uSUB{1}')} $Rptx2 Point on object($yRL,3.5)[blue,label('u2')]; {,highlight,label('uSUB{2}')} $Rptx3 Point on object($zRL,3)[color(0,150,0),label('u3')]; {,highlight,label('uSUB{3}')} $x1x2 VectorTranslation($Rptx1,$Origo,$Rptx2)[magenta, label('(u1,u2)')]; {,label('(uSUB{1},, uSUB{2} )')} $Sx1x2x Segment($Rptx1,$x1x2)[blue]; $Sx1x2y Segment($Rptx2,$x1x2)[red]; $SOx1x2 Segment($Origo,$x1x2)[magenta]; $FTx FixedText(400, 22,'u')[black,bold]; {,text('\\( \\mathbf{u} \\)')} $X_leftPar FixedText(365,40,'(')[black]; {,text('\\( \\Biggl( \\)' ),LabelAlign(0,0)} $X_rightPar FixedText(415,40,'(')[black]; {,text('\\( \\Biggr) \\)' ),LabelAlign(0,0)} $x1 Ratio/Points($Origo,$xykk,$Rptx1,330,40,'')[black]; $x2 Ratio/Points($Origo,$yykk,$Rptx2,330,55,'')[black]; $x3 Ratio/Points($Origo,$zykk,$Rptx3,330,70,'')[black]; $FTxpr FixedText(365, 420,'X''')[black,bold]; {,text('\\( \\mathbf{u}SUB{V} \\)'),labelAlign(60,10)} $Xpr_leftPar FixedText(365,440,'(')[black]; {,text('\\( \\Biggl( \\)' ),LabelAlign(0,0)} $Xpr_rightPar FixedText(415,440,'(')[black]; {,text('\\( \\Biggr) \\)' ),LabelAlign(0,0)} $x1prval Calculate(333, 440,'','AD* BE* + CF* +')($p11,$p12,$p13,$x1,$x2,$x3)[black]; $x2prval Calculate(333, 455,'','AD* BE* + CF* +')($p21,$p22,$p23,$x1,$x2,$x3)[black]; $x3prval Calculate(333, 470,'','AD* BE* + CF* +')($p31,$p32,$p33,$x1,$x2,$x3)[black]; $x1pr Dilation/MarkedRatio($xykk,$Origo,$x1prval)[red,label('x1'''),hidden]; $x2pr Dilation/MarkedRatio($yykk,$Origo,$x2prval)[blue,label('x2'''),hidden]; $x3pr Dilation/MarkedRatio($zykk,$Origo,$x3prval)[red,label('x3'''),hidden]; $X VectorTranslation($x1x2,$Origo,$Rptx3)[black, label('X')]; {,label(' \\mathbf{u}')} $SXx1x2 Segment($x1x2,$X)[color(0,150,0)]; $SOX Segment($Origo,$X)[black,thick]; {,arrowL} $SXx3 Segment($Rptx3,$X)[magenta]; $x1prx2pr VectorTranslation($x1pr,$Origo,$x2pr)[magenta, label('(x1'',x2'')'),hidden]; $Sx1prx2prx Segment($x1pr,$x1prx2pr)[blue,hidden]; $Sx1prx2pry Segment($x2pr,$x1prx2pr)[red,hidden]; $SOx1prx2pr Segment($Origo,$x1prx2pr)[magenta,hidden]; $Xpr VectorTranslation($x1prx2pr,$Origo,$x3pr)[color(0,230,40), label('X''')]; {,label(' \\mathbf{u}SUB{V}'),labelAlign(-8,-15)} $SXx1prx2pr Segment($x1prx2pr,$Xpr)[color(0,150,0),hidden]; $SOXpr Segment($Origo,$Xpr)[color(0,230,40),thick,layer(30)]; {,arrowL} $SXprx3pr Segment($x3pr,$Xpr)[magenta,hidden]; $SXXpr Segment($X,$Xpr)[blue,thick]; $PolXXpr Polygon($Origo,$X,$Xpr)[color(9,247,255),layer(40)]; $Ratio Calculate(665, 100,'','A 0 * 0.15 +')($c11)[black,hidden]; $PtXprX Dilation/MarkedRatio($X,$Xpr,$Ratio)[blue,hidden]; $PtXprO Dilation/MarkedRatio($Origo,$Xpr,$Ratio)[blue,hidden]; $PtTr VectorTranslation($PtXprX,$Xpr,$PtXprO)[blue,hidden]; $OrthPolygon Polygon($Xpr,$PtXprX,$PtTr,$PtXprO)[blue,layer(50)]; $SBV1Segm ShowButton(0, 150,'V1 segments')($u1,$u2,$u3,$u1u2,$Su1u2x,$Su1u2y,$SOu1u2,$SUu1u2,$SUu3)[black,bold]; {,text('\\( \\mathbf{v}\\) segments')} $HBV1Segm HideButton(90,150,'Hide')($u1,$u2,$u3,$u1u2,$Su1u2x,$Su1u2y,$SOu1u2,$SUu1u2,$SUu3)[black]; $SBV2Segm ShowButton(0, 170,'V2 segments')($v1,$v2,$v3,$v1v2,$Sv1v2x,$Sv1v2y,$SOv1v2,$SVv1v2,$SVv3)[black,bold]; {,text('\\( \\mathbf{w}\\) segments')} $HBV2Segm HideButton(90,170,'Hide')($v1,$v2,$v3,$v1v2,$Sv1v2x,$Sv1v2y,$SOv1v2,$SVv1v2,$SVv3)[black]; $SBXSegm ShowButton(0, 190,'X segments')($Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y,$SXx3,$SOx1x2,$SXx1x2)[black,bold]; {,text('\\( \\mathbf{u}\\) segments')} $HBXSegm HideButton(90,190,'Hide')($Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y,$SXx3,$SOx1x2,$SXx1x2)[black]; $SBXprSegm ShowButton(0, 210,'X'' segments')($x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black,bold]; {,text('\\( \\mathbf{u}_V\\) segments')} $HBXprSegm HideButton(90,210,'Hide')( $x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black];