[LON-CAPA-users] EXT question

H.K. Ng lon-capa-users@mail.lon-capa.org
Tue, 12 May 2009 15:34:13 -0400


There is a good description of the EXT function in

/res/msu/albertel/test/ext_examples.problem
/res/msu/albertel/test/ext_examples.library

The problem example includes the library example.

-hk


At 03:20 PM 5/12/2009, you wrote:
>Here is the text of a somewhat extended problem I use. It is found
>under /res/ohiou/physlets/momentum/inelastic_collision_zero.problem
>It uses the student's latest answer to affect the simulation.
>
>I think what you want to do is ignore the second parameter, if I
>remember right.
>
>Mark
>
>
><problem>
><script type="loncapa/perl">
>$vA=0;
>$vB=-&random(2.0,5.0,-0.1);
>$tcollision=2.0;
>$tfinal = $tcollision-0.2;
>$vdB = 0;
>$vA2 = &EXT('user.resource.resource.0.11.submission');
>$vA2 =~ s/([\d\.+-eE\s]*)(.+)/\1/;
>$n = &EXT('user.resource.resource.0.tries');
>if ($n>0) {
>    $vA = $vA2;
>    $tfinal = 15.0;
>    $vdB = $vB;
>}
>$mA=&random(2.0,12.0,0.1);
>$mB=$mA*(1+&random(0.15,0.50,0.01)*&random(-1,1,2));
>$mB=&roundto($mB,1);
>$vf = ($mA*$vA + $mB*$vB)/($mA+$mB);
>$vcorrect = -($mB*$vB)/$mA;
>
>$halfwidth=20/20;
>$xoffA=-$vA*$tcollision-$halfwidth;
>$xoffB=-$vB*$tcollision+$halfwidth;
>if ($vdB == 0) {
>    $xoffA = -2*$halfwidth;
>    $xoffB = 2*$halfwidth;
>}
>
>$xA = "($xoffA
>+$vA*t)*step($tcollision-t)+step(t-$tcollision)*(-$halfwidth
>+($vf*(t-$tcollision)))";
>$xB = "($xoffB
>+($vdB*t))*step($tcollision-t)+step(t-$tcollision)*($halfwidth
>+($vf*(t-$tcollision)))";
>
></script>
><startouttext />
><web>
><script language="JavaScript">
>var timerID=0;
>var loaded=false;
>
>function initApplets(){
>         clearTimeout(timerID);
>         loaded=true;
>         timerID=setTimeout("initMomentum()",100);
>}
>
>function initMomentum(){
>         if(!loaded) return;
>
>         document.Animator.setAutoRefresh(false);
>         document.Animator.setDefault();
>         document.Animator.setPixPerUnit(20);
>         document.Animator.shiftPixOrigin(0,0);
>         document.Animator.setGridUnit(5);
>
>         ridA=document.Animator.addObject("rectangle","x=
>$xA,y=0.0,h=20,w=40");
>         document.Animator.setRGB(ridA,255,0,0);
>         ridB=document.Animator.addObject("rectangle","x=
>$xB,y=0.0,h=20,w=40");
>         document.Animator.setRGB(ridB,0,255,0);
>
>         textA=document.Animator.addObject("text","x=0,y=0,text=A");
>         textB=document.Animator.addObject("text","x=0,y=0,text=B");
>         document.Animator.setAnimationSlave(ridA,textA);
>         document.Animator.setAnimationSlave(ridB,textB);
>
>
>
>         document.Animator.setOneShot(0,$tfinal,"End of Animation");
>         document.Animator.setAutoRefresh(true);
>         document.Animator.forward();
>}
>
>function killmenow(){
>         window.onerror= function() { return true;}
>         clearTimeout(timerID);
>                 loaded=false;
>                 timerID=-1;
>}
></script>
><p align="center">
><applet vspace="0" width="600" archive="Animator4_.jar,STools4.jar"
>align="middle" name="Animator" height="160" mayscript="mayscript"
>hspace="0" code="animator4.Animator.class" codebase="../classes">
>   <param value="true" name="ShowControls" />
>   <param value="0.1" name="dt" />
>   <param value="10" name="FPS" />
>   <param value="20" name="PixPerUnit" />
>   <param value="5 name=" GridUnit"='GridUnit"' />
>   <param value="initApplets()" name="onLoad" />
></applet>
></p>
></web>
><tex>There is an applet associated with this problem which can be viewed
>online.</tex>
><p>
>The green block(B) has a mass of
><display>&prettyprint($mB,'2f')</display>kg and is moving
>to the left at a speed of
><display>&prettyprint(-($vB),'2f')</display>m/s. The red
>block (A) has a mass of <display>&prettyprint($mA,'2f')</display>kg and
>is moving
>to the right. The two blocks undergo a perfectly inelastic collision.
>What should the
>velocity of the red block be in order to have the two blocks remain at
>rest after
>the collision?
></p>
><p>When you submit an answer, the animation will show you the collision
>using the
>initial velocity you selected.</p>
><endouttext />
>
><numericalresponse answer="$vcorrect" unit="m/s" format="2f" id="11">
>       <responseparam name="tol" default="2%" description="Numerical
>Tolerance" type="tolerance" />
>       <responseparam name="sig" default="0,15" description="Significant
>Figures" type="int_range,0-16" />
>       <textline />
></numericalresponse>
><allow src="/res/ohiou/physlets/classes/*" />
></problem>
>
>
>
>
>
>On Tue, 2009-05-12 at 10:15 -0400, Robert_Brewington@er.monroe.edu
>wrote:
> > Once again, I am trying to use the powerful &EXT construct to retrieve
> > information from LonCapa. I think this is supposed to be possible, but
> > I can't guess the syntax after a couple of hours.
> >
> > The setup:
> >
> > Problem1.problem
> > <problem>
> > <part id="A">
> > <numericresponse id="answer">
> > ...
> >
> > Problem2.problem
> > <problem>
> >
> > <script>
> > $answerFromA = &EXT('user.resource.resource.A.answer.submission',
> > 'something goes here');
> > </script>
> >
> > The script line is my problem - I don't know what to put in the second
> > parameter of the EXT call, to retrieve the submitted value of
> > A.answer. I know that the enclosing map is given by
> > &EXT('resource.map'); how do I navigate to the Problem1.A.answer?
> >
> > Thanks for any clues,
> > brew
> >
> > _______________________________________________ LON-CAPA-users mailing
> > list LON-CAPA-users@mail.lon-capa.org
> > http://mail.lon-capa.org/mailman/listinfo/lon-capa-users
>
>_______________________________________________
>LON-CAPA-users mailing list
>LON-CAPA-users@mail.lon-capa.org
>http://mail.lon-capa.org/mailman/listinfo/lon-capa-users