#########################################################
#
#   GT2DLIB  2-Dimensional Grid Transformation LIBrary
#            2ʻҤκɸѴ
#
#########################################################

 

ܥ饤֥꡼2֡¤ӤˤѤ2κɸѴ򰷤
ɸ֤бΥŪʳʻǻꤷ֤֤롣֥르ꥺ
֤Ѥ롣ΤѴϲŪ˷׻롣Ūˤ3
֤⥵ݡȤǽ뤬ξѴȿˡˤ뤳Ȥ
ʤ롣

֤Υ֥롼ϡɸѴΤߤʤ餺̤ӤŬ褦äƤ롣

ɸѴϡ(,) -> (x,y) ˤơΥŪ _i (i=0,1,2,..),
_j (j=0,1,2,..) ˤ

      x_i,j = x(_i,_i)
      y_i,j = y(_i,_i)

ȤɽʻǤбطˤ롣äơѴ
ˤƤϡѴκɸΥǡ2Ĥ1ѴκɸΥǡ
2Ĥ2Ȥʤ롣ѴϤεդǤ롣ʤ2Ĥ2󤫤
2Ĥ2ؤбŤɸѴϡŪ1١
ֶ׳ʻҤꤹСѴѴ2ʳǹԤȤ롣
ϡŪˤϡȤʤǥȺɸϤѤ뤳Ȥ롣

 ֥롼Υꥹ

*  (BLI: bilinear interpolation)

  G2FBLI   ֤Ԥ

* 2ѿ (BL2)

  G2FBL2  2ѿ֤Ԥ
  G2IBL2  2ѿ(G2FBL2)εձ黻

   2ѿ --> 2ѿ̤˵ձ黻¸ߤ

* ɸѴ (CTR: coordinate transform) 
  ʻ֤б˴ŤɸѴ. BL2.

  G2SCTR  Ѵ ()
  G2FCTR  Ѵ
  G2ICTR  Ѵ
  G2QCTR  Ѥݤ碌. 

* ⳰Ƚ

  LG2INQ  շ⳰Ƚ

* 

  G2SGRD  ʻҥǡ
  G2QGRD  ꤷ֤Υåɥܥåʻշˤ碌
          g2sgrd, g2qgrd  C ǽ񤤤Ƥ

----------------------------------------------------------------------
* 
----------------------------------------------------------------------

 SUBROUTINE G2FBLI

1. ǽ

  . Ϻɸ (P, Q) ϤȤ [0, 1] ζ֤줿ΤȤ.

2. ƽФˡ

      CALL G2FBLI(P, Q, Z00, Z10, Z01, Z11, Z)

3. ѥ᥿

      P, Q (R)  ֤٤κɸ.  (0,0), (1,0), (1,1), (0,1) 
         Ȥʤ褦ƤΤȤ. ()

      Z00, Z10, Z01, Z11 (R)  P,Q Σ()¨줾 (P,Q) =
         (0,0), (1,0), (1,1), (0,1) ˤѿ () 

      Z (R) ַ ()

4. 

  (a) Ȥ

         Z = (1-P)*(1-Q)*Z00 + P*(1-Q)*Z10 + (1-P)*Q*Z01 + P*Q*Z11

      Ǥ(ԤΤ).

  (b) P, Q Ȥ [0,1] ζˤ, Ǥʤг
      Ȥʤ롣

  (c) ѥ᥿餫Ǥ, (P,Q) =
      (0,0), (1,0), (1,1), (0,1) ξ硢ϤϤ줾
      Z00, Z10, Z01, Z11 ʤ롣

----------------------------------------------------------------------
* 2ѿ
----------------------------------------------------------------------

 SUBROUTINE G2FBL2

1. ǽ

  2ѿƱ. Ϻɸ (P, Q) ϤȤ [0, 1] ζ֤
  줿ΤȤ.

2. ƽФˡ

      CALL G2FBL2(P,Q, X00,X10,X01,X11, Y00,Y10,Y01,Y11, X,Y)

3. ѥ᥿

      P, Q (R)  ֤٤κɸ.  (0,0), (1,0), (1,1), (0,1) 
         Ȥʤ褦ƤΤȤ. ()

      X00, X10, X01, X11 (R)  P,Q Σ()¨줾 (P,Q) =
         (0,0), (1,0), (1,1), (0,1) ˤĤѿ () 

      Y00, Y10, Y01, Y11 (R)  P,Q Σ()¨줾 (P,Q) =
         (0,0), (1,0), (1,1), (0,1) ˤĤѿ () 

      X (R) X00, X10, X01, X11 ˴ؤַ ()

      Y (R) Y00, Y10, Y01, Y11 ˴ؤַ ()

4. 

  (a) G2FBLI 2ƤǤǤ롣ä

         X = (1-P)*(1-Q)*X00 + P*(1-Q)*X10 + (1-P)*Q*X01 + P*Q*X11
         Y = (1-P)*(1-Q)*Y00 + P*(1-Q)*Y10 + (1-P)*Q*Y01 + P*Q*Y11

  (b) 2ѿ2ѿؤѴǤ뤫Ѵ¸ߤ롣
      ѴԤ֥롼 G2IBL2 Ǥ롣

 SUBROUTINE G2IBL2

