Linear Algebra: Orthogonal Projection from 3-space to Plane (Version 2)


Name:
Student Number:
Email address:


Picture for Question 1

${ 1. Orthogonal projection to a subspace #CODEBASE = "http://cs.uef.fi/matematiikka/java/javasketchpad" $} #CODE = "GSP.class" #CODEBASE = "jsp" #ARCHIVE = "jsp4.jar" #WIDTH = 800 #HEIGHT = 520 #ALIGN = Center *Frame = 1 *TextFont = "Helvetica" *TextBold = 1 *TextSize = 18 *LabelFont = "Courier" *LabelBold = 1 *MeasureFont = "Courier" *MeasureSize = 14 *MeasureBold = 1 *MeasureInDegrees = 0 *DirectedAngles = 1 *Backblue = 255 *BackGreen = 255 *Backred = 255 ${ FixedText( 10, 460,'x1')[ plain, font('Helvetica'), bold, red, justifyCenter]; FixedText(387, 368,'x2')[ plain, font('Helvetica'), bold, blue, justifyCenter]; FixedText(188, 192,'x3')[ plain, font('Helvetica'), bold, color(0,150,0), justifyCenter]; $} FixedText(700, 10, 'Reset=''R''')[red,bold,justifyLeft]; ${ The real lines color(211,245,167) $} $LUpp FixedPoint(0,486)[hidden]; $LLow FixedPoint(0,520)[hidden]; $RLow FixedPoint(400,520)[hidden]; $RUpp FixedPoint(400,486)[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')]; $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')]; $RLu Line($Rykku,$ROu)[black, hidden]; $ROv FixedPoint(200,510)[black,label('0'), hidden]; $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,510)[white,label('1'), hidden]; $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]; ${ $SBRLS ShowButton(403,497,'Change direction')($ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS)[black,bold]; $HBRLS HideButton(520,498,'Fix')( $ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS)[black]; $} $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, 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]; ${ $xykk Point on object( $xRay,1)[ white, label('1')]; $yykk Point on object( $yRay,1)[ white, label('1')]; $zykk Point on object( $zRay,1)[ white, label('1')]; $} ${ $xunit Coordinates($xykk,$coord,0,250,'xunit = ')[red,hidden]; $yunit Coordinates($yykk,$coord,0,270,'yunit = ')[blue,hidden]; $zunit Coordinates($zykk,$coord,0,290,'zunit = ')[color(0,150,0),hidden]; $} ${ restricting the real lines $} $RLuLeftEndUp FixedPoint(0,495)[hidden]; $RLvLeftEndLow FixedPoint(0,510)[hidden]; $RLuRightEndUp FixedPoint(400,495)[hidden]; $RLvRightEndLow FixedPoint(400,510)[hidden]; $RLuvis Segment($RLuLeftEndUp,$RLuRightEndUp)[black]; $RLvvis Segment($RLvLeftEndLow,$RLvRightEndLow)[black]; $xM Point on object($xRL,-4)[red]; $xP Point on object($xRL, 4)[red]; $Imx1 ImageOnPoint($xP, '../images/x1.gif'); $xRLvis Segment($xM,$xP)[red]; $yM Point on object($yRL,-4)[blue]; $yP Point on object($yRL, 4)[blue]; $Imx2 ImageOnPoint($yP, '../images/x2.gif'); $yRLvis Segment($yM,$yP)[blue]; $zM Point on object($zRL,-3)[color(0,150,0)]; $zP Point on object($zRL, 3)[color(0,150,0)]; $Imx3 ImageOnPoint($zP, '../images/x3.gif'); $zRLvis Segment($zM,$zP)[color(0,150,0)]; ${ Points and values U and V $} $Rptu1 Point on object($RLu,3)[label('V11'), red, layer(10)]; $Rptu2 Point on object($RLu,1)[label('V21'), blue, layer(10)]; $Rptu3 FixedPoint(200,495)[label('V31'), color(0,150,0), layer(10)]; $Rptv1 Point on object($RLv,-1)[label('V12'), red, layer(10)]; $Rptv2 Point on object($RLv,2)[label('V22'), blue, layer(10)]; $Rptv3 FixedPoint(200,510)[label('V32'), color(0,150,0), layer(10)]; $ImV Image(45,5,'../images/V.gif'); $ImLeftParvV Image(0,18,'../images/VasenSulku.gif'); $u1val Ratio/Points($ROu,$Rykku,$Rptu1,15,40,'')[red]; $u2val Ratio/Points($ROu,$Rykku,$Rptu2,15,60,'')[blue]; $u3val Ratio/Points($ROu,$Rykku,$Rptu3,15,80,'')[color(0,150,0)]; $v1val Ratio/Points($ROv,$Rykkv,$Rptv1,65,40,'')[red]; $v2val Ratio/Points($ROv,$Rykkv,$Rptv2,65,60,'')[blue]; $v3val Ratio/Points($ROv,$Rykkv,$Rptv3,65,80,'')[color(0,150,0)]; $ImRightParV Image(103,18,'../images/OikeaSulku.gif'); $ImGinv Image(120,40,'../images/Ginv.gif'); $ImVT Image(220,3,'../images/VT.gif'); $ImLeftParvVT Image(155,30,'../images/VasenSulkuPieni.gif'); $u1val2 Calculate(165, 50,'','A0+')($u1val)[red]; $u2val2 Calculate(215, 50,'','A0+')($u2val)[blue]; $u3val2 Calculate(265, 50,'','A0+')($u3val)[color(0,150,0)]; $v1val2 Calculate(165, 70,'','A0+')($v1val)[red]; $v2val2 Calculate(215, 70,'','A0+')($v2val)[blue]; $v3val2 Calculate(265, 70,'','A0+')($v3val)[color(0,150,0)]; $ImRightParVT Image(303,30,'../images/OikeaSulkuPieni.gif'); $SBRLuv ShowButton( 0,464,'Change V1,V2')($ROu,$R1u,$RLuvis,$Rptu1,$Rptu2,$Rptu3,$ROv,$R1v,$RLvvis,$Rptv1,$Rptv2,$Rptv3,$RectR)[black,bold]; $HBRLuv HideButton(100,465,'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]; $u2 Dilation/3PtRatio($yykk,$Origo,$ROu,$Rykku,$Rptu2)[blue, label('V21'),hidden]; $u3 Dilation/3PtRatio($zykk,$Origo,$ROu,$Rykku,$Rptu3)[color(0,150,0), label('V31'),hidden]; $u1u2 VectorTranslation($u1,$Origo,$u2)[magenta, label('(V11,V21)'),hidden]; $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')]; $SUu1u2 Segment($u1u2,$U)[color(0,150,0),hidden]; $SOU Segment($Origo,$U)[color(255,168,17),thick]; $SUu3 Segment($u3,$U)[magenta,hidden]; $v1 Dilation/3PtRatio($xykk,$Origo,$ROv,$Rykkv,$Rptv1)[red, label('V12'),hidden]; $v2 Dilation/3PtRatio($yykk,$Origo,$ROv,$Rykkv,$Rptv2)[blue, label('V22'),hidden]; $v3 Dilation/3PtRatio($zykk,$Origo,$ROv,$Rykkv,$Rptv3)[color(0,150,0), label('V32'),hidden]; $v1v2 VectorTranslation($v1,$Origo,$v2)[magenta, label('(V12,V22)'),hidden]; $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')]; $SVv1v2 Segment($v1v2,$V)[color(0,150,0),hidden]; $SOV Segment($Origo,$V)[color(255,168,17),thick]; $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)]; $ImGeq Image(490,140,'../images/G.gif')[layer(70)]; $ImLeftParvVTR Image(540,130,'../images/VasenSulkuPieni.gif'); $a11 Calculate(550, 150,'','AA* BB* + CC* +')($u1val,$u2val,$u3val)[black]; $a12 Calculate(610, 150,'','AD* BE* + CF* +')($u1val,$u2val,$u3val,$v1val,$v2val,$v3val)[black]; $a21 Calculate(550, 170,'','A0+')($a12)[black]; $a22 Calculate(610, 170,'','AA* BB* + CC* +')($v1val,$v2val,$v3val)[black]; $ImRightParVTR Image(660,130,'../images/OikeaSulkuPieni.gif'); $det Calculate( 0, 200,'det = ','AD* BC* -')($a11,$a12,$a21,$a22)[black,hidden]; $ImGinvEq Image(120,88,'../images/GinvEq.gif'); $ImLeftParG Image(175,80,'../images/VasenSulkuPieni.gif'); $Ia11 Calculate(185, 100,'','AB/')($a22,$det)[black]; $Ia12 Calculate(250, 100,'','0A- B/')($a21,$det)[black]; $Ia21 Calculate(185, 120,'','0A+')($Ia12)[black]; $Ia22 Calculate(250, 120,'','AB/')($a11,$det)[black]; $ImRightParG Image(305,80,'../images/OikeaSulkuPieni.gif'); ${ $ImGinvEq Image(120,88,'../images/GinvEq.gif')[hidden]; $ImLeftParG Image(175,80,'../images/VasenSulkuPieni.gif')[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]; $ImRightParG Image(305,80,'../images/OikeaSulkuPieni.gif')[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,2)[red,label('x1')]; $Rptx2 Point on object($yRL,2)[blue,label('x2')]; $Rptx3 Point on object($zRL,2)[color(0,150,0),label('x3')]; $x1x2 VectorTranslation($Rptx1,$Origo,$Rptx2)[magenta, label('(x1,x2)')]; $Sx1x2x Segment($Rptx1,$x1x2)[blue]; $Sx1x2y Segment($Rptx2,$x1x2)[red]; $SOx1x2 Segment($Origo,$x1x2)[magenta]; ${ $SOx1x2 Segment($Origo,$x1x2)[black,hidden]; $xpos Coordinates($x1x2,$coord,0,320,'plane (x1,x2) = ')[black]; $x1x2 Point(380,400)[red,label('(x1,x2)')]; $x3 Coordinates($Rptx3,$coord,0,340,'x3 = ')[black]; $x1Parx2 Parallel($yRL,$x1x2)[blue,hidden]; $Rptx1 Intersect($xRL,$x1Parx2)[black, label('x1'),hidden]; $Sx1x2x1 Segment($x1x2,$Rptx1)[blue]; $x2Parx2 Parallel($xRL,$x1x2)[red,hidden]; $Rptx2 Intersect($yRL,$x2Parx2)[black, label('x2'),hidden]; $Sx1x2x2 Segment($x1x2,$Rptx2)[red]; $} $FTx FixedText(345, 18,'X')[black,bold]; $ImLeftParx Image(310,18,'../images/VasenSulku.gif'); $x1 Ratio/Points($Origo,$xykk,$Rptx1,330,40,'')[black]; $x2 Ratio/Points($Origo,$yykk,$Rptx2,330,60,'')[black]; $x3 Ratio/Points($Origo,$zykk,$Rptx3,330,80,'')[black]; $ImRightParx Image(380,18,'../images/OikeaSulku.gif'); $ImEq Image(400,40,'../images/Eq.gif'); $FTxpr FixedText(455, 18,'X''')[black,bold]; $ImLeftParxpr Image(420,18,'../images/VasenSulku.gif'); $x1prval Calculate(433, 40,'','AD* BE* + CF* +')($p11,$p12,$p13,$x1,$x2,$x3)[black]; $x2prval Calculate(433, 60,'','AD* BE* + CF* +')($p21,$p22,$p23,$x1,$x2,$x3)[black]; $x3prval Calculate(433, 80,'','AD* BE* + CF* +')($p31,$p32,$p33,$x1,$x2,$x3)[black]; $ImRightParxpr Image(482,18,'../images/OikeaSulku.gif'); $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')]; $SXx1x2 Segment($x1x2,$X)[color(0,150,0)]; $SOX Segment($Origo,$X)[black,thick]; $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)[black, label('X''')]; $SXx1prx2pr Segment($x1prx2pr,$Xpr)[color(0,150,0),hidden]; $SOXpr Segment($Origo,$Xpr)[color(0,230,40),thick,layer(30)]; $SXprx3pr Segment($x3pr,$Xpr)[magenta,hidden]; $SXXpr Segment($X,$Xpr)[blue,thick]; $PolXXpr Polygon($Origo,$X,$Xpr)[color(9,247,255),layer(20)]; $ImGinvVT Image(490, 90,'../images/GinvVT.gif'); $ImLeftGinvx Image(550, 70,'../images/VasenSulku.gif'); Calculate(567,90,'','A0+')($x1)[black]; Calculate(567,110,'','A0+')($x2)[black]; Calculate(567,130,'','A0+')($x3)[black]; $ImRightGinvx Image(620, 70,'../images/OikeaSulku.gif'); $ImEqVT Image(635, 90,'../images/Eq.gif'); $ImLeftGinvxpr Image(655, 80,'../images/VasenSulkuPieni.gif'); $a1 Calculate(665, 100,'','AD* BE* + CF* +')($c11,$c12,$c13,$x1,$x2,$x3)[black]; $a2 Calculate(665, 120,'','AD* BE* + CF* +')($c21,$c22,$c23,$x1,$x2,$x3)[black]; $ImRightGinvxpr Image(725, 80,'../images/OikeaSulkuPieni.gif'); $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)]; ${ $SBProj ShowButton(80, 0,'Projection')($ImV,$ImLeftParvV,$u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$ImRightParV,$ImGinv,$ImVT,$ImLeftParvVT,$u1val2,$u2val2,$u3val2,$v1val2,$v2val2,$v3val2,$ImRightParVT,$FTx,$ImLeftParx,$x1,$x2,$x3,$ImRightParx,$ImEq,$FTxpr,$ImLeftParxpr,$x1prval,$x2prval,$x3prval,$ImRightParxpr)[black,bold]; $HBProj HideButton(155,0,'Hide')($ImV,$ImLeftParvV,$u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$ImRightParV,$ImGinv,$ImVT,$ImLeftParvVT,$u1val2,$u2val2,$u3val2,$v1val2,$v2val2,$v3val2,$ImRightParVT,$FTx,$ImLeftParx,$x1,$x2,$x3,$ImRightParx,$ImEq,$FTxpr,$ImLeftParxpr,$x1prval,$x2prval,$x3prval,$ImRightParxpr)[black]; $SBinvG ShowButton(0, 100,'Inverse of G')($ImGinvEq,$ImLeftParG,$Ia11,$Ia12,$Ia21,$Ia22,$ImRightParG)[black,bold]; $HBinvG HideButton(85,100,'Hide')( $ImGinvEq,$ImLeftParG,$Ia11,$Ia12,$Ia21,$Ia22,$ImRightParG)[black]; $} $SBV1Segm ShowButton(0, 150,'V1 segments')($u1,$u2,$u3,$u1u2,$Su1u2x,$Su1u2y,$SOu1u2,$SUu1u2,$SUu3)[black,bold]; $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]; $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)[black,bold]; $HBXSegm HideButton(90,190,'Hide')($Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y)[black]; $SBXprSegm ShowButton(0, 210,'X'' segments')($x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black,bold]; $HBXprSegm HideButton(90,210,'Hide')( $x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black]; ${ The V1V2-Plane $} $OV FixedPoint(575,350) [black, label('0')]; $Vref FixedPoint(625,350) [white, label('1')]; $LengthV1 Calculate(600, 40,'||V1|| = ','AA* BB* + CC* + @sqrt')($u1val,$u2val,$u3val)[black,hidden]; $LengthV2 Calculate(600, 60,'||V2|| = ','AA* BB* + CC* + @sqrt')($v1val,$v2val,$v3val)[black,hidden]; $angle Calculate(600, 80,'ang = ','AD* BE* + CF* + G / H / @acos')($u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$LengthV1,$LengthV2)[black]; $V1Plane Dilation/MarkedRatio($Vref,$OV,$LengthV1)[label('V1'),color(255,168,17)]; $SOV1Plane Segment($OV,$V1Plane)[color(255,168,17),thick]; $V2PlaneHor Dilation/MarkedRatio($Vref,$OV,$LengthV2)[label('V2'),color(255,168,17),hidden]; $V2Plane Rotation/MeasuredAngle($V2PlaneHor,$OV,$angle)[label('V2'),color(255,168,17)]; $SOV2Plane Segment($OV,$V2Plane)[color(255,168,17),thick]; $V1plusV2 VectorTranslation($V1Plane,$OV,$V2Plane)[hidden]; $PlV1V2Pol Polygon($OV,$V1Plane,$V1plusV2,$V2Plane)[yellow,layer(10)]; $V1minusV2 VectorTranslation($V1Plane,$V2Plane,$OV)[hidden]; $V2minusV1 VectorTranslation($V2Plane,$V1Plane,$OV)[hidden]; $minusV1plusV2 VectorTranslation($V2minusV1,$V1plusV2,$V1minusV2)[hidden]; $PlV1V2 Polygon($V1plusV2,$V2minusV1,$minusV1plusV2,$V1minusV2)[color(240,245,183)]; $a1V1Plane Dilation/MarkedRatio($V1Plane,$OV,$a1)[label('a1V1'),color(255,168,17),hidden]; $a2V2Plane Dilation/MarkedRatio($V2Plane,$OV,$a2)[label('a2V2'),color(255,168,17),hidden]; $XprPlane VectorTranslation($a1V1Plane,$OV,$a2V2Plane)[color(0,230,40),label('X''')]; $SOVXprPlane Segment($OV,$XprPlane)[color(0,230,40),thick]; ${ The orthogonal component line $} $OCO FixedPoint(770,350)[black,label('X''')]; $OCykk FixedPoint(770,300)[white,label('1')]; $OCline Line($OCO,$OCykk)[blue,hidden]; $OCUp FixedPoint(770,25)[hidden]; $OClinevis Segment($OCO,$OCUp)[blue]; $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)[blue,label('X')]; $SOCOXXpr Segment($OCO,$OCOXXpr)[blue,thick]; ${ Dividing vertical segment $} $UpperPt FixedPoint(400,150)[hidden]; $LowerPt FixedPoint(400,520)[hidden]; $VLine Segment($UpperPt,$LowerPt)[black,thick]; $UpperPt2 FixedPoint(750, 20)[hidden]; $LowerPt2 FixedPoint(750,520)[hidden]; $VLine2 Segment($UpperPt2,$LowerPt2)[black,thick];

Question 1

Why is XX' fixed when you move V11, V12, V21 or V22 (on the lines below the left picture).


Picture for Questions 2

${ 2. Orthogonal projection to a subspace #CODEBASE = "http://cs.uef.fi/matematiikka/java/javasketchpad" $} #CODE = "GSP.class" #CODEBASE = "jsp" #ARCHIVE = "jsp4.jar" #WIDTH = 800 #HEIGHT = 520 #ALIGN = Center *Frame = 1 *TextFont = "Helvetica" *TextBold = 1 *TextSize = 18 *LabelFont = "Courier" *LabelBold = 1 *MeasureFont = "Courier" *MeasureSize = 14 *MeasureBold = 1 *MeasureInDegrees = 0 *DirectedAngles = 1 *Backblue = 255 *BackGreen = 255 *Backred = 255 ${ FixedText( 10, 460,'x1')[ plain, font('Helvetica'), bold, red, justifyCenter]; FixedText(387, 368,'x2')[ plain, font('Helvetica'), bold, blue, justifyCenter]; FixedText(188, 192,'x3')[ plain, font('Helvetica'), bold, color(0,150,0), justifyCenter]; $} FixedText(700, 10, 'Reset=''R''')[red,bold,justifyLeft]; ${ The real lines color(211,245,167) $} $LUpp FixedPoint(0,486)[hidden]; $LLow FixedPoint(0,520)[hidden]; $RLow FixedPoint(400,520)[hidden]; $RUpp FixedPoint(400,486)[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')]; $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')]; $RLu Line($Rykku,$ROu)[black, hidden]; $ROv FixedPoint(200,510)[black,label('0')]; $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,510)[white,label('1')]; $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]; ${ $SBRLS ShowButton(403,497,'Change direction')($ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS)[black,bold]; $HBRLS HideButton(520,498,'Fix')( $ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS)[black]; $} $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, 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]; ${ $xykk Point on object( $xRay,1)[ white, label('1')]; $yykk Point on object( $yRay,1)[ white, label('1')]; $zykk Point on object( $zRay,1)[ white, label('1')]; $} ${ $xunit Coordinates($xykk,$coord,0,250,'xunit = ')[red,hidden]; $yunit Coordinates($yykk,$coord,0,270,'yunit = ')[blue,hidden]; $zunit Coordinates($zykk,$coord,0,290,'zunit = ')[color(0,150,0),hidden]; $} ${ restricting the real lines $} $RLuLeftEndUp FixedPoint(0,495)[hidden]; $RLvLeftEndLow FixedPoint(0,510)[hidden]; $RLuRightEndUp FixedPoint(400,495)[hidden]; $RLvRightEndLow FixedPoint(400,510)[hidden]; $RLuvis Segment($RLuLeftEndUp,$RLuRightEndUp)[black]; $RLvvis Segment($RLvLeftEndLow,$RLvRightEndLow)[black]; $xM Point on object($xRL,-4)[red]; $xP Point on object($xRL, 4)[red]; $Imx1 ImageOnPoint($xP, '../images/x1.gif'); $xRLvis Segment($xM,$xP)[red]; $yM Point on object($yRL,-4)[blue]; $yP Point on object($yRL, 4)[blue]; $Imx2 ImageOnPoint($yP, '../images/x2.gif'); $yRLvis Segment($yM,$yP)[blue]; $zM Point on object($zRL,-3)[color(0,150,0)]; $zP Point on object($zRL, 3)[color(0,150,0)]; $Imx3 ImageOnPoint($zP, '../images/x3.gif'); $zRLvis Segment($zM,$zP)[color(0,150,0)]; ${ Points and values U and V $} $Rptu1 Point on object($RLu,0.5)[label('V11'), red, layer(10)]; $Rptu2 Point on object($RLu,-1)[label('V21'), blue, layer(10)]; $Rptu3 Point on object($RLu,3)[label('V31'), color(0,150,0), layer(10)]; $Rptv1 Point on object($RLv,-1)[label('V12'), red, layer(10)]; $Rptv2 Point on object($RLv,2)[label('V22'), blue, layer(10)]; $Rptv3 Point on object($RLv,-2)[label('V32'), color(0,150,0), layer(10)]; $ImV Image(45,5,'../images/V.gif'); $ImLeftParvV Image(0,18,'../images/VasenSulku.gif'); $u1val Ratio/Points($ROu,$Rykku,$Rptu1,15,40,'')[red]; $u2val Ratio/Points($ROu,$Rykku,$Rptu2,15,60,'')[blue]; $u3val Ratio/Points($ROu,$Rykku,$Rptu3,15,80,'')[color(0,150,0)]; $v1val Ratio/Points($ROv,$Rykkv,$Rptv1,65,40,'')[red]; $v2val Ratio/Points($ROv,$Rykkv,$Rptv2,65,60,'')[blue]; $v3val Ratio/Points($ROv,$Rykkv,$Rptv3,65,80,'')[color(0,150,0)]; $ImRightParV Image(103,18,'../images/OikeaSulku.gif'); $ImGinv Image(120,40,'../images/Ginv.gif'); $ImVT Image(220,3,'../images/VT.gif'); $ImLeftParvVT Image(155,30,'../images/VasenSulkuPieni.gif'); $u1val2 Calculate(165, 50,'','A0+')($u1val)[red]; $u2val2 Calculate(215, 50,'','A0+')($u2val)[blue]; $u3val2 Calculate(265, 50,'','A0+')($u3val)[color(0,150,0)]; $v1val2 Calculate(165, 70,'','A0+')($v1val)[red]; $v2val2 Calculate(215, 70,'','A0+')($v2val)[blue]; $v3val2 Calculate(265, 70,'','A0+')($v3val)[color(0,150,0)]; $ImRightParVT Image(303,30,'../images/OikeaSulkuPieni.gif'); $SBRLuv ShowButton( 0,464,'Change V1,V2')($ROu,$R1u,$RLuvis,$Rptu1,$Rptu2,$Rptu3,$ROv,$R1v,$RLvvis,$Rptv1,$Rptv2,$Rptv3,$RectR)[black,bold]; $HBRLuv HideButton(100,465,'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]; $u2 Dilation/3PtRatio($yykk,$Origo,$ROu,$Rykku,$Rptu2)[blue, label('V21'),hidden]; $u3 Dilation/3PtRatio($zykk,$Origo,$ROu,$Rykku,$Rptu3)[color(0,150,0), label('V31'),hidden]; $u1u2 VectorTranslation($u1,$Origo,$u2)[magenta, label('(V11,V21)'),hidden]; $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')]; $SUu1u2 Segment($u1u2,$U)[color(0,150,0),hidden]; $SOU Segment($Origo,$U)[color(255,168,17),thick]; $SUu3 Segment($u3,$U)[magenta,hidden]; $v1 Dilation/3PtRatio($xykk,$Origo,$ROv,$Rykkv,$Rptv1)[red, label('V12'),hidden]; $v2 Dilation/3PtRatio($yykk,$Origo,$ROv,$Rykkv,$Rptv2)[blue, label('V22'),hidden]; $v3 Dilation/3PtRatio($zykk,$Origo,$ROv,$Rykkv,$Rptv3)[color(0,150,0), label('V32'),hidden]; $v1v2 VectorTranslation($v1,$Origo,$v2)[magenta, label('(V12,V22)'),hidden]; $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')]; $SVv1v2 Segment($v1v2,$V)[color(0,150,0),hidden]; $SOV Segment($Origo,$V)[color(255,168,17),thick]; $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)]; $ImGeq Image(490,140,'../images/G.gif')[layer(70)]; $ImLeftParvVTR Image(540,130,'../images/VasenSulkuPieni.gif'); $a11 Calculate(550, 150,'','AA* BB* + CC* +')($u1val,$u2val,$u3val)[black]; $a12 Calculate(610, 150,'','AD* BE* + CF* +')($u1val,$u2val,$u3val,$v1val,$v2val,$v3val)[black]; $a21 Calculate(550, 170,'','A0+')($a12)[black]; $a22 Calculate(610, 170,'','AA* BB* + CC* +')($v1val,$v2val,$v3val)[black]; $ImRightParVTR Image(660,130,'../images/OikeaSulkuPieni.gif'); $det Calculate( 0, 200,'det = ','AD* BC* -')($a11,$a12,$a21,$a22)[black,hidden]; $ImGinvEq Image(120,88,'../images/GinvEq.gif'); $ImLeftParG Image(175,80,'../images/VasenSulkuPieni.gif'); $Ia11 Calculate(185, 100,'','AB/')($a22,$det)[black]; $Ia12 Calculate(250, 100,'','0A- B/')($a21,$det)[black]; $Ia21 Calculate(185, 120,'','0A+')($Ia12)[black]; $Ia22 Calculate(250, 120,'','AB/')($a11,$det)[black]; $ImRightParG Image(305,80,'../images/OikeaSulkuPieni.gif'); ${ $ImGinvEq Image(120,88,'../images/GinvEq.gif')[hidden]; $ImLeftParG Image(175,80,'../images/VasenSulkuPieni.gif')[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]; $ImRightParG Image(305,80,'../images/OikeaSulkuPieni.gif')[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,2)[red,label('x1')]; $Rptx2 Point on object($yRL,2)[blue,label('x2')]; $Rptx3 Point on object($zRL,2)[color(0,150,0),label('x3')]; $x1x2 VectorTranslation($Rptx1,$Origo,$Rptx2)[magenta, label('(x1,x2)')]; $Sx1x2x Segment($Rptx1,$x1x2)[blue]; $Sx1x2y Segment($Rptx2,$x1x2)[red]; $SOx1x2 Segment($Origo,$x1x2)[magenta]; ${ $SOx1x2 Segment($Origo,$x1x2)[black,hidden]; $xpos Coordinates($x1x2,$coord,0,320,'plane (x1,x2) = ')[black]; $x1x2 Point(380,400)[red,label('(x1,x2)')]; $x3 Coordinates($Rptx3,$coord,0,340,'x3 = ')[black]; $x1Parx2 Parallel($yRL,$x1x2)[blue,hidden]; $Rptx1 Intersect($xRL,$x1Parx2)[black, label('x1'),hidden]; $Sx1x2x1 Segment($x1x2,$Rptx1)[blue]; $x2Parx2 Parallel($xRL,$x1x2)[red,hidden]; $Rptx2 Intersect($yRL,$x2Parx2)[black, label('x2'),hidden]; $Sx1x2x2 Segment($x1x2,$Rptx2)[red]; $} $FTx FixedText(345, 18,'X')[black,bold]; $ImLeftParx Image(310,18,'../images/VasenSulku.gif'); $x1 Ratio/Points($Origo,$xykk,$Rptx1,330,40,'')[black]; $x2 Ratio/Points($Origo,$yykk,$Rptx2,330,60,'')[black]; $x3 Ratio/Points($Origo,$zykk,$Rptx3,330,80,'')[black]; $ImRightParx Image(380,18,'../images/OikeaSulku.gif'); $ImEq Image(400,40,'../images/Eq.gif'); $FTxpr FixedText(455, 18,'X''')[black,bold]; $ImLeftParxpr Image(420,18,'../images/VasenSulku.gif'); $x1prval Calculate(433, 40,'','AD* BE* + CF* +')($p11,$p12,$p13,$x1,$x2,$x3)[black]; $x2prval Calculate(433, 60,'','AD* BE* + CF* +')($p21,$p22,$p23,$x1,$x2,$x3)[black]; $x3prval Calculate(433, 80,'','AD* BE* + CF* +')($p31,$p32,$p33,$x1,$x2,$x3)[black]; $ImRightParxpr Image(482,18,'../images/OikeaSulku.gif'); $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')]; $SXx1x2 Segment($x1x2,$X)[color(0,150,0)]; $SOX Segment($Origo,$X)[black,thick]; $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)[black, label('X''')]; $SXx1prx2pr Segment($x1prx2pr,$Xpr)[color(0,150,0),hidden]; $SOXpr Segment($Origo,$Xpr)[color(0,230,40),thick,layer(30)]; $SXprx3pr Segment($x3pr,$Xpr)[magenta,hidden]; $SXXpr Segment($X,$Xpr)[blue,thick]; $PolXXpr Polygon($Origo,$X,$Xpr)[color(9,247,255),layer(20)]; $ImGinvVT Image(490, 90,'../images/GinvVT.gif'); $ImLeftGinvx Image(550, 70,'../images/VasenSulku.gif'); Calculate(567,90,'','A0+')($x1)[black]; Calculate(567,110,'','A0+')($x2)[black]; Calculate(567,130,'','A0+')($x3)[black]; $ImRightGinvx Image(620, 70,'../images/OikeaSulku.gif'); $ImEqVT Image(635, 90,'../images/Eq.gif'); $ImLeftGinvxpr Image(655, 80,'../images/VasenSulkuPieni.gif'); $a1 Calculate(665, 100,'','AD* BE* + CF* +')($c11,$c12,$c13,$x1,$x2,$x3)[black]; $a2 Calculate(665, 120,'','AD* BE* + CF* +')($c21,$c22,$c23,$x1,$x2,$x3)[black]; $ImRightGinvxpr Image(725, 80,'../images/OikeaSulkuPieni.gif'); $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)]; ${ $SBProj ShowButton(80, 0,'Projection')($ImV,$ImLeftParvV,$u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$ImRightParV,$ImGinv,$ImVT,$ImLeftParvVT,$u1val2,$u2val2,$u3val2,$v1val2,$v2val2,$v3val2,$ImRightParVT,$FTx,$ImLeftParx,$x1,$x2,$x3,$ImRightParx,$ImEq,$FTxpr,$ImLeftParxpr,$x1prval,$x2prval,$x3prval,$ImRightParxpr)[black,bold]; $HBProj HideButton(155,0,'Hide')($ImV,$ImLeftParvV,$u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$ImRightParV,$ImGinv,$ImVT,$ImLeftParvVT,$u1val2,$u2val2,$u3val2,$v1val2,$v2val2,$v3val2,$ImRightParVT,$FTx,$ImLeftParx,$x1,$x2,$x3,$ImRightParx,$ImEq,$FTxpr,$ImLeftParxpr,$x1prval,$x2prval,$x3prval,$ImRightParxpr)[black]; $SBinvG ShowButton(0, 100,'Inverse of G')($ImGinvEq,$ImLeftParG,$Ia11,$Ia12,$Ia21,$Ia22,$ImRightParG)[black,bold]; $HBinvG HideButton(85,100,'Hide')( $ImGinvEq,$ImLeftParG,$Ia11,$Ia12,$Ia21,$Ia22,$ImRightParG)[black]; $} $SBV1Segm ShowButton(0, 150,'V1 segments')($u1,$u2,$u3,$u1u2,$Su1u2x,$Su1u2y,$SOu1u2,$SUu1u2,$SUu3)[black,bold]; $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]; $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)[black,bold]; $HBXSegm HideButton(90,190,'Hide')($Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y)[black]; $SBXprSegm ShowButton(0, 210,'X'' segments')($x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black,bold]; $HBXprSegm HideButton(90,210,'Hide')( $x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black]; ${ The V1V2-Plane $} $OV FixedPoint(575,350) [black, label('0')]; $Vref FixedPoint(625,350) [white, label('1')]; $LengthV1 Calculate(600, 40,'||V1|| = ','AA* BB* + CC* + @sqrt')($u1val,$u2val,$u3val)[black,hidden]; $LengthV2 Calculate(600, 60,'||V2|| = ','AA* BB* + CC* + @sqrt')($v1val,$v2val,$v3val)[black,hidden]; $angle Calculate(600, 80,'ang = ','AD* BE* + CF* + G / H / @acos')($u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$LengthV1,$LengthV2)[black,hidden]; $V1Plane Dilation/MarkedRatio($Vref,$OV,$LengthV1)[label('V1'),color(255,168,17)]; $SOV1Plane Segment($OV,$V1Plane)[color(255,168,17),thick]; $V2PlaneHor Dilation/MarkedRatio($Vref,$OV,$LengthV2)[label('V2'),color(255,168,17),hidden]; $V2Plane Rotation/MeasuredAngle($V2PlaneHor,$OV,$angle)[label('V2'),color(255,168,17)]; $SOV2Plane Segment($OV,$V2Plane)[color(255,168,17),thick]; $V1plusV2 VectorTranslation($V1Plane,$OV,$V2Plane)[hidden]; $PlV1V2Pol Polygon($OV,$V1Plane,$V1plusV2,$V2Plane)[yellow,layer(10)]; $V1minusV2 VectorTranslation($V1Plane,$V2Plane,$OV)[hidden]; $V2minusV1 VectorTranslation($V2Plane,$V1Plane,$OV)[hidden]; $minusV1plusV2 VectorTranslation($V2minusV1,$V1plusV2,$V1minusV2)[hidden]; $PlV1V2 Polygon($V1plusV2,$V2minusV1,$minusV1plusV2,$V1minusV2)[color(240,245,183)]; $a1V1Plane Dilation/MarkedRatio($V1Plane,$OV,$a1)[label('a1V1'),color(255,168,17),hidden]; $a2V2Plane Dilation/MarkedRatio($V2Plane,$OV,$a2)[label('a2V2'),color(255,168,17),hidden]; $XprPlane VectorTranslation($a1V1Plane,$OV,$a2V2Plane)[color(0,230,40),label('X''')]; $SOVXprPlane Segment($OV,$XprPlane)[color(0,230,40),thick]; ${ The orthogonal component line $} $OCO FixedPoint(770,350)[black,label('X''')]; $OCykk FixedPoint(770,300)[white,label('1')]; $OCline Line($OCO,$OCykk)[blue,hidden]; $OCUp FixedPoint(770,25)[hidden]; $OClinevis Segment($OCO,$OCUp)[blue]; $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)[blue,label('X')]; $SOCOXXpr Segment($OCO,$OCOXXpr)[blue,thick]; ${ Dividing vertical segment $} $UpperPt FixedPoint(400,150)[hidden]; $LowerPt FixedPoint(400,520)[hidden]; $VLine Segment($UpperPt,$LowerPt)[black,thick]; $UpperPt2 FixedPoint(750, 20)[hidden]; $LowerPt2 FixedPoint(750,520)[hidden]; $VLine2 Segment($UpperPt2,$LowerPt2)[black,thick];

Questions 2

a) Is it possible for any vector V1 to choose V2 such that the plane spanned by V1,V2 looks like a line (call it L) ?
yes no don't know
b) Does XX' look perpendicular to L ? yes no don't know
c) Is it true for all choises for V1 ?
yes no don't know


