{ Taala-JSP CODE FOR JSX CONVERSION 8.1.2020 MEP } { Muista täpättää LaTeX labels: } { Lineaarialgebra: Orthogonal projection matrix 05} { JSX board name: OrthProjMatr_05 } { JSX element id: orthprojmatr_05 } MeasurementAccuracy = 100 #CODE = "GSP.class" #CODEBASE = "..\jsp" #ARCHIVE = "jsp4.jar" #WIDTH = 800 #HEIGHT = 570 #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 = 1 *BackRed = 255 *BackGreen = 255 *BackBlue = 255 { Direction vector S (the viewpoint) } { IMPORTANT } $LUppS FixedPoint(0,530)[hidden]; $LLowS FixedPoint(0,570)[hidden]; $RLowS FixedPoint(800,570)[hidden]; $RUppS FixedPoint(800,530)[hidden]; $ULineS Line($LUppS,$RUppS)[white]; $RectRS Polygon($LUppS,$LLowS,$RLowS,$RUppS,$LUppS)[color(245,203,200),layer(50)]; $ROS FixedPoint(400,550)[black,label('0')]; {,LabelAlign(-4,-15)} $RefS Translation($ROS,25,0)[hidden]; $RayS Ray($RefS,$ROS)[black, hidden]; $RykkS Point on object($RayS,1)[white, label('1')]; {,LabelAlign(-4,-15)} $RLS Line($RykkS,$ROS)[black]; $RptS1 Point on object($RLS,9)[label('S1'), red, layer(10)]; {,label('sSUB{1}'),labelAlign(-4,5),psize(2), highlight} $RptS2 Point on object($RLS,4)[label('S2'), blue, layer(10)]; {,label('sSUB{2}'),labelAlign(-4,8),psize(2), highlight} $RptS3 Point on object($RLS,2)[label('S3'), color(0,150,0), layer(10)]; {,label('sSUB{3}'),labelAlign(-4,10),psize(2), highlight} $S1val Ratio/Points($ROS,$RykkS,$RptS1, 38,540,'')[red]; $FText_s1 FixedText( 85, 546,'s_1')[red]; {,text('\\( sSUB{1} \\, = \\)')} $S2val Ratio/Points($ROS,$RykkS,$RptS2,138,540,'')[blue]; $FText_s2 FixedText( 185, 546,'s_2')[blue]; {,text('\\( sSUB{2} \\, = \\)')} $S3val Ratio/Points($ROS,$RykkS,$RptS3,238,540,'')[color(0,150,0)]; $FText_s3 FixedText( 285, 546,'s_3')[color(0,150,0)]; {,text('\\( sSUB{3} \\, = \\)')} { The projection matrix PS on S } $PSxFText FixedText(170,55,'Px =')[black]; {,text('\\( \\large{P} \\mathbf{x} \\ = \\)' ),LabelAlign(0,0)} $PS_leftPar FixedText(160,40,'(')[black]; {,text('\\( \\Biggl( \\)' ),LabelAlign(0,0)} $PSnrmsqr Calculate(0,380,'','A2^ B2^ + C2^ + ')($S1val,$S2val,$S3val)[red,hidden]; $PS11 Calculate(130, 40,'','A2^ D /')($S1val,$S2val,$S3val,$PSnrmsqr)[black]; $PS12 Calculate(195, 40,'','AB* D /')($S1val,$S2val,$S3val,$PSnrmsqr)[black]; $PS13 Calculate(260, 40,'','AC* D /')($S1val,$S2val,$S3val,$PSnrmsqr)[black]; $PS21 Calculate(130, 55,'','0A+')($PS12)[black]; $PS22 Calculate(195, 55,'','B2^ D /')($S1val,$S2val,$S3val,$PSnrmsqr)[black]; $PS23 Calculate(260, 55,'','BC* D /')($S1val,$S2val,$S3val,$PSnrmsqr)[black]; $PS31 Calculate(130, 70,'','0A+')($PS13)[black]; $PS32 Calculate(195, 70,'','0A+')($PS23)[black]; $PS33 Calculate(260, 70,'','C2^ D /')($S1val,$S2val,$S3val,$PSnrmsqr)[black]; $PS_rightPar FixedText(350,40,'(')[black]; {,text('\\( \\Biggr) \\)' ),LabelAlign(0,0)} { Units on the x1x2x3 coordinates based on S } $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]; $SBRLS ShowButton(410,500,'Change direction')($ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS,$FText_s1,$FText_s2,$FText_s3)[black,bold]; $HBRLS HideButton(510,500,'Fix')( $ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS,$FText_s1,$FText_s2,$FText_s3)[black]; { The virtual 3-space system: axes} $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)]; {,LabelAlign(-3,-12)} $yykk PlotXY($yykkalfa2,$coord,$yykkalfa1)[white, label('1'),layer(10)]; {,LabelAlign(-3,-8)} $zykk PlotXY($zykkalfa2,$coord,$zykkalfa1)[white, label('1'),layer(10)]; {,LabelAlign(-15,-5)} $xykkyykk VectorTranslation($xykk,$Origo,$yykk)[white,hidden]; $SpacePolyUnitsquare Polygon($Origo,$xykk,$xykkyykk,$yykk,$Origo)[color(220,200,175)]; $xRay Ray($xykk,$Origo)[ hidden]; $xRL Line($xykk,$Origo)[ red, hidden]; $yRay Ray($yykk,$Origo)[ hidden]; $yRL Line($yykk,$Origo)[ blue,hidden]; $zRay Ray($zykk,$Origo)[ hidden]; $zRL Line($zykk,$Origo)[color(0,150,0),hidden]; $xM Point on object($xRL,-9)[red,hidden]; $xP Point on object($xRL, 9)[red,hidden]; $xRLvis Segment($xM,$xP)[red]; {,arrowL} $xP2 Point on object($xRL, 8)[red,hidden]; $SxPxP2 Segment($xP2,$xP)[red]; {,label('x SUB{1}'),labelAlign(5,5)} $yM Point on object($yRL,-4)[blue,hidden]; $yP Point on object($yRL, 4)[blue,hidden]; $yRLvis Segment($yM,$yP)[blue]; {,arrowL} $yP2 Point on object($yRL, 3.5)[red,hidden]; $SyPyP2 Segment($yP2,$yP)[blue]; {,label('x SUB{2}'),labelAlign(5,5)} $zM Point on object($zRL,-3)[color(0,150,0),hidden]; $zP Point on object($zRL, 4)[color(0,150,0),hidden]; $zRLvis Segment($zM,$zP)[color(0,150,0)]; {,arrowL} $zP2 Point on object($zRL, 3.5)[red,hidden]; $SzPzP2 Segment($zP2,$zP)[color(0,150,0)]; {,label('x SUB{3}'),labelAlign(5,5)} { Unit space vectors } $SOrigo_xykk Segment($Origo,$xykk)[red,thick]; {,arrowL} $SOrigo_yykk Segment($Origo,$yykk)[blue,thick]; {,arrowL} $SOrigo_zykk Segment($Origo,$zykk)[color(0,150,0),thick]; {,arrowL} { Segments connecting the unit points } $Seg12 Segment($xykk,$yykk)[black]; {,dash(1)} $Seg23 Segment($yykk,$zykk)[black]; {,dash(1)} $Seg31 Segment($zykk,$xykk)[black]; {,dash(1)} { Vector x } $Rptx1 Point on object($xRL,2)[red,label('x1')]; {,label('xSUB{1}'),LabelAlign(-3,5),psize(2),highlight} $Rptx2 Point on object($yRL,2)[blue,label('x2')]; {,label('xSUB{2}'),LabelAlign(-3,5),psize(2),highlight} $Rptx3 Point on object($zRL,2)[color(0,150,0),label('x3')]; {,label('xSUB{3}'),LabelAlign(-3,5),psize(2),highlight} $x1x2 VectorTranslation($Rptx1,$Origo,$Rptx2)[magenta, label('(x1,x2)')]; {,label('( xSUB{1},, xSUB{2} )'),LabelAlign(7,5)} $Sx1x2x Segment($Rptx1,$x1x2)[blue]; {,dash(2)} $Sx1x2y Segment($Rptx2,$x1x2)[red]; {,dash(2)} $SOx1x2 Segment($Origo,$x1x2)[magenta]; {,dash(2)} $X VectorTranslation($x1x2,$Origo,$Rptx3)[black, label('X')]; {,label('\\mathbf{x}'),LabelAlign(0,5)} $SOX Segment($Origo,$X)[black,thick]; {,arrowL} $SXx1x2 Segment($x1x2,$X)[color(0,150,0)]; {,dash(2)} $SXx3 Segment($Rptx3,$X)[magenta]; {,dash(2)} $FText_x FixedText(400, 25,'x')[black,bold]; {,text('\\( \\mathbf{x} \\)')} $x_leftPar FixedText(365,40,'(')[black]; {,text('\\( \\Biggl( \\)' ),LabelAlign(0,0)} $x_rightPar FixedText(450,40,'(')[black]; {,text('\\( \\Biggr) \\quad = \\)' ),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]; { Vector X' } $FText_xpr FixedText(510, 20,'X''')[black,bold]; {,text('\\( \\mathbf{x}'' \\)')} $xpr_leftPar FixedText(470,40,'(')[black]; {,text('\\( \\Biggl( \\)' ),LabelAlign(0,0)} $x1prval Calculate(433, 40,'','AD* BE* + CF* +')($PS11,$PS12,$PS13,$x1,$x2,$x3)[black]; $x2prval Calculate(433, 55,'','AD* BE* + CF* +')($PS21,$PS22,$PS23,$x1,$x2,$x3)[black]; $x3prval Calculate(433, 70,'','AD* BE* + CF* +')($PS31,$PS32,$PS33,$x1,$x2,$x3)[black]; $xpr_rightPar FixedText(530,40,'(')[black]; {,text('\\( \\Biggr) \\)' ),LabelAlign(0,0)} $x1pr Dilation/MarkedRatio($xykk,$Origo,$x1prval)[red,label('x1'''),hidden]; {,label(' x SUB{1}'' '),LabelAlign(7,-10)} $x2pr Dilation/MarkedRatio($yykk,$Origo,$x2prval)[blue,label('x2'''),hidden]; {,label(' x SUB{2}'' '),LabelAlign(7,-10)} $x3pr Dilation/MarkedRatio($zykk,$Origo,$x3prval)[red,label('x3'''),hidden]; {,label(' x SUB{3}'' '),LabelAlign(7,-10)} $x1prx2pr VectorTranslation($x1pr,$Origo,$x2pr)[magenta, label('(x1'',x2'')'),hidden]; {,label('( xSUB{1}'', xSUB{2}'' )'),LabelAlign(7,-10)} $Sx1prx2prx Segment($x1pr,$x1prx2pr)[blue,hidden]; {,dash(3)} $Sx1prx2pry Segment($x2pr,$x1prx2pr)[red,hidden]; {,dash(3)} $SOx1prx2pr Segment($Origo,$x1prx2pr)[magenta,hidden]; {,dash(3)} $Xpr VectorTranslation($x1prx2pr,$Origo,$x3pr)[black, label('X''')]; {,label('\\mathbf{x}'''),LabelAlign(-3,-12)} $SOXpr Segment($Origo,$Xpr)[color(0,230,40),thick,layer(30)]; {,arrowL} $SXx1prx2pr Segment($x1prx2pr,$Xpr)[color(0,150,0),hidden]; {,dash(3)} $SXprx3pr Segment($x3pr,$Xpr)[magenta,hidden]; {,dash(3)} $SXXpr Segment($Xpr,$X)[color(153,76,0),thick]; {,arrowL} $PolXXpr Polygon($Origo,$X,$Xpr)[color(9,247,255),layer(20)]; $SBXSegm ShowButton(5, 90,'X segments')($X,$SOX,$Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y,$SXx3,$SXx1x2,$SOx1x2)[black,bold]; {,text('\\( \\mathbf{x} \\) segments' ),LabelAlign(0,0)} $HBXSegm HideButton(90,90,'Hide')($Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y,$SXx3,$SXx1x2,$SOx1x2)[black]; $SBXprSegm ShowButton(5, 110,'X'' segments')($x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black,bold]; {,text('\\( \\mathbf{x}'' \\) segments' ),LabelAlign(0,0)} $HBXprSegm HideButton(90,110,'Hide')( $x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black]; $SBX ShowButton(5, 130,'Vector X')($X,$SOX)[black,bold]; {,text('Vector \\( \\mathbf{x} \\)'),LabelAlign(0,0)} $HBX HideButton(90,130,'Hide')($X,$SOX,$SXXpr,$PolXXpr,$Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y,$SXx3,$SXx1x2,$SOx1x2)[black]; $SBXpr ShowButton(5, 150,'Vector X''')($Xpr,$SOXpr)[black,bold]; {,text('Vector \\( \\mathbf{x}'' \\)' ),LabelAlign(0,0)} $HBXpr HideButton(90,150,'Hide')($Xpr,$SOXpr, $x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black]; $SBXXpr ShowButton(5, 170,'Segment Xx''')($X,$Xpr,$SXXpr)[black,bold]; {,text('Segment \\( \\mathbf{x} \\mathbf{x}'' \\)'),LabelAlign(0,0)} $HBXXpr HideButton(90,170,'Hide')($SXXpr)[black]; { The x1x2-Plane } $x1x2Origo FixedPoint(570,300)[black, label('0')]; {,LabelAlign(-12,-12)} $x1ykk FixedPoint(620,300)[white, label('1')]; {,LabelAlign(-4,7)} $x2ykk FixedPoint(570,250)[white, label('1')]; {,LabelAlign(5,-2)} { Unit plane vectors } $Sx1x2Origo_x1ykk Segment($x1x2Origo,$x1ykk)[red,thick]; {,arrowL} $Sx1x2Origo_x2ykk Segment($x1x2Origo,$x2ykk)[blue,thick]; {,arrowL} $x1ykkx2ykk VectorTranslation($x1ykk,$x1x2Origo,$x2ykk)[white,label('(x1,x2)'),hidden]; $PolyUnitsquare Polygon($x1x2Origo,$x1ykk,$x1ykkx2ykk,$x2ykk,$x1x2Origo)[color(220,200,175)]; $x1AxisLeft FixedPoint(420,300) [white,hidden]; $x1AxisRight FixedPoint(720,300) [white,hidden]; $x1Axis Segment($x1AxisLeft,$x1AxisRight)[red]; {,arrowL} $FTextx1 FixedText(770, 290,'x1')[red]; {,text('\\( x SUB{1} \\)')} $x2AxisLow FixedPoint(570,450) [white,hidden]; $x2AxisHigh FixedPoint(570,150) [white,hidden]; $x2Axis Segment($x2AxisLow,$x2AxisHigh)[blue]; {,arrowL} $FTextx2 FixedText(640, 160,'x2')[blue]; {,text('\\( x SUB{2} \\)')} $x1Plane Dilation/MarkedRatio($x1ykk,$x1x2Origo,$x1)[red,label('x1')]; {,label(' x SUB{1}'),LabelAlign(-4,-14)} $x2Plane Dilation/MarkedRatio($x2ykk,$x1x2Origo,$x2)[blue,label('x2')]; {,label(' x SUB{2}'),LabelAlign(-20,-5)} $x1x2Plane VectorTranslation($x1Plane,$x1x2Origo,$x2Plane)[white, label('xp =(x1,x2)')]; {,label('{\\mathbf{x}} SUB{p} = ( xSUB{1},, xSUB{2} )'),LabelAlign(7,5)} $Sx1x1x2Plane Segment($x1Plane,$x1x2Plane)[blue]; {,dash(2)} $Sx2x1x2Plane Segment($x2Plane,$x1x2Plane)[red]; {,dash(2)} $XProjPlane Segment($x1x2Origo,$x1x2Plane)[black,thick]; {,arrowL} $x1prPlane Dilation/MarkedRatio($x1ykk,$x1x2Origo,$x1prval)[red,label('x1''')]; {,label(' x SUB{1}'' '),LabelAlign(-5,-14)} $x2prPlane Dilation/MarkedRatio($x2ykk,$x1x2Origo,$x2prval)[blue,label('x2''')]; {,label(' x SUB{2}'' '),LabelAlign(-25,-5)} $x1x2prPlane VectorTranslation($x1prPlane,$x1x2Origo,$x2prPlane)[white, label('Xp'' = (x1'',x2'')')]; {,label('{\\mathbf{x}} SUB{p}'' =( xSUB{1}'' , xSUB{2}'' )'),LabelAlign(7,8)} $Sx1prx1prx2prPlane Segment($x1prPlane,$x1x2prPlane)[blue]; {,dash(1)} $Sx2prx1prx2prPlane Segment($x2prPlane,$x1x2prPlane)[red]; {,dash(1)} $XprProjPlane Segment($x1x2Origo,$x1x2prPlane)[color(0,230,40),thick]; {,arrowL} $SXXprPlane Segment($x1x2prPlane,$x1x2Plane)[color(153,76,0),thick]; {,arrowL} $PolXXprPlane Polygon($x1x2Origo,$x1x2Plane,$x1x2prPlane)[color(9,247,255),layer(20)]; $SBPlaneXSegm ShowButton(410, 90,'Projection Xp')($XProjPlane,$x1Plane,$x2Plane,$x1x2Plane,$Sx1x1x2Plane,$Sx2x1x2Plane)[black,bold]; {,text('Projection \\( {\\mathbf{x}} SUB{p} \\)' ),LabelAlign(0,0)} $HBPlaneXSegm HideButton(505,90,'Hide')($SXXprPlane,$PolXXprPlane,$XProjPlane,$x1Plane,$x2Plane,$x1x2Plane,$Sx1x1x2Plane,$Sx2x1x2Plane)[black]; $SBPlaneXprSegm ShowButton(410, 115,'Projection Xp''')($x1prPlane,$x2prPlane,$x1x2prPlane,$Sx1prx1prx2prPlane,$Sx2prx1prx2prPlane,$XprProjPlane)[black,bold]; {,text('Projection \\( {\\mathbf{x}} SUB{p}'' \\)' ),LabelAlign(0,0)} $HBPlaneXprSegm HideButton(505,115,'Hide')($SXXprPlane,$PolXXprPlane,$x1prPlane,$x2prPlane,$x1x2prPlane,$Sx1prx1prx2prPlane,$Sx2prx1prx2prPlane,$XprProjPlane)[black]; $SBPlaneXXpr ShowButton(410, 140,'Segment XpXp''')($XProjPlane,$XprProjPlane,$x1x2prPlane,$x1x2prPlane,$x1x2Plane,$SXXprPlane,$PolXXprPlane)[black,bold]; {,text('Segment \\( {\\mathbf{x}} SUB{p} {\\mathbf{x}} SUB{p}'' \\)'),LabelAlign(0,0)} $HBPlaneXXpr HideButton(505,140,'Hide')($SXXprPlane,$PolXXprPlane)[black]; { The orthogonal component line } $OCO FixedPoint(770,350)[black,label('X''')]; {,label('\\mathbf{x}'''),LabelAlign(5,0)} $OCykk FixedPoint(770,300)[white,label('1')]; {,LabelAlign(5,0)} $OCline Line($OCO,$OCykk)[blue,hidden]; $OCUp FixedPoint(770,25)[hidden]; $OClinevis Segment($OCO,$OCUp)[white]; {,arrowL} $DistXXpr Calculate(665, 100,'','AD-2^ BE-2^ + CF-2^ + @sqrt')($x1,$x2,$x3,$x1prval,$x2prval,$x3prval)[black,hidden]; $OCOXXpr Dilation/MarkedRatio($OCykk,$OCO,$DistXXpr)[color(153,76,0),label('X')]; {,label('\\mathbf{x}'),LabelAlign(5,0)} $SOCOXXpr Segment($OCO,$OCOXXpr)[color(153,76,0),thick]; {,arrowL} { Dividing vertical segments } $UpperPt FixedPoint(400,100)[hidden]; $LowerPt FixedPoint(400,530)[hidden]; $VLine Segment($UpperPt,$LowerPt)[color(235,235,240),thick]; $UpperPt2 FixedPoint(750, 0)[hidden]; $LowerPt2 FixedPoint(750,530)[hidden]; $VLine2 Segment($UpperPt2,$LowerPt2)[color(235,235,240),thick];