resizeZ Library Method 
   
        Short Description: Resize to compensate Distance 
   
   
    Signature:  t.resizeZ ([z0,[z1,[z0_dest,[z1_dest]]]])   
    Group:  Light and Shadow   
    Class:  transition Class   
       
   
      Unfortunately this method is quite difficult to describe,
         although it performs quite a simple function. So we start
         with an example and a simplified (but incomplete) explanation
         (that is nevertheless sufficient for many applications) and
         give a more precise description later:
       Simplified Description 
     
         If resizeZ is called without parameters or with the z-coordinate of 
	 the current transition as parameter, 
         then it makes sure that the animated element is not resized.
	 Normally in 3D mode, an element that is moved towards the eye,
	 i.e. towards negative z-coordinates, becomes larger.
	 The perspective of taccgl™ normally is adjusted so that an HTML element
	 displayed at z=0 is not resized, while it is enlarged for  z<0
         and becomes smaller for z>0. 
       The following examples demonstrate that. The second example produces
         the same output as the first one and the third example is just for
         comparision how it looks without resizeZ.
	 
      
      taccgl.a(document.body).shadowOnly().color("black").showAfter().start();        taccgl.actor("ex1").position(100,500,-1000).resizeZ().dur(5).start();   | RUN |  
      taccgl.a(document.body).shadowOnly().color("black").showAfter().start();        taccgl.actor("ex1").position(100,500,-1000).resizeZ(-1000).dur(5).start();   | RUN |  
      taccgl.a(document.body).shadowOnly().color("black").showAfter().start();        taccgl.actor("ex1").position(100,500,-1000).dur(5).start();   | RUN |  
      
	 
      
                     It is often required to display elements at non-zero z-coordinates to get shadows
       looking nice, see posZ and Shadows in 3D HTML Pages. 
       Then resizeZ is useful to avoid resizing.
       If the element undergoes an animation using e.g. from or to
       which animates the z-coordinate, then no resizing takes place at the start
       of the animation. While the animation is playing the element grows or shrinks
       if the element moved towards or away from the viewer.
       If the argument z0 is the string "out", then no resizing takes
       place at the end of the animation. If the argument z0 is the string "both", then
       no resizing takes place at the begin and the end of the animation. 
       
       Complete  Description 
      The 3D engine itself does not know a thing like "not resizing", which is 
         just incorrect from a perspective point of view. 
         So in order to "not resize" an element resizeZ actually resizes
	 the animated element in 3D space in a way that compensates for the later
	 occurring perspective growing or shrinking:
       resizeZ resizes the element or object drawn with the transition,
	 just like resize. However, instead of getting the 
	 new size as parameter (as  resize),  resizeZ gets 
	 (in its one-argument form) a z-coordinate z0 as parameter. 
	 The element or object is resized in the 3D space, so that if it is or was displayed at 
	 z-coordinate z0 actually no resizing in the 2D space occurs.
	 In other words it grows the element so that the perspective growing of the element
	 that occurs when displayed at z-coordinate z0 is undone. 
       The z-coordinate z0 passed to resizeZ does not neccesarily 
         need to be identical to the z-position of the element. resizeZ 
	 just performs a resize in 3D space, whereby the resizing factor is
	 controlled by z0, the resize itself, however is independent
         of the position of the element.
       The argument z0 defaults to the z-coordinate of the transition. 
         If it is a motion animation then it defaults to the z-coordinate of the starting point of
         the animation. If the string "out" is passed as parameter z0 then 
         the z-coordinate of the end point of the animation is taken as value for z0.
	 
      
      taccgl.actor("ex2").from(0,1000,3000).to(300,1000,-1000).resizeZ(-1000).dur(5).start();   | RUN |  
      taccgl.a("Middle").shadowOnly().color("black").showAfter().start();           taccgl.actor("ex2").from(0,1000,3000).to(0,1000,-1000).resizeZ(-1000).dur(5).start();   | RUN |  
      taccgl.a("Middle").shadowOnly().color("black").showAfter().start();           taccgl.actor("ex2").from(0,1000,3000).to(0,1000,-1000).resizeZ("out").dur(5).start();   | RUN |  
      taccgl.a("Middle").shadowOnly().color("black").showAfter().start();           taccgl.actor("ex2").from(0,1000,3000).to(0,1000,-1000).resizeZ(3000).dur(5).start();   | RUN |  
      taccgl.a("Middle").shadowOnly().color("black").showAfter().start();           taccgl.actor("ex2").from(0,1000,3000).to(0,1000,-1000).resizeZ().dur(5).start();   | RUN |  
      
	 
      z1 
      By specifying z1 a grow or shrink animation can be performed.
       z0 gives the resize factor at the begin of the animation, and  z1
       at the end of the animation. Both factors are given in the form of z-coordinates as
       discussed above.
       If the string "both" is passed as z0 parameter and the transition
       has a motion animation, then for z0 the z-coordinate of the starting
       point of the animation is taken and for z1 the z-coordinate of the end point.
      
      taccgl.actor("ex2").resizeZ(0,-1000).dur(5).start();   | RUN |  
      taccgl.actor("ex2").resizeZ(0,1000).dur(5).start();   | RUN |  
      taccgl.a(document.body).shadowOnly().color("black").showAfter().start();        a=taccgl.actor("ex2"); a.to(a.x,a.y,-1500).dur(5).start();   | RUN |  
      taccgl.a(document.body).shadowOnly().color("black").showAfter().start();        a=taccgl.actor("ex2"); a.to(a.x,a.y,-1500).resizeZ(0,-1500).dur(5).start();   | RUN |  
      taccgl.a(document.body).shadowOnly().color("black").showAfter().start();        a=taccgl.actor("ex2"); a.to(a.x,a.y,-1500).resizeZ("both").dur(5).start();   | RUN |  
      
      As demonstrated by the last example above, this kind of resizing animation can 
       be used to compensate for the perspective growing of an element that flies 
       towards the viewer. This is a quite unnatural animation which
       however might be useful to attach a label or name tag to a 3D object,
       whereby the label or name tag does not change in size because it is not
       really part of the scene.
     
     z0_dest and z1_dest 
       resizeZ resizes the associated element or object 
	  (just as resize). The scale factor of the resize operation
	  is given using the z0 and z0_dest parameters.
	  Normally (the image) of an object grows or shrinks when moved 
          towards or away from the eye. The scale factor is determined 
          by virtually moving the element or object from z-coordinate 
          z0 to z0_dest and finding out 
	  by what factor the image would grow or shrink.
       
       If  z1 to z1_dest are different from
	z0 to z0_dest then a grow or shrink animation
	is performed. The inital scale factor is determined as described
        from  z0 and z0_dest and the final scale factor
	using  z1 and z1_dest.
       
       Default values for  z0_dest and z1_dest are 0,
          for z1 the default is z0 and for z0
            it is the (initial) z-coordinate of the transition. 
   
  
 
 
 
     
 
 
     
 
 
     
 
 
     
 
 
     
 
     
 
 
   
   
   
   
   
    WebGL™ is a trademark of the Khronos Group Inc.    
 |