1. ǽ

  G2FBL2 (2ѿƱ) εѴ. ϲǤ.

2. ƽФˡ

      CALL G2IBL2(X,Y, X00,X10,X01,X11, Y00,Y10,Y01,Y11, P,Q)

3. ѥ᥿

      X,Y, X00,X10,X01,X11, Y00,Y10,Y01,Y11 (R) ()

      P, Q (R) ()

      줾 G2FBL2 򻲾ȤΤ.

4. 

   (a) ϢΩŪ˲. (¼Ūˣˤʤ
       ¿ξʬޤ)

----------------------------------------------------------------------
* ɸѴ
----------------------------------------------------------------------

 SUBROUTINE G2SCTR

1. ǽ

  2κɸѴ(). ʻ֤б.

2. ƽФˡ

      CALL G2SCTR(NX, NY, UXA,UYA, TXA,TYA)

3. ѥ᥿

      NX, NY (R) Ĺ ()

      UXA (R) Ѵκɸ (Ωѿ1). Ĺ NX 1 ().

      UYA (R) Ѵκɸ (Ωѿ2). Ĺ NY 1 ().

      TXA (R) Ѵκɸ (Ωѿ1). Ĺ NX*NY2 ().
              1(TX(1,1)) RUNDEF Ȥ뤳ȤǾάǤ. άξ, 
              TX(I,J)=UX(I) Ѥ.
      TYA (R) Ѵκɸ (Ωѿ2). Ĺ NX*NY2 ().
              1(TY(1,1)) RUNDEF Ȥ뤳ȤǾάǤ. άξ, 
              TY(I,J)=UY(J) Ѥ.

4. 

  (a) 2 (TXA,TYA) Υ֤ϡC ǽ񤫤줿δؿԤ
      ưŪƤˤ뤿ᡢ¤ʤ켡 UXA,
      UYA Ū˳ݤ줿֥롼˥֤롣
      Ĺ GRPH2  UWPACK Ʊ͡ѥѹǽ 
      MAXNGRID Ǥ롣ǥեĹ 4000

 SUBROUTINE G2FCTR  

1. ǽ

  2κɸѴԤ.


2. ƽФˡ

      CALL G2FCTR(UX, UY, TX, TY)

3. ѥ᥿

      UX (R) Ѵκɸʤ1 ()
      UY (R) Ѵκɸʤ2 ()
      TX (R) Ѵκɸʤ1 ()
      TY (R) Ѵκɸʤ2 ()

4. 

  (a) ͽ G2SCTR ǽƤʤȥ顼ȯ롣

  (b) G2SCTR ꤷ UXA, UYA ϰϳϤФƤϡ
      ٹФĤġޤԤ

 SUBROUTINE G2ICTR  

1. ǽ

  G2FCTR (2κɸѴ) εѴԤ.

2. ƽФˡ

      CALL G2ICTR(TX, TY, UX, UY)

3. ѥ᥿

      TX (R) Ѵκɸʤ1 ()
      TY (R) Ѵκɸʤ2 ()
      UX (R) Ѵκɸʤ1 ()
      UY (R) Ѵκɸʤ2 ()

4. 

  (a) ͽ G2SCTR ǽƤʤȥ顼ȯ롣

  (b) G2SCTR ꤷ TXA, TYA ϰϳϤФƤϡ
      顼ȯ롣

 SUBROUTINE G2QCTR  

1. ǽ

  Ѥݤ碌.
  ʤ G2FCTR, G2ICTR Ƥ٤Х顼Ǥ褦ˤʤäƤ
  ǡ碌ɬܤǤϤʤ

2. ƽФˡ

      CALL G2QCTR(LINIT)

3. ѥ᥿

      LINIT (L) Ѥʤ .TRUE. ޤʤ .FALSE. ֤()

4. 

  (a) G2SCTR ˸ƤФƤ .TRUE. 

----------------------------------------------------------------------
* ⳰Ƚ
----------------------------------------------------------------------

 FUNCTION LG2INQ

1. ǽ

  շ¦ˤ뤫Ƚꤹ롣̻շꡣ

2. ƽФˡ

      LIN = LG2INQ(TX,TY, TX00,TX10,TX01,TX11, TY00,TY10,TY01,TY11)

3. ѥ᥿

      TX,TY (R) Ƚꤹ٤κɸ ()

      TX00,TX10,TX01,TX11, TY00,TY10,TY01,TY11 (R) շ4κɸ ()

       (L) ¦ޤ϶ˤ .TRUE. ¦ʤ .FALSE. ֤.

4. 

  (a) G2ICTR ȤѤ롣

  (b) շˤбƤʤɸѴˤƤϡ
      շ¿ΤѴˤʤ¿ξϡ
      ѴϤ⤽դ˷ޤʤΤǡѲͤ㤤
      ŪˤϡշбƤ褤

----------------------------------------------------------------------
* 
----------------------------------------------------------------------

 FUNCTION G2SGRD, FUNCTION G2QGRD

G2SCTR βǤꡢưŪݤΤ C ǽ񤫤Ƥ롣ʳ
ΩʴؿȤ٤ͳϤʤΤϳ䰦롣