Picture for Questions 3

${ 3. Orthogonal projection to a subspace #CODEBASE = "http://cs.uef.fi/matematiikka/java/javasketchpad" $} #CODE = "GSP.class" #CODEBASE = "jsp" #ARCHIVE = "jsp4.jar" #WIDTH = 800 #HEIGHT = 550 #ALIGN = Center *Frame = 1 *TextFont = "Helvetica" *TextBold = 1 *TextSize = 18 *LabelFont = "Courier" *LabelBold = 1 *MeasureFont = "Courier" *MeasureSize = 14 *MeasureBold = 1 *MeasureInDegrees = 0 *DirectedAngles = 1 *Backblue = 255 *BackGreen = 255 *Backred = 255 ${ FixedText( 10, 460,'x1')[ plain, font('Helvetica'), bold, red, justifyCenter]; FixedText(387, 368,'x2')[ plain, font('Helvetica'), bold, blue, justifyCenter]; FixedText(188, 192,'x3')[ plain, font('Helvetica'), bold, color(0,150,0), justifyCenter]; $} FixedText(700, 10, 'Reset=''R''')[red,bold,justifyLeft]; ${ The real lines color(211,245,167) $} $LUpp FixedPoint(0,486)[hidden]; $LLow FixedPoint(0,520)[hidden]; $RLow FixedPoint(400,520)[hidden]; $RUpp FixedPoint(400,486)[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')]; $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')]; $RLu Line($Rykku,$ROu)[black, hidden]; $ROv FixedPoint(200,510)[black,label('0')]; $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,510)[white,label('1')]; $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)]; $ROS FixedPoint(400,530)[black,label('0')]; $RefS Translation($ROS,25,0)[hidden]; $RayS Ray($RefS,$ROS)[black, hidden]; $RykkS Point on object($RayS,1)[white, label('1')]; $RLS Line($RykkS,$ROS)[black]; $RptS1 Point on object($RLS,9)[label('S1'), red, layer(10)]; $RptS2 Point on object($RLS,4)[label('S2'), blue, layer(10)]; $RptS3 Point on object($RLS,2)[label('S3'), color(0,150,0), layer(10)]; $S1val Ratio/Points($ROS,$RykkS,$RptS1, 5,543,'S1 = ')[red]; $S2val Ratio/Points($ROS,$RykkS,$RptS2,105,543,'S2 = ')[blue]; $S3val Ratio/Points($ROS,$RykkS,$RptS3,205,543,'S3 = ')[color(0,150,0)]; $SBRLS ShowButton(403,497,'Change direction')($ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS)[black,bold]; $HBRLS HideButton(520,498,'Fix')( $ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS)[black]; $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, 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]; ${ $xykk Point on object( $xRay,1)[ white, label('1')]; $yykk Point on object( $yRay,1)[ white, label('1')]; $zykk Point on object( $zRay,1)[ white, label('1')]; $} ${ $xunit Coordinates($xykk,$coord,0,250,'xunit = ')[red,hidden]; $yunit Coordinates($yykk,$coord,0,270,'yunit = ')[blue,hidden]; $zunit Coordinates($zykk,$coord,0,290,'zunit = ')[color(0,150,0),hidden]; $} ${ restricting the real lines $} $RLuLeftEndUp FixedPoint(0,495)[hidden]; $RLvLeftEndLow FixedPoint(0,510)[hidden]; $RLuRightEndUp FixedPoint(400,495)[hidden]; $RLvRightEndLow FixedPoint(400,510)[hidden]; $RLuvis Segment($RLuLeftEndUp,$RLuRightEndUp)[black]; $RLvvis Segment($RLvLeftEndLow,$RLvRightEndLow)[black]; $xM Point on object($xRL,-4)[red]; $xP Point on object($xRL, 4)[red]; $Imx1 ImageOnPoint($xP, '../images/x1.gif'); $xRLvis Segment($xM,$xP)[red]; $yM Point on object($yRL,-4)[blue]; $yP Point on object($yRL, 4)[blue]; $Imx2 ImageOnPoint($yP, '../images/x2.gif'); $yRLvis Segment($yM,$yP)[blue]; $zM Point on object($zRL,-3)[color(0,150,0)]; $zP Point on object($zRL, 3)[color(0,150,0)]; $Imx3 ImageOnPoint($zP, '../images/x3.gif'); $zRLvis Segment($zM,$zP)[color(0,150,0)]; ${ Points and values U and V $} $Rptu1 Point on object($RLu,0.5)[label('V11'), red, layer(10)]; $Rptu2 Point on object($RLu,-1)[label('V21'), blue, layer(10)]; $Rptu3 Point on object($RLu,3)[label('V31'), color(0,150,0), layer(10)]; $Rptv1 Point on object($RLv,-1)[label('V12'), red, layer(10)]; $Rptv2 Point on object($RLv,2)[label('V22'), blue, layer(10)]; $Rptv3 Point on object($RLv,-2)[label('V32'), color(0,150,0), layer(10)]; $ImV Image(45,5,'../images/V.gif'); $ImLeftParvV Image(0,18,'../images/VasenSulku.gif'); $u1val Ratio/Points($ROu,$Rykku,$Rptu1,15,40,'')[red]; $u2val Ratio/Points($ROu,$Rykku,$Rptu2,15,60,'')[blue]; $u3val Ratio/Points($ROu,$Rykku,$Rptu3,15,80,'')[color(0,150,0)]; $v1val Ratio/Points($ROv,$Rykkv,$Rptv1,65,40,'')[red]; $v2val Ratio/Points($ROv,$Rykkv,$Rptv2,65,60,'')[blue]; $v3val Ratio/Points($ROv,$Rykkv,$Rptv3,65,80,'')[color(0,150,0)]; $ImRightParV Image(103,18,'../images/OikeaSulku.gif'); $ImGinv Image(120,40,'../images/Ginv.gif'); $ImVT Image(220,3,'../images/VT.gif'); $ImLeftParvVT Image(155,30,'../images/VasenSulkuPieni.gif'); $u1val2 Calculate(165, 50,'','A0+')($u1val)[red]; $u2val2 Calculate(215, 50,'','A0+')($u2val)[blue]; $u3val2 Calculate(265, 50,'','A0+')($u3val)[color(0,150,0)]; $v1val2 Calculate(165, 70,'','A0+')($v1val)[red]; $v2val2 Calculate(215, 70,'','A0+')($v2val)[blue]; $v3val2 Calculate(265, 70,'','A0+')($v3val)[color(0,150,0)]; $ImRightParVT Image(303,30,'../images/OikeaSulkuPieni.gif'); $SBRLuv ShowButton( 0,464,'Change V1,V2')($ROu,$R1u,$RLuvis,$Rptu1,$Rptu2,$Rptu3,$ROv,$R1v,$RLvvis,$Rptv1,$Rptv2,$Rptv3,$RectR)[black,bold]; $HBRLuv HideButton(100,465,'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]; $u2 Dilation/3PtRatio($yykk,$Origo,$ROu,$Rykku,$Rptu2)[blue, label('V21'),hidden]; $u3 Dilation/3PtRatio($zykk,$Origo,$ROu,$Rykku,$Rptu3)[color(0,150,0), label('V31'),hidden]; $u1u2 VectorTranslation($u1,$Origo,$u2)[magenta, label('(V11,V21)'),hidden]; $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')]; $SUu1u2 Segment($u1u2,$U)[color(0,150,0),hidden]; $SOU Segment($Origo,$U)[color(255,168,17),thick]; $SUu3 Segment($u3,$U)[magenta,hidden]; $v1 Dilation/3PtRatio($xykk,$Origo,$ROv,$Rykkv,$Rptv1)[red, label('V12'),hidden]; $v2 Dilation/3PtRatio($yykk,$Origo,$ROv,$Rykkv,$Rptv2)[blue, label('V22'),hidden]; $v3 Dilation/3PtRatio($zykk,$Origo,$ROv,$Rykkv,$Rptv3)[color(0,150,0), label('V32'),hidden]; $v1v2 VectorTranslation($v1,$Origo,$v2)[magenta, label('(V12,V22)'),hidden]; $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')]; $SVv1v2 Segment($v1v2,$V)[color(0,150,0),hidden]; $SOV Segment($Origo,$V)[color(255,168,17),thick]; $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)]; $ImGeq Image(490,140,'../images/G.gif')[layer(70)]; $ImLeftParvVTR Image(540,130,'../images/VasenSulkuPieni.gif'); $a11 Calculate(550, 150,'','AA* BB* + CC* +')($u1val,$u2val,$u3val)[black]; $a12 Calculate(610, 150,'','AD* BE* + CF* +')($u1val,$u2val,$u3val,$v1val,$v2val,$v3val)[black]; $a21 Calculate(550, 170,'','A0+')($a12)[black]; $a22 Calculate(610, 170,'','AA* BB* + CC* +')($v1val,$v2val,$v3val)[black]; $ImRightParVTR Image(660,130,'../images/OikeaSulkuPieni.gif'); $det Calculate( 0, 200,'det = ','AD* BC* -')($a11,$a12,$a21,$a22)[black,hidden]; $ImGinvEq Image(120,88,'../images/GinvEq.gif'); $ImLeftParG Image(175,80,'../images/VasenSulkuPieni.gif'); $Ia11 Calculate(185, 100,'','AB/')($a22,$det)[black]; $Ia12 Calculate(250, 100,'','0A- B/')($a21,$det)[black]; $Ia21 Calculate(185, 120,'','0A+')($Ia12)[black]; $Ia22 Calculate(250, 120,'','AB/')($a11,$det)[black]; $ImRightParG Image(305,80,'../images/OikeaSulkuPieni.gif'); ${ $ImGinvEq Image(120,88,'../images/GinvEq.gif')[hidden]; $ImLeftParG Image(175,80,'../images/VasenSulkuPieni.gif')[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]; $ImRightParG Image(305,80,'../images/OikeaSulkuPieni.gif')[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,2)[red,label('x1')]; $Rptx2 Point on object($yRL,2)[blue,label('x2')]; $Rptx3 Point on object($zRL,2)[color(0,150,0),label('x3')]; $x1x2 VectorTranslation($Rptx1,$Origo,$Rptx2)[magenta, label('(x1,x2)')]; $Sx1x2x Segment($Rptx1,$x1x2)[blue]; $Sx1x2y Segment($Rptx2,$x1x2)[red]; $SOx1x2 Segment($Origo,$x1x2)[magenta]; ${ $SOx1x2 Segment($Origo,$x1x2)[black,hidden]; $xpos Coordinates($x1x2,$coord,0,320,'plane (x1,x2) = ')[black]; $x1x2 Point(380,400)[red,label('(x1,x2)')]; $x3 Coordinates($Rptx3,$coord,0,340,'x3 = ')[black]; $x1Parx2 Parallel($yRL,$x1x2)[blue,hidden]; $Rptx1 Intersect($xRL,$x1Parx2)[black, label('x1'),hidden]; $Sx1x2x1 Segment($x1x2,$Rptx1)[blue]; $x2Parx2 Parallel($xRL,$x1x2)[red,hidden]; $Rptx2 Intersect($yRL,$x2Parx2)[black, label('x2'),hidden]; $Sx1x2x2 Segment($x1x2,$Rptx2)[red]; $} $FTx FixedText(345, 18,'X')[black,bold]; $ImLeftParx Image(310,18,'../images/VasenSulku.gif'); $x1 Ratio/Points($Origo,$xykk,$Rptx1,330,40,'')[black]; $x2 Ratio/Points($Origo,$yykk,$Rptx2,330,60,'')[black]; $x3 Ratio/Points($Origo,$zykk,$Rptx3,330,80,'')[black]; $ImRightParx Image(380,18,'../images/OikeaSulku.gif'); $ImEq Image(400,40,'../images/Eq.gif'); $FTxpr FixedText(455, 18,'X''')[black,bold]; $ImLeftParxpr Image(420,18,'../images/VasenSulku.gif'); $x1prval Calculate(433, 40,'','AD* BE* + CF* +')($p11,$p12,$p13,$x1,$x2,$x3)[black]; $x2prval Calculate(433, 60,'','AD* BE* + CF* +')($p21,$p22,$p23,$x1,$x2,$x3)[black]; $x3prval Calculate(433, 80,'','AD* BE* + CF* +')($p31,$p32,$p33,$x1,$x2,$x3)[black]; $ImRightParxpr Image(482,18,'../images/OikeaSulku.gif'); $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')]; $SXx1x2 Segment($x1x2,$X)[color(0,150,0)]; $SOX Segment($Origo,$X)[black,thick]; $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)[black, label('X''')]; $SXx1prx2pr Segment($x1prx2pr,$Xpr)[color(0,150,0),hidden]; $SOXpr Segment($Origo,$Xpr)[color(0,230,40),thick,layer(30)]; $SXprx3pr Segment($x3pr,$Xpr)[magenta,hidden]; $SXXpr Segment($X,$Xpr)[blue,thick]; $PolXXpr Polygon($Origo,$X,$Xpr)[color(9,247,255),layer(20)]; $ImGinvVT Image(490, 90,'../images/GinvVT.gif'); $ImLeftGinvx Image(550, 70,'../images/VasenSulku.gif'); Calculate(567,90,'','A0+')($x1)[black]; Calculate(567,110,'','A0+')($x2)[black]; Calculate(567,130,'','A0+')($x3)[black]; $ImRightGinvx Image(620, 70,'../images/OikeaSulku.gif'); $ImEqVT Image(635, 90,'../images/Eq.gif'); $ImLeftGinvxpr Image(655, 80,'../images/VasenSulkuPieni.gif'); $a1 Calculate(665, 100,'','AD* BE* + CF* +')($c11,$c12,$c13,$x1,$x2,$x3)[black]; $a2 Calculate(665, 120,'','AD* BE* + CF* +')($c21,$c22,$c23,$x1,$x2,$x3)[black]; $ImRightGinvxpr Image(725, 80,'../images/OikeaSulkuPieni.gif'); $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)]; ${ $SBProj ShowButton(80, 0,'Projection')($ImV,$ImLeftParvV,$u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$ImRightParV,$ImGinv,$ImVT,$ImLeftParvVT,$u1val2,$u2val2,$u3val2,$v1val2,$v2val2,$v3val2,$ImRightParVT,$FTx,$ImLeftParx,$x1,$x2,$x3,$ImRightParx,$ImEq,$FTxpr,$ImLeftParxpr,$x1prval,$x2prval,$x3prval,$ImRightParxpr)[black,bold]; $HBProj HideButton(155,0,'Hide')($ImV,$ImLeftParvV,$u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$ImRightParV,$ImGinv,$ImVT,$ImLeftParvVT,$u1val2,$u2val2,$u3val2,$v1val2,$v2val2,$v3val2,$ImRightParVT,$FTx,$ImLeftParx,$x1,$x2,$x3,$ImRightParx,$ImEq,$FTxpr,$ImLeftParxpr,$x1prval,$x2prval,$x3prval,$ImRightParxpr)[black]; $SBinvG ShowButton(0, 100,'Inverse of G')($ImGinvEq,$ImLeftParG,$Ia11,$Ia12,$Ia21,$Ia22,$ImRightParG)[black,bold]; $HBinvG HideButton(85,100,'Hide')( $ImGinvEq,$ImLeftParG,$Ia11,$Ia12,$Ia21,$Ia22,$ImRightParG)[black]; $} $SBV1Segm ShowButton(0, 150,'V1 segments')($u1,$u2,$u3,$u1u2,$Su1u2x,$Su1u2y,$SOu1u2,$SUu1u2,$SUu3)[black,bold]; $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]; $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)[black,bold]; $HBXSegm HideButton(90,190,'Hide')($Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y)[black]; $SBXprSegm ShowButton(0, 210,'X'' segments')($x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black,bold]; $HBXprSegm HideButton(90,210,'Hide')( $x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black]; ${ The V1V2-Plane $} $OV FixedPoint(575,350) [black, label('0')]; $Vref FixedPoint(625,350) [white, label('1')]; $LengthV1 Calculate(600, 40,'||V1|| = ','AA* BB* + CC* + @sqrt')($u1val,$u2val,$u3val)[black,hidden]; $LengthV2 Calculate(600, 60,'||V2|| = ','AA* BB* + CC* + @sqrt')($v1val,$v2val,$v3val)[black,hidden]; $angle Calculate(600, 80,'ang = ','AD* BE* + CF* + G / H / @acos')($u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$LengthV1,$LengthV2)[black,hidden]; $V1Plane Dilation/MarkedRatio($Vref,$OV,$LengthV1)[label('V1'),color(255,168,17)]; $SOV1Plane Segment($OV,$V1Plane)[color(255,168,17),thick]; $V2PlaneHor Dilation/MarkedRatio($Vref,$OV,$LengthV2)[label('V2'),color(255,168,17),hidden]; $V2Plane Rotation/MeasuredAngle($V2PlaneHor,$OV,$angle)[label('V2'),color(255,168,17)]; $SOV2Plane Segment($OV,$V2Plane)[color(255,168,17),thick]; $V1plusV2 VectorTranslation($V1Plane,$OV,$V2Plane)[hidden]; $PlV1V2Pol Polygon($OV,$V1Plane,$V1plusV2,$V2Plane)[yellow,layer(10)]; $V1minusV2 VectorTranslation($V1Plane,$V2Plane,$OV)[hidden]; $V2minusV1 VectorTranslation($V2Plane,$V1Plane,$OV)[hidden]; $minusV1plusV2 VectorTranslation($V2minusV1,$V1plusV2,$V1minusV2)[hidden]; $PlV1V2 Polygon($V1plusV2,$V2minusV1,$minusV1plusV2,$V1minusV2)[color(240,245,183)]; $a1V1Plane Dilation/MarkedRatio($V1Plane,$OV,$a1)[label('a1V1'),color(255,168,17),hidden]; $a2V2Plane Dilation/MarkedRatio($V2Plane,$OV,$a2)[label('a2V2'),color(255,168,17),hidden]; $XprPlane VectorTranslation($a1V1Plane,$OV,$a2V2Plane)[color(0,230,40),label('X''')]; $SOVXprPlane Segment($OV,$XprPlane)[color(0,230,40),thick]; ${ The orthogonal component line $} $OCO FixedPoint(770,350)[black,label('X''')]; $OCykk FixedPoint(770,300)[white,label('1')]; $OCline Line($OCO,$OCykk)[blue,hidden]; $OCUp FixedPoint(770,25)[hidden]; $OClinevis Segment($OCO,$OCUp)[blue]; $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)[blue,label('X')]; $SOCOXXpr Segment($OCO,$OCOXXpr)[blue,thick]; ${ Dividing vertical segment $} $UpperPt FixedPoint(400,150)[hidden]; $LowerPt FixedPoint(400,520)[hidden]; $VLine Segment($UpperPt,$LowerPt)[black,thick]; $UpperPt2 FixedPoint(750, 20)[hidden]; $LowerPt2 FixedPoint(750,520)[hidden]; $VLine2 Segment($UpperPt2,$LowerPt2)[black,thick];

Questions 3

a) Does the property observed in the preceding picture stay valid when you change parameters S1, S2 and/or S3 ?
yes no don't know
b) How does the vector S = (S1,S2,S3) look like on the screen ?


Picture for Questions 4

${ 4. Orthogonal projection to a subspace #CODEBASE = "http://cs.uef.fi/matematiikka/java/javasketchpad" $} #CODE = "GSP.class" #CODEBASE = "jsp" #ARCHIVE = "jsp4.jar" #WIDTH = 800 #HEIGHT = 550 #ALIGN = Center *Frame = 1 *TextFont = "Helvetica" *TextBold = 1 *TextSize = 18 *LabelFont = "Courier" *LabelBold = 1 *MeasureFont = "Courier" *MeasureSize = 14 *MeasureBold = 1 *MeasureInDegrees = 0 *DirectedAngles = 1 *Backblue = 255 *BackGreen = 255 *Backred = 255 ${ FixedText( 10, 460,'x1')[ plain, font('Helvetica'), bold, red, justifyCenter]; FixedText(387, 368,'x2')[ plain, font('Helvetica'), bold, blue, justifyCenter]; FixedText(188, 192,'x3')[ plain, font('Helvetica'), bold, color(0,150,0), justifyCenter]; $} FixedText(700, 10, 'Reset=''R''')[red,bold,justifyLeft]; ${ The real lines color(211,245,167) $} $LUpp FixedPoint(0,486)[hidden]; $LLow FixedPoint(0,520)[hidden]; $RLow FixedPoint(400,520)[hidden]; $RUpp FixedPoint(400,486)[hidden]; $ULine Line($LUpp,$RUpp)[black, hidden]; $RectR Polygon($LUpp,$LLow,$RLow,$RUpp,$LUpp)[color(240,200,100),hidden]; $ROu FixedPoint(200,495)[black,label('0'),hidden]; $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'),hidden]; $RLu Line($Rykku,$ROu)[black, hidden]; $ROv FixedPoint(200,510)[black,label('0'),hidden]; $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,510)[white,label('1'),hidden]; $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)]; $ROS FixedPoint(400,530)[black,label('0')]; $RefS Translation($ROS,25,0)[hidden]; $RayS Ray($RefS,$ROS)[black, hidden]; $RykkS Point on object($RayS,1)[white, label('1')]; $RLS Line($RykkS,$ROS)[black]; $RptS1 Point on object($RLS,9)[label('S1'), red, layer(10)]; $RptS2 Point on object($RLS,4)[label('S2'), blue, layer(10)]; $RptS3 Point on object($RLS,2)[label('S3'), color(0,150,0), layer(10)]; $S1val Ratio/Points($ROS,$RykkS,$RptS1, 5,543,'S1 = ')[red]; $S2val Ratio/Points($ROS,$RykkS,$RptS2,105,543,'S2 = ')[blue]; $S3val Ratio/Points($ROS,$RykkS,$RptS3,205,543,'S3 = ')[color(0,150,0)]; $SBRLS ShowButton(403,497,'Change direction')($ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS)[black,bold]; $HBRLS HideButton(520,498,'Fix')( $ROS,$RykkS,$RLS,$RptS1,$RptS2,$RptS3,$S1val,$S2val,$S3val,$RectRS)[black]; ${ Coordinates in the V1V2-plane system $} $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]; ${ qc Projection matrix P $ImP Image(200,3,'../images/P.gif'); $} $ImPeq Image(47,47,'../images/Peq.gif'); $ImLeftParvP Image(95,18,'../images/VasenSulku.gif'); $Snrmsqr Calculate(0,380,'','A2^ B2^ + C2^ + ')($S1val,$S2val,$S3val)[red,hidden]; $Pr11 Calculate(110, 40,'','B2^ C2^ + D /')($S1val,$S2val,$S3val,$Snrmsqr)[black]; $Pr12 Calculate(175, 40,'','0AB*- D /')($S1val,$S2val,$S3val,$Snrmsqr)[black]; $Pr13 Calculate(240, 40,'','0AC*- D /')($S1val,$S2val,$S3val,$Snrmsqr)[black]; $Pr21 Calculate(110, 60,'','0A+')($Pr12)[black]; $Pr22 Calculate(175, 60,'','A2^ C2^ + D /')($S1val,$S2val,$S3val,$Snrmsqr)[black]; $Pr23 Calculate(240, 60,'','0BC*- D /')($S1val,$S2val,$S3val,$Snrmsqr)[black]; $Pr31 Calculate(110, 80,'','0A+')($Pr13)[black]; $Pr32 Calculate(175, 80,'','0A+')($Pr23)[black]; $Pr33 Calculate(240, 80,'','A2^ B2^ + D /')($S1val,$S2val,$S3val,$Snrmsqr)[black]; $ImRightParP Image(293,18,'../images/OikeaSulku.gif'); ${ The virtual space with movable unit points $} $Origo FixedPoint(200,320)[black, label('0')]; $unitp UnitPoint($Origo,75)[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)]; $Seg12 Segment($xykk,$yykk)[black, thick]; $Seg23 Segment($yykk,$zykk)[black, thick]; $Seg31 Segment($zykk,$xykk)[black, thick]; $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]; ${ $xykk Point on object( $xRay,1)[ white, label('1')]; $yykk Point on object( $yRay,1)[ white, label('1')]; $zykk Point on object( $zRay,1)[ white, label('1')]; $} ${ $xunit Coordinates($xykk,$coord,0,250,'xunit = ')[red,hidden]; $yunit Coordinates($yykk,$coord,0,270,'yunit = ')[blue,hidden]; $zunit Coordinates($zykk,$coord,0,290,'zunit = ')[color(0,150,0),hidden]; $} ${ restricting the real lines $} $RLuLeftEndUp FixedPoint(0,495)[hidden]; $RLvLeftEndLow FixedPoint(0,510)[hidden]; $RLuRightEndUp FixedPoint(400,495)[hidden]; $RLvRightEndLow FixedPoint(400,510)[hidden]; $RLuvis Segment($RLuLeftEndUp,$RLuRightEndUp)[black,hidden]; $RLvvis Segment($RLvLeftEndLow,$RLvRightEndLow)[black,hidden]; $xM Point on object($xRL,-3)[red]; $xP Point on object($xRL, 3)[red]; $Imx1 ImageOnPoint($xP, '../images/x1.gif'); $xRLvis Segment($xM,$xP)[red]; $yM Point on object($yRL,-3)[blue]; $yP Point on object($yRL, 3)[blue]; $Imx2 ImageOnPoint($yP, '../images/x2.gif'); $yRLvis Segment($yM,$yP)[blue]; $zM Point on object($zRL,-2)[color(0,150,0)]; $zP Point on object($zRL, 2)[color(0,150,0)]; $Imx3 ImageOnPoint($zP, '../images/x3.gif'); $zRLvis Segment($zM,$zP)[color(0,150,0)]; ${ Points and values U and V $} $Rptu1 Point on object($RLu,1)[label('V11'), red, layer(10),hidden]; $Rptu2 Point on object($RLu,0)[label('V21'), blue, layer(10),hidden]; $Rptu3 Point on object($RLu,0)[label('V31'), color(0,150,0), layer(10),hidden]; $Rptv1 Point on object($RLv,0)[label('V12'), red, layer(10),hidden]; $Rptv2 Point on object($RLv,1)[label('V22'), blue, layer(10),hidden]; $Rptv3 Point on object($RLv,0)[label('V32'), color(0,150,0), layer(10),hidden]; $ImV Image(45,5,'../images/V.gif')[hidden]; $ImLeftParvV Image(0,18,'../images/VasenSulku.gif')[hidden]; $u1val Ratio/Points($ROu,$Rykku,$Rptu1,15,40,'')[red,hidden]; $u2val Ratio/Points($ROu,$Rykku,$Rptu2,15,60,'')[blue,hidden]; $u3val Ratio/Points($ROu,$Rykku,$Rptu3,15,80,'')[color(0,150,0),hidden]; $v1val Ratio/Points($ROv,$Rykkv,$Rptv1,65,40,'')[red,hidden]; $v2val Ratio/Points($ROv,$Rykkv,$Rptv2,65,60,'')[blue,hidden]; $v3val Ratio/Points($ROv,$Rykkv,$Rptv3,65,80,'')[color(0,150,0),hidden]; $ImRightParV Image(103,18,'../images/OikeaSulku.gif')[hidden]; $ImGinv Image(120,40,'../images/Ginv.gif')[hidden]; $ImVT Image(220,3,'../images/VT.gif')[hidden]; $ImLeftParvVT Image(155,30,'../images/VasenSulkuPieni.gif')[hidden]; $u1val2 Calculate(165, 50,'','A0+')($u1val)[red,hidden]; $u2val2 Calculate(215, 50,'','A0+')($u2val)[blue,hidden]; $u3val2 Calculate(265, 50,'','A0+')($u3val)[color(0,150,0),hidden]; $v1val2 Calculate(165, 70,'','A0+')($v1val)[red,hidden]; $v2val2 Calculate(215, 70,'','A0+')($v2val)[blue,hidden]; $v3val2 Calculate(265, 70,'','A0+')($v3val)[color(0,150,0),hidden]; $ImRightParVT Image(303,30,'../images/OikeaSulkuPieni.gif')[hidden]; ${ $SBRLuv ShowButton( 0,464,'Change V1,V2')($ROu,$R1u,$RLuvis,$Rptu1,$Rptu2,$Rptu3,$ROv,$R1v,$RLvvis,$Rptv1,$Rptv2,$Rptv3,$RectR)[black,bold]; $HBRLuv HideButton(100,465,'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]; $u2 Dilation/3PtRatio($yykk,$Origo,$ROu,$Rykku,$Rptu2)[blue, label('V21'),hidden]; $u3 Dilation/3PtRatio($zykk,$Origo,$ROu,$Rykku,$Rptu3)[color(0,150,0), label('V31'),hidden]; $u1u2 VectorTranslation($u1,$Origo,$u2)[magenta, label('(V11,V21)'),hidden]; $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')]; $SUu1u2 Segment($u1u2,$U)[color(0,150,0),hidden]; $SOU Segment($Origo,$U)[color(255,168,17),thick]; $SUu3 Segment($u3,$U)[magenta,hidden]; $v1 Dilation/3PtRatio($xykk,$Origo,$ROv,$Rykkv,$Rptv1)[red, label('V12'),hidden]; $v2 Dilation/3PtRatio($yykk,$Origo,$ROv,$Rykkv,$Rptv2)[blue, label('V22'),hidden]; $v3 Dilation/3PtRatio($zykk,$Origo,$ROv,$Rykkv,$Rptv3)[color(0,150,0), label('V32'),hidden]; $v1v2 VectorTranslation($v1,$Origo,$v2)[magenta, label('(V12,V22)'),hidden]; $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')]; $SVv1v2 Segment($v1v2,$V)[color(0,150,0),hidden]; $SOV Segment($Origo,$V)[color(255,168,17),thick]; $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)]; $ImGeq Image(490,140,'../images/G.gif')[layer(70),hidden]; $ImLeftParvVTR Image(540,130,'../images/VasenSulkuPieni.gif')[black,hidden]; $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]; $ImRightParVTR Image(660,130,'../images/OikeaSulkuPieni.gif')[black,hidden]; $det Calculate( 0, 200,'det = ','AD* BC* -')($a11,$a12,$a21,$a22)[black,hidden]; $ImGinvEq Image(120,88,'../images/GinvEq.gif')[black,hidden]; $ImLeftParG Image(175,80,'../images/VasenSulkuPieni.gif')[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]; $ImRightParG Image(305,80,'../images/OikeaSulkuPieni.gif')[black,hidden]; ${ $ImGinvEq Image(120,88,'../images/GinvEq.gif')[hidden]; $ImLeftParG Image(175,80,'../images/VasenSulkuPieni.gif')[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]; $ImRightParG Image(305,80,'../images/OikeaSulkuPieni.gif')[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]; ${ The vectors X and X' $} $Rptx1 Point on object($xRL,2)[red,label('x1')]; $Rptx2 Point on object($yRL,2)[blue,label('x2')]; $Rptx3 Point on object($zRL,1.5)[color(0,150,0),label('x3')]; $x1x2 VectorTranslation($Rptx1,$Origo,$Rptx2)[magenta, label('(x1,x2)')]; $Sx1x2x Segment($Rptx1,$x1x2)[blue]; $Sx1x2y Segment($Rptx2,$x1x2)[red]; $SOx1x2 Segment($Origo,$x1x2)[magenta]; $FTx FixedText(345, 18,'X')[black,bold,hidden]; $ImLeftParx Image(310,18,'../images/VasenSulku.gif')[hidden]; $x1 Ratio/Points($Origo,$xykk,$Rptx1,330,40,'')[black,hidden]; $x2 Ratio/Points($Origo,$yykk,$Rptx2,330,60,'')[black,hidden]; $x3 Ratio/Points($Origo,$zykk,$Rptx3,330,80,'')[black,hidden]; $ImRightParx Image(380,18,'../images/OikeaSulku.gif')[hidden,hidden]; $ImEq Image(400,40,'../images/Eq.gif')[hidden,hidden]; $FTxpr FixedText(455, 18,'X''')[black,bold,hidden]; $ImLeftParxpr Image(420,18,'../images/VasenSulku.gif')[hidden,hidden]; $x1prval Calculate(433, 40,'','AD* BE* + CF* +')($p11,$p12,$p13,$x1,$x2,$x3)[black,hidden]; $x2prval Calculate(433, 60,'','AD* BE* + CF* +')($p21,$p22,$p23,$x1,$x2,$x3)[black,hidden]; $x3prval Calculate(433, 80,'','AD* BE* + CF* +')($p31,$p32,$p33,$x1,$x2,$x3)[black,hidden]; $ImRightParxpr Image(482,18,'../images/OikeaSulku.gif')[hidden]; $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')]; $SXx1x2 Segment($x1x2,$X)[color(0,150,0)]; $SOX Segment($Origo,$X)[black,thick]; $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)[black, label('X''')]; $SXx1prx2pr Segment($x1prx2pr,$Xpr)[color(0,150,0),hidden]; $SOXpr Segment($Origo,$Xpr)[color(0,230,40),thick,layer(30)]; $SXprx3pr Segment($x3pr,$Xpr)[magenta,hidden]; $SXXpr Segment($X,$Xpr)[blue,thick]; $PolXXpr Polygon($Origo,$X,$Xpr)[color(9,247,255),layer(20)]; $ImGinvVT Image(490, 90,'../images/GinvVT.gif')[hidden]; $ImLeftGinvx Image(550, 70,'../images/VasenSulku.gif')[hidden]; Calculate(567,90,'','A0+')($x1)[black,hidden]; Calculate(567,110,'','A0+')($x2)[black,hidden]; Calculate(567,130,'','A0+')($x3)[black,hidden]; $ImRightGinvx Image(620, 70,'../images/OikeaSulku.gif')[hidden]; $ImEqVT Image(635, 90,'../images/Eq.gif')[hidden]; $ImLeftGinvxpr Image(655, 80,'../images/VasenSulkuPieni.gif')[hidden]; $a1 Calculate(665, 100,'','AD* BE* + CF* +')($c11,$c12,$c13,$x1,$x2,$x3)[black,hidden]; $a2 Calculate(665, 120,'','AD* BE* + CF* +')($c21,$c22,$c23,$x1,$x2,$x3)[black,hidden]; $ImRightGinvxpr Image(725, 80,'../images/OikeaSulkuPieni.gif')[hidden]; $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)]; ${ $SBProj ShowButton(80, 0,'Projection')($ImV,$ImLeftParvV,$u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$ImRightParV,$ImGinv,$ImVT,$ImLeftParvVT,$u1val2,$u2val2,$u3val2,$v1val2,$v2val2,$v3val2,$ImRightParVT,$FTx,$ImLeftParx,$x1,$x2,$x3,$ImRightParx,$ImEq,$FTxpr,$ImLeftParxpr,$x1prval,$x2prval,$x3prval,$ImRightParxpr)[black,bold]; $HBProj HideButton(155,0,'Hide')($ImV,$ImLeftParvV,$u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$ImRightParV,$ImGinv,$ImVT,$ImLeftParvVT,$u1val2,$u2val2,$u3val2,$v1val2,$v2val2,$v3val2,$ImRightParVT,$FTx,$ImLeftParx,$x1,$x2,$x3,$ImRightParx,$ImEq,$FTxpr,$ImLeftParxpr,$x1prval,$x2prval,$x3prval,$ImRightParxpr)[black]; $SBinvG ShowButton(0, 100,'Inverse of G')($ImGinvEq,$ImLeftParG,$Ia11,$Ia12,$Ia21,$Ia22,$ImRightParG)[black,bold]; $HBinvG HideButton(85,100,'Hide')( $ImGinvEq,$ImLeftParG,$Ia11,$Ia12,$Ia21,$Ia22,$ImRightParG)[black]; $SBV1Segm ShowButton(0, 150,'V1 segments')($u1,$u2,$u3,$u1u2,$Su1u2x,$Su1u2y,$SOu1u2,$SUu1u2,$SUu3)[black,bold]; $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]; $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)[black,bold]; $HBXSegm HideButton(90,190,'Hide')($Rptx1,$Rptx2,$Rptx3,$x1x2,$Sx1x2x,$Sx1x2y)[black]; $SBXprSegm ShowButton(0, 210,'X'' segments')($x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black,bold]; $HBXprSegm HideButton(90,210,'Hide')( $x1pr,$x2pr,$x3pr,$x1prx2pr,$Sx1prx2prx,$Sx1prx2pry,$SOx1prx2pr,$SXx1prx2pr,$SXprx3pr)[black]; ${ The V1V2-Plane $} $OV FixedPoint(575,350) [black, label('0')]; $Vref FixedPoint(650,350) [white, label('1')]; $LengthV1 Calculate(600, 40,'||V1|| = ','AA* BB* + CC* + @sqrt')($u1val,$u2val,$u3val)[black,hidden]; $LengthV2 Calculate(600, 60,'||V2|| = ','AA* BB* + CC* + @sqrt')($v1val,$v2val,$v3val)[black,hidden]; $angle Calculate(600, 80,'ang = ','AD* BE* + CF* + G / H / @acos')($u1val,$u2val,$u3val,$v1val,$v2val,$v3val,$LengthV1,$LengthV2)[black,hidden]; $V1Plane Dilation/MarkedRatio($Vref,$OV,$LengthV1)[label('V1'),color(255,168,17)]; $SOV1Plane Segment($OV,$V1Plane)[color(255,168,17),thick]; $V2PlaneHor Dilation/MarkedRatio($Vref,$OV,$LengthV2)[label('V2'),color(255,168,17),hidden]; $V2Plane Rotation/MeasuredAngle($V2PlaneHor,$OV,$angle)[label('V2'),color(255,168,17)]; $SOV2Plane Segment($OV,$V2Plane)[color(255,168,17),thick]; $V1plusV2 VectorTranslation($V1Plane,$OV,$V2Plane)[hidden]; $PlV1V2Pol Polygon($OV,$V1Plane,$V1plusV2,$V2Plane)[yellow,layer(10)]; $V1minusV2 VectorTranslation($V1Plane,$V2Plane,$OV)[hidden]; $V2minusV1 VectorTranslation($V2Plane,$V1Plane,$OV)[hidden]; $minusV1plusV2 VectorTranslation($V2minusV1,$V1plusV2,$V1minusV2)[hidden]; $PlV1V2 Polygon($V1plusV2,$V2minusV1,$minusV1plusV2,$V1minusV2)[color(240,245,183)]; $a1V1Plane Dilation/MarkedRatio($V1Plane,$OV,$a1)[label('a1V1'),color(255,168,17),hidden]; $a2V2Plane Dilation/MarkedRatio($V2Plane,$OV,$a2)[label('a2V2'),color(255,168,17),hidden]; $XprPlane VectorTranslation($a1V1Plane,$OV,$a2V2Plane)[color(0,230,40),label('X''')]; $SOVXprPlane Segment($OV,$XprPlane)[color(0,230,40),thick]; ${ The orthogonal component line $} $OCO FixedPoint(770,350)[black,label('X''')]; $OCykk FixedPoint(770,275)[white,label('1')]; $OCline Line($OCO,$OCykk)[blue,hidden]; $OCUp FixedPoint(770,25)[hidden]; $OClinevis Segment($OCO,$OCUp)[blue]; $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)[blue,label('X')]; $SOCOXXpr Segment($OCO,$OCOXXpr)[blue,thick]; ${ Dividing vertical segment $} $UpperPt FixedPoint(400,150)[hidden]; $LowerPt FixedPoint(400,520)[hidden]; $VLine Segment($UpperPt,$LowerPt)[black,thick]; $UpperPt2 FixedPoint(750, 20)[hidden]; $LowerPt2 FixedPoint(750,520)[hidden]; $VLine2 Segment($UpperPt2,$LowerPt2)[black,thick];

Questions 4

a) Compute the matrix of the orthogonal projection on the subspace spanned by S.

b) Compute the matrix P of the orthogonal projection on the plane orthogonal to S.

c) Let i, j, k be an orthonormal basis of the Euclidean 3-space and let S = S1 i + S2 j + S3 k. Compute the lengths of the projections on the orthogonal complement of S, of the vectors i, j, k, j - k, k - i, i - j.

d) Do your results fit with the pictures 2 and 3?
yes no don't know


Question 5: Student feedback and evaluation of problems and pictures




Anyone interested in this kind of worksheets, please contact:
Martti.Pesonen@Joensuu.Fi

Eric Lehman and Martti E. Pesonen, March 23, 2003