Hex Artifact Content
Not logged in

Artifact bff79bab8278f58ca47e57ac8def3ee30835f383:

Wiki page [Affine Transform] by sandro 2015-05-04 17:07:31.
0000: 44 20 32 30 31 35 2d 30 35 2d 30 34 54 31 37 3a  D 2015-05-04T17:
0010: 30 37 3a 33 31 2e 39 33 32 0a 4c 20 41 66 66 69  07:31.932.L Affi
0020: 6e 65 5c 73 54 72 61 6e 73 66 6f 72 6d 0a 50 20  ne\sTransform.P 
0030: 31 64 61 63 31 38 65 38 63 38 61 30 30 63 61 31  1dac18e8c8a00ca1
0040: 61 61 32 35 32 39 37 64 32 35 63 63 35 38 39 65  aa25297d25cc589e
0050: 65 39 38 64 37 61 37 36 0a 55 20 73 61 6e 64 72  e98d7a76.U sandr
0060: 6f 0a 57 20 33 36 39 33 35 0a 3c 61 20 68 72 65  o.W 36935.<a hre
0070: 66 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67  f="https://www.g
0080: 61 69 61 2d 67 69 73 2e 69 74 2f 66 6f 73 73 69  aia-gis.it/fossi
0090: 6c 2f 6c 69 62 73 70 61 74 69 61 6c 69 74 65 2f  l/libspatialite/
00a0: 77 69 6b 69 3f 6e 61 6d 65 3d 34 2e 32 2e 30 2d  wiki?name=4.2.0-
00b0: 64 6f 63 22 3e 62 61 63 6b 3c 2f 61 3e 0d 0a 3c  doc">back</a>..<
00c0: 68 32 3e 41 66 66 69 6e 65 20 54 72 61 6e 73 66  h2>Affine Transf
00d0: 6f 72 6d 61 74 69 6f 6e 73 3c 2f 68 32 3e 0d 0a  ormations</h2>..
00e0: 53 74 61 72 74 69 6e 67 20 73 69 6e 63 65 20 76  Starting since v
00f0: 65 72 73 69 6f 6e 20 3c 62 3e 34 2e 33 2e 30 3c  ersion <b>4.3.0<
0100: 2f 62 3e 20 53 70 61 74 69 61 4c 69 74 65 20 73  /b> SpatiaLite s
0110: 75 70 70 6f 72 74 73 20 73 65 76 65 72 61 6c 20  upports several 
0120: 6e 65 77 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  new SQL function
0130: 73 20 62 61 73 65 64 20 6f 6e 20 3c 61 20 68 72  s based on <a hr
0140: 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69  ef="http://en.wi
0150: 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69  kipedia.org/wiki
0160: 2f 41 66 66 69 6e 65 5f 74 72 61 6e 73 66 6f 72  /Affine_transfor
0170: 6d 61 74 69 6f 6e 22 3e 61 66 66 69 6e 65 20 74  mation">affine t
0180: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 3c 2f  ransformations</
0190: 61 3e 2c 3c 62 72 3e 0d 0a 55 6e 64 65 72 73 74  a>,<br>..Underst
01a0: 61 6e 64 69 6e 67 20 61 6e 64 20 6d 61 73 74 65  anding and maste
01b0: 72 69 6e 67 20 61 6c 6c 20 74 68 65 20 75 6e 64  ring all the und
01c0: 65 72 6c 61 79 69 6e 67 20 6d 61 74 68 65 6d 61  erlaying mathema
01d0: 74 69 63 73 20 63 6f 75 6c 64 20 65 61 73 69 6c  tics could easil
01e0: 79 20 62 65 20 61 20 72 61 74 68 65 72 20 64 69  y be a rather di
01f0: 66 66 69 63 75 6c 74 20 74 61 73 6b 2c 20 6d 6f  fficult task, mo
0200: 72 65 20 6e 6f 74 61 62 6c 79 20 69 66 20 79 6f  re notably if yo
0210: 75 20 68 61 76 65 20 61 62 73 6f 6c 75 74 65 6c  u have absolutel
0220: 79 20 6e 6f 20 66 61 6d 69 6c 69 61 72 69 74 79  y no familiarity
0230: 20 77 69 74 68 20 74 68 69 73 20 6b 69 6e 64 20   with this kind 
0240: 6f 66 20 6f 70 65 72 61 74 69 6f 6e 73 2e 3c 62  of operations.<b
0250: 72 3e 0d 0a 53 6f 20 77 65 27 6c 6c 20 73 74 61  r>..So we'll sta
0260: 72 74 20 73 6c 6f 77 6c 79 20 61 6e 64 20 73 6d  rt slowly and sm
0270: 6f 6f 74 68 6c 79 20 62 79 20 69 6e 74 72 6f 64  oothly by introd
0280: 75 63 69 6e 67 20 66 69 72 73 74 20 61 20 76 65  ucing first a ve
0290: 72 79 20 73 69 6d 70 6c 65 20 70 72 61 63 74 69  ry simple practi
02a0: 63 61 6c 20 65 78 61 6d 70 6c 65 20 62 61 73 65  cal example base
02b0: 64 20 6f 6e 20 6b 69 6e 64 20 6f 66 20 61 20 6a  d on kind of a j
02c0: 6f 6b 65 20 61 62 6f 75 74 20 74 68 65 20 67 65  oke about the ge
02d0: 6f 67 72 61 70 68 79 20 6f 66 20 49 74 61 6c 79  ography of Italy
02e0: 20 61 6e 64 20 53 69 63 69 6c 79 2e 0d 0a 3c 68   and Sicily...<h
02f0: 32 3e 46 61 6e 63 79 20 47 65 6f 67 72 61 70 68  2>Fancy Geograph
0300: 79 20 61 6e 64 20 61 6d 75 73 69 6e 67 20 4d 61  y and amusing Ma
0310: 74 68 3c 2f 68 32 3e 0d 0a 3c 74 61 62 6c 65 20  th</h2>..<table 
0320: 62 6f 72 64 65 72 3d 22 31 22 20 63 65 6c 6c 73  border="1" cells
0330: 70 61 63 69 6e 67 3d 22 34 22 20 63 65 6c 6c 70  pacing="4" cellp
0340: 61 64 64 69 6e 67 3d 22 38 22 3e 0d 0a 3c 74 72  adding="8">..<tr
0350: 3e 3c 74 64 3e 0d 0a 3c 68 33 3e 50 72 65 66 61  ><td>..<h3>Prefa
0360: 63 65 3c 2f 68 33 3e 0d 0a 4c 6f 6f 6b 20 61 74  ce</h3>..Look at
0370: 20 61 20 6d 61 70 20 6f 66 20 49 74 61 6c 79 3b   a map of Italy;
0380: 20 69 74 20 61 70 70 65 61 72 73 20 6f 62 76 69   it appears obvi
0390: 6f 75 73 20 61 74 20 66 69 72 73 74 20 67 6c 61  ous at first gla
03a0: 6e 63 65 20 74 68 61 74 20 53 69 63 69 6c 79 20  nce that Sicily 
03b0: 69 73 20 6c 6f 63 61 74 65 64 20 69 6e 20 61 20  is located in a 
03c0: 76 65 72 79 20 69 6e 63 6f 6e 76 65 6e 69 65 6e  very inconvenien
03d0: 74 20 70 6f 73 69 74 69 6f 6e 3a 0d 0a 3c 6f 6c  t position:..<ol
03e0: 3e 0d 0a 3c 6c 69 3e 53 69 63 69 6c 79 20 69 73  >..<li>Sicily is
03f0: 20 70 6c 61 63 65 64 20 74 6f 6f 20 66 61 72 20   placed too far 
0400: 53 6f 75 74 68 20 61 6e 64 20 74 6f 6f 20 6d 75  South and too mu
0410: 63 68 20 63 6c 6f 73 65 20 74 6f 20 4e 6f 72 74  ch close to Nort
0420: 68 20 41 66 72 69 63 61 3b 20 74 68 69 73 20 69  h Africa; this i
0430: 6d 70 6c 69 65 73 20 61 6e 20 75 6e 70 6c 65 61  mplies an unplea
0440: 73 61 6e 74 20 74 6f 72 72 69 64 20 73 75 6d 6d  sant torrid summ
0450: 65 72 2c 20 61 6e 64 20 74 68 69 73 20 6c 61 74  er, and this lat
0460: 65 72 20 70 6f 73 65 73 20 69 6e 20 74 75 72 6e  er poses in turn
0470: 20 6d 61 6e 79 20 73 65 76 65 72 65 20 6c 69 6d   many severe lim
0480: 69 74 61 74 69 6f 6e 73 20 74 6f 20 61 67 72 69  itations to agri
0490: 63 75 6c 74 75 72 61 6c 20 61 63 74 69 76 69 74  cultural activit
04a0: 69 65 73 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 54  ies.</li>..<li>T
04b0: 68 65 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70  he <a href="http
04c0: 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e  ://en.wikipedia.
04d0: 6f 72 67 2f 77 69 6b 69 2f 53 74 72 61 69 74 5f  org/wiki/Strait_
04e0: 6f 66 5f 4d 65 73 73 69 6e 61 22 3e 53 74 72 61  of_Messina">Stra
04f0: 69 74 20 6f 66 20 4d 65 73 73 69 6e 61 3c 2f 61  it of Messina</a
0500: 3e 20 69 73 20 65 78 61 67 67 65 72 61 74 65 64  > is exaggerated
0510: 6c 79 20 6e 61 72 72 6f 77 2c 20 74 68 75 73 20  ly narrow, thus 
0520: 70 6f 73 69 6e 67 20 73 65 76 65 72 65 20 73 65  posing severe se
0530: 63 75 72 69 74 79 20 72 69 73 6b 73 20 74 6f 20  curity risks to 
0540: 74 68 65 20 6e 61 76 69 67 61 74 69 6f 6e 20 6f  the navigation o
0550: 66 20 63 61 70 69 74 61 6c 20 73 68 69 70 73 2c  f capital ships,
0560: 20 62 69 67 20 63 6f 6e 74 61 69 6e 65 72 20 73   big container s
0570: 68 69 70 73 2c 20 63 72 75 69 73 65 20 6c 69 6e  hips, cruise lin
0580: 65 72 73 20 61 6e 64 20 73 75 70 65 72 74 61 6e  ers and supertan
0590: 6b 65 72 73 2e 3c 62 72 3e 0d 0a 45 76 65 6e 20  kers.<br>..Even 
05a0: 77 6f 72 73 74 2c 20 66 72 6f 6d 20 74 69 6d 65  worst, from time
05b0: 20 74 6f 20 74 69 6d 65 20 73 6f 6d 65 20 63 72   to time some cr
05c0: 61 7a 79 20 70 6f 6c 69 74 69 63 69 61 6e 20 73  azy politician s
05d0: 74 61 72 74 73 20 73 74 72 6f 6e 67 6c 79 20 61  tarts strongly a
05e0: 64 76 6f 63 61 74 69 6e 67 20 74 68 65 20 76 65  dvocating the ve
05f0: 72 79 20 73 74 75 70 69 64 20 69 64 65 61 20 74  ry stupid idea t
0600: 6f 20 62 75 69 6c 64 20 61 6e 20 69 6e 63 72 65  o build an incre
0610: 64 69 62 6c 79 20 63 6f 73 74 6c 79 20 3c 61 20  dibly costly <a 
0620: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e  href="http://en.
0630: 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69  wikipedia.org/wi
0640: 6b 69 2f 53 74 72 61 69 74 5f 6f 66 5f 4d 65 73  ki/Strait_of_Mes
0650: 73 69 6e 61 5f 42 72 69 64 67 65 22 3e 62 72 69  sina_Bridge">bri
0660: 64 67 65 20 63 72 6f 73 73 69 6e 67 20 74 68 65  dge crossing the
0670: 20 53 74 72 61 69 74 3c 2f 61 3e 2c 20 63 6f 6d   Strait</a>, com
0680: 70 6c 65 74 65 6c 79 20 6f 76 65 72 6c 6f 6f 6b  pletely overlook
0690: 69 6e 67 20 74 68 65 20 76 65 72 79 20 68 69 67  ing the very hig
06a0: 68 20 73 65 69 73 6d 69 63 20 72 69 73 6b 20 6f  h seismic risk o
06b0: 66 20 74 68 69 73 20 64 69 73 74 72 69 63 74 20  f this district 
06c0: 61 6e 64 20 70 75 72 70 6f 73 65 6c 79 20 66 6f  and purposely fo
06d0: 72 67 65 74 74 69 6e 67 20 74 6f 20 72 65 6d 65  rgetting to reme
06e0: 6d 62 65 72 20 74 68 61 74 20 69 6e 20 31 39 30  mber that in 190
06f0: 38 20 62 6f 74 68 20 74 6f 77 6e 73 20 6f 66 20  8 both towns of 
0700: 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f  <a href="http://
0710: 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67  en.wikipedia.org
0720: 2f 77 69 6b 69 2f 31 39 30 38 5f 4d 65 73 73 69  /wiki/1908_Messi
0730: 6e 61 5f 65 61 72 74 68 71 75 61 6b 65 22 3e 4d  na_earthquake">M
0740: 65 73 73 69 6e 61 20 61 6e 64 20 52 65 67 67 69  essina and Reggi
0750: 6f 20 43 61 6c 61 62 72 69 61 3c 2f 61 3e 20 77  o Calabria</a> w
0760: 65 72 65 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64  ere completely d
0770: 65 73 74 72 6f 79 65 64 20 62 79 20 61 6e 20 65  estroyed by an e
0780: 61 72 74 68 71 75 61 6b 65 20 66 6f 6c 6c 6f 77  arthquake follow
0790: 65 64 20 62 79 20 61 20 74 73 75 6e 61 6d 69 2e  ed by a tsunami.
07a0: 3c 62 72 3e 0d 0a 4d 6f 72 65 20 74 68 61 6e 20  <br>..More than 
07b0: 31 32 30 2c 30 30 30 20 70 65 6f 70 6c 65 73 20  120,000 peoples 
07c0: 6c 6f 73 74 20 74 68 65 69 72 20 6c 69 76 65 73  lost their lives
07d0: 2c 20 61 6e 64 20 69 74 20 77 61 73 20 6f 6e 65  , and it was one
07e0: 20 6f 66 20 74 68 65 20 6d 6f 73 74 20 66 72 69   of the most fri
07f0: 67 68 74 65 6e 69 6e 67 20 6e 61 74 75 72 61 6c  ghtening natural
0800: 20 64 69 73 61 73 74 65 72 73 20 72 65 67 69 73   disasters regis
0810: 74 65 72 65 64 20 69 6e 20 45 75 72 6f 70 65 20  tered in Europe 
0820: 64 75 72 69 6e 67 20 6d 6f 64 65 72 6e 20 74 69  during modern ti
0830: 6d 65 73 2e 3c 2f 6c 69 3e 0d 0a 3c 2f 6f 6c 3e  mes.</li>..</ol>
0840: 0d 0a 53 6f 20 77 65 27 6c 6c 20 69 6d 6d 65 64  ..So we'll immed
0850: 69 61 74 65 6c 79 20 73 74 61 72 74 20 61 20 74  iately start a t
0860: 68 65 6f 72 65 74 69 63 61 6c 20 63 61 73 65 20  heoretical case 
0870: 73 74 75 64 79 20 69 6e 74 65 6e 64 65 64 20 74  study intended t
0880: 6f 20 69 64 65 6e 74 69 66 79 20 61 20 70 6f 73  o identify a pos
0890: 73 69 62 6c 65 20 61 6c 74 65 72 6e 61 74 69 76  sible alternativ
08a0: 65 20 6c 6f 63 61 74 69 6f 6e 20 66 6f 72 20 53  e location for S
08b0: 69 63 69 6c 79 2e 3c 62 72 3e 0d 0a 49 6e 63 69  icily.<br>..Inci
08c0: 64 65 6e 74 61 6c 6c 79 20 77 65 27 6c 6c 20 75  dentally we'll u
08d0: 73 65 20 74 68 65 20 6e 65 77 20 53 51 4c 20 66  se the new SQL f
08e0: 75 6e 63 74 69 6f 6e 73 20 62 61 73 65 64 20 6f  unctions based o
08f0: 6e 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f  n Affine Transfo
0900: 72 6d 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 69  rmations for thi
0910: 73 20 74 61 73 6b 2e 3c 62 72 3e 0d 0a 4c 65 74  s task.<br>..Let
0920: 27 73 20 67 6f 20 6f 6e 2e 20 20 0d 0a 3c 2f 74  's go on.  ..</t
0930: 64 3e 3c 74 64 3e 0d 0a 3c 69 6d 67 20 73 72 63  d><td>..<img src
0940: 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 61  ="https://www.ga
0950: 69 61 2d 67 69 73 2e 69 74 2f 67 61 69 61 2d 73  ia-gis.it/gaia-s
0960: 69 6e 73 2f 61 66 66 69 6e 65 2d 70 69 63 73 2f  ins/affine-pics/
0970: 73 69 63 69 6c 79 5f 30 2e 70 6e 67 22 20 61 6c  sicily_0.png" al
0980: 74 3d 22 73 69 63 69 6c 79 2d 30 22 20 62 6f 72  t="sicily-0" bor
0990: 64 65 72 3d 22 31 22 3e 0d 0a 3c 2f 74 64 3e 3c  der="1">..</td><
09a0: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 0d 0a  /tr>..<tr><td>..
09b0: 3c 68 33 3e 53 74 65 70 20 23 31 3a 20 74 72 61  <h3>Step #1: tra
09c0: 6e 73 6c 61 74 69 6e 67 20 53 69 63 69 6c 79 20  nslating Sicily 
09d0: 69 6e 74 6f 20 61 20 6d 6f 72 65 20 63 6f 6e 76  into a more conv
09e0: 65 6e 69 65 6e 74 20 70 6f 73 69 74 69 6f 6e 3c  enient position<
09f0: 2f 68 33 3e 0d 0a 54 68 65 72 65 20 69 73 20 70  /h3>..There is p
0a00: 6c 65 6e 74 79 20 6f 66 20 66 72 65 65 20 72 6f  lenty of free ro
0a10: 6f 6d 20 69 6e 20 74 68 65 20 4c 6f 77 65 72 20  om in the Lower 
0a20: 54 79 72 72 68 65 6e 69 61 6e 20 53 65 61 2c 20  Tyrrhenian Sea, 
0a30: 73 6f 20 77 65 27 6c 6c 20 73 74 61 72 74 20 62  so we'll start b
0a40: 79 20 61 70 70 6c 79 69 6e 67 20 61 20 3c 61 20  y applying a <a 
0a50: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e  href="http://en.
0a60: 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69  wikipedia.org/wi
0a70: 6b 69 2f 54 72 61 6e 73 6c 61 74 69 6f 6e 5f 25  ki/Translation_%
0a80: 32 38 67 65 6f 6d 65 74 72 79 25 32 39 22 3e 74  28geometry%29">t
0a90: 72 61 6e 73 6c 61 74 69 6f 6e 3c 2f 61 3e 20 74  ranslation</a> t
0aa0: 6f 20 53 69 63 69 6c 79 3a 20 74 68 69 73 20 70  o Sicily: this p
0ab0: 72 61 63 74 69 63 61 6c 6c 79 20 6d 65 61 6e 73  ractically means
0ac0: 20 61 64 64 69 6e 67 20 28 6f 72 20 73 75 62 74   adding (or subt
0ad0: 72 61 63 74 69 6e 67 29 20 61 20 63 6f 6e 73 74  racting) a const
0ae0: 61 6e 74 20 76 61 6c 75 65 20 74 6f 20 74 68 65  ant value to the
0af0: 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 6f 6e 20   coordinates on 
0b00: 62 6f 74 68 20 3c 62 3e 78 3c 2f 62 3e 20 61 6e  both <b>x</b> an
0b10: 64 20 3c 62 3e 79 3c 2f 62 3e 20 61 78 65 73 2e  d <b>y</b> axes.
0b20: 3c 62 72 3e 0d 0a 41 66 74 65 72 20 61 20 76 65  <br>..After a ve
0b30: 72 79 20 71 75 69 63 6b 20 65 78 61 6d 69 6e 61  ry quick examina
0b40: 74 69 6f 6e 20 6d 6f 76 69 6e 67 20 53 69 63 69  tion moving Sici
0b50: 6c 79 20 3c 62 3e 31 35 30 20 6b 6d 3c 2f 62 3e  ly <b>150 km</b>
0b60: 20 28 69 2e 65 2e 20 3c 62 3e 31 35 30 2c 30 30   (i.e. <b>150,00
0b70: 30 20 6d 3c 2f 62 3e 29 20 77 65 73 74 77 61 72  0 m</b>) westwar
0b80: 64 20 61 6e 64 20 3c 62 3e 31 35 30 20 6b 6d 3c  d and <b>150 km<
0b90: 2f 62 3e 20 6e 6f 72 74 68 77 61 72 64 20 73 65  /b> northward se
0ba0: 65 6d 73 20 74 6f 20 62 65 20 61 6e 20 61 62 73  ems to be an abs
0bb0: 6f 6c 75 74 65 6c 79 20 72 65 61 73 6f 6e 61 62  olutely reasonab
0bc0: 6c 65 20 63 68 6f 69 63 65 2e 3c 62 72 3e 0d 0a  le choice.<br>..
0bd0: 53 6f 20 75 73 69 6e 67 20 74 68 65 20 41 66 66  So using the Aff
0be0: 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69  ine Transformati
0bf0: 6f 6e 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  on SQL functions
0c00: 20 77 65 27 6c 6c 20 64 75 6c 79 20 65 78 65 63   we'll duly exec
0c10: 75 74 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  ute the followin
0c20: 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 3a  g SQL statement:
0c30: 0d 0a 3c 76 65 72 62 61 74 69 6d 3e 0d 0a 43 52  ..<verbatim>..CR
0c40: 45 41 54 45 20 54 41 42 4c 45 20 73 69 63 69 6c  EATE TABLE sicil
0c50: 69 61 5f 31 20 41 53 0d 0a 53 45 4c 45 43 54 20  ia_1 AS..SELECT 
0c60: 63 6f 64 5f 72 65 67 2c 20 0d 0a 20 20 20 41 54  cod_reg, ..   AT
0c70: 4d 5f 54 72 61 6e 73 66 6f 72 6d 28 67 65 6f 6d  M_Transform(geom
0c80: 65 74 72 79 2c 0d 0a 20 20 20 20 20 20 41 54 4d  etry,..      ATM
0c90: 5f 43 72 65 61 74 65 54 72 61 6e 73 6c 61 74 65  _CreateTranslate
0ca0: 28 2d 31 35 30 30 30 30 2c 20 31 35 30 30 30 30  (-150000, 150000
0cb0: 29 29 20 41 53 20 67 65 6f 6d 0d 0a 46 52 4f 4d  )) AS geom..FROM
0cc0: 20 73 69 63 69 6c 69 61 5f 30 3b 0d 0a 53 45 4c   sicilia_0;..SEL
0cd0: 45 43 54 20 52 65 63 6f 76 65 72 47 65 6f 6d 65  ECT RecoverGeome
0ce0: 74 72 79 43 6f 6c 75 6d 6e 28 27 73 69 63 69 6c  tryColumn('sicil
0cf0: 69 61 5f 31 27 2c 20 27 67 65 6f 6d 27 2c 20 33  ia_1', 'geom', 3
0d00: 32 36 33 32 2c 20 27 4d 55 4c 54 49 50 4f 4c 59  2632, 'MULTIPOLY
0d10: 47 4f 4e 27 2c 20 27 58 59 27 29 3b 0d 0a 3c 2f  GON', 'XY');..</
0d20: 76 65 72 62 61 74 69 6d 3e 20 0d 0a 3c 62 3e 52  verbatim> ..<b>R
0d30: 65 6d 61 72 6b 73 3c 2f 62 3e 3a 0d 0a 3c 75 6c  emarks</b>:..<ul
0d40: 3e 0d 0a 3c 6c 69 3e 61 6c 6c 20 61 66 66 69 6e  >..<li>all affin
0d50: 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e  e transformation
0d60: 20 72 65 6c 61 74 65 64 20 53 51 4c 20 66 75 6e   related SQL fun
0d70: 63 74 69 6f 6e 20 6e 61 6d 65 73 20 73 74 61 72  ction names star
0d80: 74 20 77 69 74 68 20 61 6e 20 3c 62 3e 41 54 4d  t with an <b>ATM
0d90: 5f 3c 2f 62 3e 20 70 72 65 66 69 78 3a 20 74 68  _</b> prefix: th
0da0: 69 73 20 73 69 6d 70 6c 79 20 73 74 61 6e 64 73  is simply stands
0db0: 20 66 6f 72 20 3c 69 3e 3c 62 3e 3c 75 3e 41 3c   for <i><b><u>A<
0dc0: 2f 75 3e 3c 2f 62 3e 66 66 69 6e 65 20 3c 62 3e  /u></b>ffine <b>
0dd0: 3c 75 3e 54 3c 2f 75 3e 3c 2f 62 3e 72 61 6e 73  <u>T</u></b>rans
0de0: 66 6f 72 6d 61 74 69 6f 6e 20 3c 62 3e 3c 75 3e  formation <b><u>
0df0: 4d 3c 2f 75 3e 3c 2f 62 3e 61 74 72 69 78 3c 2f  M</u></b>atrix</
0e00: 69 3e 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 3c 62  i>.</li>..<li><b
0e10: 3e 41 54 4d 5f 54 72 61 6e 73 66 6f 72 6d 28 29  >ATM_Transform()
0e20: 3c 2f 62 3e 20 69 73 20 76 65 72 79 20 73 69 6d  </b> is very sim
0e30: 69 6c 61 72 20 74 6f 20 3c 62 3e 53 54 5f 54 72  ilar to <b>ST_Tr
0e40: 61 6e 73 66 6f 72 6d 28 29 3c 2f 62 3e 3b 20 74  ansform()</b>; t
0e50: 68 65 20 6d 6f 73 74 20 6f 62 76 69 6f 75 73 20  he most obvious 
0e60: 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 69 6e  difference is in
0e70: 20 74 68 61 74 20 61 6c 6c 20 74 72 61 6e 73 66   that all transf
0e80: 6f 72 6d 61 74 69 6f 6e 20 61 72 67 75 6d 65 6e  ormation argumen
0e90: 74 73 20 61 72 65 20 6e 6f 77 20 65 78 70 65 63  ts are now expec
0ea0: 74 65 64 20 74 6f 20 62 65 20 70 61 73 73 65 64  ted to be passed
0eb0: 20 75 6e 64 65 72 20 74 68 65 20 66 6f 72 6d 20   under the form 
0ec0: 6f 66 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74  of an appropriat
0ed0: 65 20 3c 62 3e 42 4c 4f 42 2d 73 65 72 69 61 6c  e <b>BLOB-serial
0ee0: 69 7a 65 64 3c 2f 62 3e 20 41 66 66 69 6e 65 20  ized</b> Affine 
0ef0: 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d  Transformation M
0f00: 61 74 72 69 78 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69  atrix.</li>..<li
0f10: 3e 3c 62 3e 41 54 4d 5f 43 72 65 61 74 65 54 72  ><b>ATM_CreateTr
0f20: 61 6e 73 6c 61 74 65 28 29 3c 2f 62 3e 20 73 69  anslate()</b> si
0f30: 6d 70 6c 79 20 69 73 20 61 6e 20 53 51 4c 20 66  mply is an SQL f
0f40: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 69 6e  unction returnin
0f50: 67 20 61 20 3c 62 3e 42 4c 4f 42 2d 73 65 72 69  g a <b>BLOB-seri
0f60: 61 6c 69 7a 65 64 3c 2f 62 3e 20 41 66 66 69 6e  alized</b> Affin
0f70: 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e  e Transformation
0f80: 20 4d 61 74 72 69 78 20 69 6e 69 74 69 61 6c 69   Matrix initiali
0f90: 7a 65 64 20 69 6e 20 73 75 63 68 20 61 20 77 61  zed in such a wa
0fa0: 79 20 74 6f 20 72 65 70 72 65 73 65 6e 74 20 61  y to represent a
0fb0: 20 73 69 6d 70 6c 65 20 3c 62 3e 32 44 20 54 72   simple <b>2D Tr
0fc0: 61 6e 73 6c 61 74 65 3c 2f 62 3e 20 61 63 63 6f  anslate</b> acco
0fd0: 72 64 69 6e 67 6c 79 20 74 6f 20 3c 62 3e 28 74  rdingly to <b>(t
0fe0: 78 2c 20 74 79 29 3c 2f 62 3e 20 61 72 67 75 6d  x, ty)</b> argum
0ff0: 65 6e 74 73 2e 3c 62 72 3e 0d 0a 59 6f 75 20 63  ents.<br>..You c
1000: 6f 75 6c 64 20 65 76 65 6e 74 75 61 6c 6c 79 20  ould eventually 
1010: 64 65 66 69 6e 65 20 61 20 63 6f 6d 70 6c 65 74  define a complet
1020: 65 20 3c 62 3e 33 44 20 54 72 61 6e 73 6c 61 74  e <b>3D Translat
1030: 65 3c 2f 62 3e 20 62 79 20 70 61 73 73 69 6e 67  e</b> by passing
1040: 20 3c 62 3e 28 74 78 2c 20 74 79 2c 20 74 7a 29   <b>(tx, ty, tz)
1050: 3c 2f 62 3e 20 61 72 67 75 6d 65 6e 74 73 2c 20  </b> arguments, 
1060: 62 75 74 20 74 68 69 73 20 69 73 6e 27 74 20 73  but this isn't s
1070: 74 72 69 63 74 6c 79 20 72 65 71 75 69 72 65 64  trictly required
1080: 20 69 6e 20 6f 75 72 20 63 75 72 72 65 6e 74 20   in our current 
1090: 65 78 61 6d 70 6c 65 2e 0d 0a 3c 2f 75 6c 3e 0d  example...</ul>.
10a0: 0a 3c 2f 74 64 3e 3c 74 64 3e 0d 0a 3c 69 6d 67  .</td><td>..<img
10b0: 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 77 77   src="https://ww
10c0: 77 2e 67 61 69 61 2d 67 69 73 2e 69 74 2f 67 61  w.gaia-gis.it/ga
10d0: 69 61 2d 73 69 6e 73 2f 61 66 66 69 6e 65 2d 70  ia-sins/affine-p
10e0: 69 63 73 2f 73 69 63 69 6c 79 5f 31 2e 70 6e 67  ics/sicily_1.png
10f0: 22 20 61 6c 74 3d 22 73 69 63 69 6c 69 61 2d 31  " alt="sicilia-1
1100: 22 20 62 6f 72 64 65 72 3d 22 31 22 3e 0d 0a 3c  " border="1">..<
1110: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c  /td></tr>..<tr><
1120: 74 64 3e 0d 0a 3c 68 33 3e 53 74 65 70 20 23 32  td>..<h3>Step #2
1130: 3a 20 72 6f 74 61 74 69 6e 67 20 53 69 63 69 6c  : rotating Sicil
1140: 79 20 73 6f 20 74 6f 20 67 65 74 20 61 20 6e 69  y so to get a ni
1150: 63 65 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 61 6c  ce horizontal al
1160: 69 67 6e 6d 65 6e 74 3c 2f 68 33 3e 0d 0a 41 6c  ignment</h3>..Al
1170: 69 67 6e 69 6e 67 20 74 68 65 20 73 6f 75 74 68  igning the south
1180: 65 72 6e 20 73 68 6f 72 65 73 20 6f 66 20 53 69  ern shores of Si
1190: 63 69 6c 79 20 74 6f 20 61 6e 20 61 6c 6d 6f 73  cily to an almos
11a0: 74 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 6c 69 6e  t horizontal lin
11b0: 65 20 77 69 6c 6c 20 73 75 72 65 6c 79 20 6c 65  e will surely le
11c0: 61 64 20 74 6f 20 61 20 6d 6f 72 65 20 6e 69 63  ad to a more nic
11d0: 65 6c 79 20 6f 72 64 65 72 65 64 20 6c 61 79 6f  ely ordered layo
11e0: 75 74 3a 20 73 6f 20 77 65 20 68 61 76 65 20 6e  ut: so we have n
11f0: 6f 77 20 74 6f 20 61 70 70 6c 79 20 61 20 3c 61  ow to apply a <a
1200: 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e   href="http://en
1210: 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
1220: 69 6b 69 2f 52 6f 74 61 74 69 6f 6e 5f 25 32 38  iki/Rotation_%28
1230: 6d 61 74 68 65 6d 61 74 69 63 73 25 32 39 22 3e  mathematics%29">
1240: 63 6f 75 6e 74 65 72 63 6c 6f 63 6b 77 69 73 65  counterclockwise
1250: 20 72 6f 74 61 74 69 6f 6e 3c 2f 61 3e 20 6f 66   rotation</a> of
1260: 20 61 62 6f 75 74 20 3c 62 3e 32 35 2e 30 20 64   about <b>25.0 d
1270: 65 67 72 65 65 73 3c 2f 62 3e 2e 3c 62 72 3e 0d  egrees</b>.<br>.
1280: 0a 54 68 61 6e 6b 73 20 74 6f 20 41 66 66 69 6e  .Thanks to Affin
1290: 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e  e Transformation
12a0: 73 2c 20 77 65 20 63 61 6e 20 63 6f 6d 62 69 6e  s, we can combin
12b0: 65 20 62 6f 74 68 20 74 68 65 20 70 72 65 76 69  e both the previ
12c0: 6f 75 73 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20  ous translation 
12d0: 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20  and the current 
12e0: 72 6f 74 61 74 69 6f 6e 20 69 6e 74 6f 20 61 20  rotation into a 
12f0: 73 69 6e 67 6c 65 20 6d 6f 76 65 6d 65 6e 74 20  single movement 
1300: 28 61 20 73 6f 20 63 61 6c 6c 65 64 20 3c 62 3e  (a so called <b>
1310: 72 6f 74 6f 74 72 61 6e 73 6c 61 74 69 6f 6e 3c  rototranslation<
1320: 2f 62 3e 29 2e 3c 62 72 3e 0d 0a 57 65 20 73 69  /b>).<br>..We si
1330: 6d 70 6c 79 20 68 61 76 65 20 74 6f 20 65 78 65  mply have to exe
1340: 63 75 74 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69  cute the followi
1350: 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ng SQL statement
1360: 3a 0d 0a 3c 76 65 72 62 61 74 69 6d 3e 43 52 45  :..<verbatim>CRE
1370: 41 54 45 20 54 41 42 4c 45 20 73 69 63 69 6c 69  ATE TABLE sicili
1380: 61 5f 32 20 41 53 0d 0a 53 45 4c 45 43 54 20 63  a_2 AS..SELECT c
1390: 6f 64 5f 72 65 67 2c 20 0d 0a 20 20 20 41 54 4d  od_reg, ..   ATM
13a0: 5f 54 72 61 6e 73 66 6f 72 6d 28 67 65 6f 6d 65  _Transform(geome
13b0: 74 72 79 2c 0d 0a 20 20 20 20 20 20 41 54 4d 5f  try,..      ATM_
13c0: 54 72 61 6e 73 6c 61 74 65 28 2d 31 35 30 30 30  Translate(-15000
13d0: 30 2c 20 31 35 30 30 30 30 2c 0d 0a 20 20 20 20  0, 150000,..    
13e0: 20 20 20 20 20 41 54 4d 5f 54 72 61 6e 73 6c 61       ATM_Transla
13f0: 74 65 28 63 78 2c 20 63 79 2c 0d 0a 20 20 20 20  te(cx, cy,..    
1400: 20 20 20 20 20 20 20 20 41 54 4d 5f 52 6f 74 61          ATM_Rota
1410: 74 65 28 32 35 2c 0d 0a 20 20 20 20 20 20 20 20  te(25,..        
1420: 20 20 20 20 20 20 20 41 54 4d 5f 43 72 65 61 74         ATM_Creat
1430: 65 54 72 61 6e 73 6c 61 74 65 28 2d 63 78 2c 20  eTranslate(-cx, 
1440: 2d 63 79 29 29 29 29 29 20 41 53 20 67 65 6f 6d  -cy))))) AS geom
1450: 0d 0a 46 52 4f 4d 20 28 53 45 4c 45 43 54 20 63  ..FROM (SELECT c
1460: 6f 64 5f 72 65 67 2c 20 53 54 5f 58 28 63 65 6e  od_reg, ST_X(cen
1470: 74 72 6f 69 64 29 20 41 53 20 63 78 2c 20 53 54  troid) AS cx, ST
1480: 5f 59 28 63 65 6e 74 72 6f 69 64 29 20 41 53 20  _Y(centroid) AS 
1490: 63 79 2c 20 67 65 6f 6d 65 74 72 79 0d 0a 20 20  cy, geometry..  
14a0: 20 20 20 20 46 52 4f 4d 20 28 53 45 4c 45 43 54      FROM (SELECT
14b0: 20 63 6f 64 5f 72 65 67 2c 20 53 54 5f 43 65 6e   cod_reg, ST_Cen
14c0: 74 72 6f 69 64 28 67 65 6f 6d 65 74 72 79 29 20  troid(geometry) 
14d0: 41 53 20 63 65 6e 74 72 6f 69 64 2c 20 67 65 6f  AS centroid, geo
14e0: 6d 65 74 72 79 20 0d 0a 20 20 20 20 20 20 20 20  metry ..        
14f0: 20 20 20 20 46 52 4f 4d 20 73 69 63 69 6c 69 61      FROM sicilia
1500: 5f 30 29 20 41 53 20 67 31 0d 0a 29 20 41 53 20  _0) AS g1..) AS 
1510: 67 32 3b 0d 0a 53 45 4c 45 43 54 20 52 65 63 6f  g2;..SELECT Reco
1520: 76 65 72 47 65 6f 6d 65 74 72 79 43 6f 6c 75 6d  verGeometryColum
1530: 6e 28 27 73 69 63 69 6c 69 61 5f 32 27 2c 20 27  n('sicilia_2', '
1540: 67 65 6f 6d 27 2c 20 33 32 36 33 32 2c 20 27 4d  geom', 32632, 'M
1550: 55 4c 54 49 50 4f 4c 59 47 4f 4e 27 2c 20 27 58  ULTIPOLYGON', 'X
1560: 59 27 29 3b 0d 0a 3c 2f 76 65 72 62 61 74 69 6d  Y');..</verbatim
1570: 3e 20 20 0d 0a 3c 62 3e 52 65 6d 61 72 6b 73 3c  >  ..<b>Remarks<
1580: 2f 62 3e 3a 0d 0a 3c 75 6c 3e 0d 0a 3c 6c 69 3e  /b>:..<ul>..<li>
1590: 63 6f 72 72 65 63 74 6c 79 20 68 61 6e 64 6c 69  correctly handli
15a0: 6e 67 20 52 6f 74 61 74 65 20 69 73 20 61 20 6c  ng Rotate is a l
15b0: 69 74 74 6c 65 20 62 69 74 20 6d 6f 72 65 20 64  ittle bit more d
15c0: 69 66 66 69 63 75 6c 74 2e 0d 0a 41 6e 79 20 72  ifficult...Any r
15d0: 6f 74 61 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 77  otation will alw
15e0: 61 79 73 20 69 6d 70 6c 79 20 61 20 3c 62 3e 66  ays imply a <b>f
15f0: 69 78 65 64 20 63 65 6e 74 65 72 20 70 6f 69 6e  ixed center poin
1600: 74 3c 2f 62 3e 2c 20 61 6e 64 20 62 79 20 64 65  t</b>, and by de
1610: 66 61 75 6c 74 20 74 68 69 73 20 69 73 20 65 78  fault this is ex
1620: 61 63 74 6c 79 20 70 6c 61 63 65 64 20 61 74 20  actly placed at 
1630: 74 68 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 20  the coordinates 
1640: 6f 72 69 67 69 6e 3a 20 3c 62 3e 28 30 2c 20 30  origin: <b>(0, 0
1650: 29 3c 2f 62 3e 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69  )</b>.</li>..<li
1660: 3e 73 6f 20 61 20 76 65 72 79 20 6e 61 69 76 65  >so a very naive
1670: 20 61 74 74 65 6d 70 74 20 74 6f 20 64 69 72 65   attempt to dire
1680: 63 74 6c 79 20 69 6e 76 6f 6b 65 20 3c 62 3e 41  ctly invoke <b>A
1690: 54 4d 5f 52 6f 74 61 74 65 28 32 35 29 3c 2f 62  TM_Rotate(25)</b
16a0: 3e 20 77 69 6c 6c 20 73 69 6d 70 6c 79 20 72 65  > will simply re
16b0: 6c 6f 63 61 74 65 20 53 69 63 69 6c 79 20 69 6e  locate Sicily in
16c0: 20 53 6f 75 74 68 65 72 6e 20 53 70 61 69 6e 2c   Southern Spain,
16d0: 20 61 6e 64 20 74 68 69 73 20 61 62 73 6f 6c 75   and this absolu
16e0: 74 65 6c 79 20 69 73 6e 27 74 20 6f 75 72 20 69  tely isn't our i
16f0: 6e 74 65 6e 74 69 6f 6e 2e 3c 2f 6c 69 3e 0d 0a  ntention.</li>..
1700: 3c 6c 69 3e 77 68 61 74 20 77 65 20 72 65 61 6c  <li>what we real
1710: 6c 79 20 6e 65 65 64 20 69 73 20 61 20 6d 6f 72  ly need is a mor
1720: 65 20 63 6f 6d 70 6c 65 78 20 73 65 71 75 65 6e  e complex sequen
1730: 63 65 20 6f 66 20 63 68 61 69 6e 65 64 20 74 72  ce of chained tr
1740: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 3a 0d 0a  ansformations:..
1750: 3c 6f 6c 3e 0d 0a 3c 6c 69 3e 77 65 27 6c 6c 20  <ol>..<li>we'll 
1760: 73 74 61 72 74 20 66 69 72 73 74 20 62 79 20 63  start first by c
1770: 72 65 61 74 69 6e 67 20 61 20 6e 65 77 20 3c 62  reating a new <b
1780: 3e 42 4c 4f 42 2d 4d 61 74 72 69 78 3c 2f 62 3e  >BLOB-Matrix</b>
1790: 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 72 65 6c   intended to rel
17a0: 6f 63 61 74 65 20 53 69 63 69 6c 79 27 73 20 3c  ocate Sicily's <
17b0: 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65  a href="http://e
17c0: 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f  n.wikipedia.org/
17d0: 77 69 6b 69 2f 43 65 6e 74 72 6f 69 64 22 3e 63  wiki/Centroid">c
17e0: 65 6e 74 72 6f 69 64 3c 2f 61 3e 20 65 78 61 63  entroid</a> exac
17f0: 74 6c 79 20 6f 6e 20 74 68 65 20 63 6f 6f 72 64  tly on the coord
1800: 69 6e 61 74 65 73 20 6f 72 69 67 69 6e 3a 20 3c  inates origin: <
1810: 62 3e 41 54 4d 5f 43 72 65 61 74 65 54 72 61 6e  b>ATM_CreateTran
1820: 73 6c 61 74 65 28 2d 63 78 2c 20 2d 63 79 29 3c  slate(-cx, -cy)<
1830: 2f 62 3e 3c 2f 6c 69 3e 20 0d 0a 3c 6c 69 3e 6e  /b></li> ..<li>n
1840: 6f 77 20 77 65 20 63 61 6e 20 73 61 66 65 6c 79  ow we can safely
1850: 20 63 68 61 69 6e 20 74 68 65 20 69 6e 74 65 6e   chain the inten
1860: 64 65 64 20 52 6f 74 61 74 65 3a 20 3c 62 3e 41  ded Rotate: <b>A
1870: 54 4d 5f 52 6f 74 61 74 65 28 32 35 2c 20 61 74  TM_Rotate(25, at
1880: 6d 2d 62 6c 6f 62 29 3c 2f 62 3e 3c 2f 6c 69 3e  m-blob)</b></li>
1890: 0d 0a 3c 6c 69 3e 61 66 74 65 72 20 61 70 70 6c  ..<li>after appl
18a0: 79 69 6e 67 20 52 6f 74 61 74 65 20 77 65 20 68  ying Rotate we h
18b0: 61 76 65 20 6e 6f 77 20 74 6f 20 72 65 73 74 6f  ave now to resto
18c0: 72 65 20 74 68 65 20 69 6e 69 74 69 61 6c 20 70  re the initial p
18d0: 6f 73 69 74 69 6f 6e 3a 20 3c 62 3e 41 54 4d 5f  osition: <b>ATM_
18e0: 54 72 61 6e 73 6c 61 74 65 28 63 78 2c 20 63 79  Translate(cx, cy
18f0: 2c 20 61 74 6d 2d 62 6c 6f 62 29 3c 2f 62 3e 3c  , atm-blob)</b><
1900: 2f 6c 69 3e 0d 0a 3c 6c 69 3e 61 6e 64 20 66 69  /li>..<li>and fi
1910: 6e 61 6c 6c 79 20 77 65 27 6c 6c 20 61 70 70 6c  nally we'll appl
1920: 79 20 74 68 65 20 54 72 61 6e 73 6c 61 74 69 6f  y the Translatio
1930: 6e 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 72 65  n intended to re
1940: 70 6f 73 69 74 69 6f 6e 20 53 69 63 69 6c 79 20  position Sicily 
1950: 77 65 73 74 77 61 72 64 20 61 6e 64 20 6e 6f 72  westward and nor
1960: 74 68 77 61 72 64 3a 20 3c 62 3e 41 54 4d 5f 54  thward: <b>ATM_T
1970: 72 61 6e 73 6c 61 74 65 28 2d 31 35 30 30 30 30  ranslate(-150000
1980: 2c 20 31 35 30 30 30 30 2c 20 61 74 6d 2d 62 6c  , 150000, atm-bl
1990: 6f 62 29 3c 2f 62 3e 3c 62 72 3e 0d 0a 3c 69 3e  ob)</b><br>..<i>
19a0: 77 65 27 76 65 20 75 73 65 64 20 74 77 6f 20 73  we've used two s
19b0: 65 70 61 72 61 74 65 20 74 72 61 6e 73 6c 61 74  eparate translat
19c0: 69 6f 6e 73 20 73 69 6d 70 6c 79 20 66 6f 72 20  ions simply for 
19d0: 64 69 64 61 63 74 69 63 20 63 6c 61 72 69 74 79  didactic clarity
19e0: 3a 20 77 65 20 63 6f 75 6c 64 20 65 61 73 69 6c  : we could easil
19f0: 79 20 6d 65 72 67 65 20 62 6f 74 68 20 74 68 65  y merge both the
1a00: 6d 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20  m into a single 
1a10: 74 72 61 6e 73 6c 61 74 69 6f 6e 3a 3c 62 72 3e  translation:<br>
1a20: 20 41 54 4d 5f 54 72 61 6e 73 6c 61 74 65 28 63   ATM_Translate(c
1a30: 78 20 2d 20 31 35 30 30 30 30 2c 20 63 79 20 2b  x - 150000, cy +
1a40: 20 31 35 30 30 30 30 2c 20 61 74 6d 2d 62 6c 6f   150000, atm-blo
1a50: 62 29 3c 2f 69 3e 3c 2f 6c 69 3e 0d 0a 3c 6c 69  b)</i></li>..<li
1a60: 3e 74 68 69 73 20 77 61 79 20 3c 62 3e 41 54 4d  >this way <b>ATM
1a70: 5f 54 72 61 6e 73 66 6f 72 6d 28 29 3c 2f 62 3e  _Transform()</b>
1a80: 20 77 69 6c 6c 20 72 65 63 65 69 76 65 20 74 68   will receive th
1a90: 65 20 66 69 6e 61 6c 20 3c 62 3e 42 4c 4f 42 2d  e final <b>BLOB-
1aa0: 4d 61 74 72 69 78 3c 2f 62 3e 20 72 65 73 75 6c  Matrix</b> resul
1ab0: 74 69 6e 67 20 62 79 20 63 68 61 69 6e 69 6e 67  ting by chaining
1ac0: 20 61 6c 6c 20 74 68 65 20 61 62 6f 76 65 20 74   all the above t
1ad0: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 73 74  ransformation st
1ae0: 65 70 73 20 69 6e 20 74 68 65 20 63 6f 72 72 65  eps in the corre
1af0: 63 74 20 73 65 71 75 65 6e 63 65 2e 3c 2f 6c 69  ct sequence.</li
1b00: 3e 0d 0a 3c 2f 6f 6c 3e 3c 2f 6c 69 3e 0d 0a 3c  >..</ol></li>..<
1b10: 6c 69 3e 3c 62 3e 3c 75 3e 56 65 72 79 20 69 6d  li><b><u>Very im
1b20: 70 6f 72 74 61 6e 74 20 6e 6f 74 69 63 65 3c 2f  portant notice</
1b30: 75 3e 3c 2f 62 3e 3a 20 41 66 66 69 6e 65 20 54  u></b>: Affine T
1b40: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 3c  ransformations <
1b50: 75 3e 61 72 65 20 6e 6f 74 20 63 6f 6d 6d 75 74  u>are not commut
1b60: 61 74 69 76 65 3c 2f 75 3e 3a 20 74 68 65 20 72  ative</u>: the r
1b70: 65 6c 61 74 69 76 65 20 6f 72 64 65 72 20 6f 66  elative order of
1b80: 20 73 75 62 73 65 71 75 65 6e 74 20 6f 70 65 72   subsequent oper
1b90: 61 74 69 6f 6e 73 20 69 6e 20 61 20 63 6f 6d 70  ations in a comp
1ba0: 6c 65 78 20 74 72 61 6e 73 66 6f 72 6d 61 74 69  lex transformati
1bb0: 6f 6e 20 63 68 61 69 6e 20 73 68 6f 75 6c 64 20  on chain should 
1bc0: 61 6c 77 61 79 73 20 62 65 20 76 65 72 79 20 63  always be very c
1bd0: 61 72 65 66 75 6c 6c 79 20 63 6f 6e 73 69 64 65  arefully conside
1be0: 72 65 64 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 61  red.</li>..<li>a
1bf0: 6c 6c 20 74 68 65 20 3c 62 3e 46 52 4f 4d 20 28  ll the <b>FROM (
1c00: 53 45 4c 45 43 54 20 2e 2e 2e 20 46 52 4f 4d 20  SELECT ... FROM 
1c10: 28 53 45 4c 45 43 54 20 2e 2e 2e 29 20 41 53 20  (SELECT ...) AS 
1c20: 67 31 29 20 41 53 20 67 32 3c 2f 62 3e 20 73 74  g1) AS g2</b> st
1c30: 75 66 66 20 73 69 6d 70 6c 79 20 69 73 20 61 20  uff simply is a 
1c40: 72 61 74 68 65 72 20 74 72 69 76 69 61 6c 20 53  rather trivial S
1c50: 51 4c 20 74 72 69 63 6b 20 62 61 73 65 64 20 6f  QL trick based o
1c60: 6e 20 74 77 6f 20 6e 65 73 74 65 64 20 73 75 62  n two nested sub
1c70: 2d 71 75 65 72 69 65 73 2e 3c 62 72 3e 0d 0a 69  -queries.<br>..i
1c80: 74 27 73 20 69 6e 64 65 6e 74 65 64 20 73 63 6f  t's indented sco
1c90: 70 65 20 73 69 6d 70 6c 79 20 69 73 20 61 76 6f  pe simply is avo
1ca0: 69 64 69 6e 67 20 74 6f 20 63 61 6c 6c 20 74 6f  iding to call to
1cb0: 6f 20 6d 61 6e 79 20 74 69 6d 65 73 20 53 54 5f  o many times ST_
1cc0: 43 65 6e 74 72 6f 69 64 28 29 2c 20 53 54 5f 58  Centroid(), ST_X
1cd0: 28 29 20 61 6e 64 20 53 54 5f 59 28 29 20 69 6e  () and ST_Y() in
1ce0: 20 6f 72 64 65 72 20 74 6f 20 67 65 74 20 74 68   order to get th
1cf0: 65 20 63 65 6e 74 72 6f 69 64 20 63 6f 6f 72 64  e centroid coord
1d00: 69 6e 61 74 65 73 2e 3c 2f 6c 69 3e 0d 0a 3c 2f  inates.</li>..</
1d10: 75 6c 3e 0d 0a 3c 2f 74 64 3e 3c 74 64 3e 0d 0a  ul>..</td><td>..
1d20: 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a  <img src="https:
1d30: 2f 2f 77 77 77 2e 67 61 69 61 2d 67 69 73 2e 69  //www.gaia-gis.i
1d40: 74 2f 67 61 69 61 2d 73 69 6e 73 2f 61 66 66 69  t/gaia-sins/affi
1d50: 6e 65 2d 70 69 63 73 2f 73 69 63 69 6c 79 5f 32  ne-pics/sicily_2
1d60: 2e 70 6e 67 22 20 61 6c 74 3d 22 73 69 63 69 6c  .png" alt="sicil
1d70: 69 61 2d 32 22 20 62 6f 72 64 65 72 3d 22 31 22  ia-2" border="1"
1d80: 3e 0d 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  >..</td></tr>..<
1d90: 74 72 3e 3c 74 64 3e 0d 0a 3c 68 33 3e 53 74 65  tr><td>..<h3>Ste
1da0: 70 20 23 33 3a 20 69 6e 66 6c 61 74 69 6e 67 20  p #3: inflating 
1db0: 61 6e 64 20 72 65 73 68 61 70 69 6e 67 20 53 69  and reshaping Si
1dc0: 63 69 6c 79 3c 2f 68 33 3e 0d 0a 41 6e 20 69 6e  cily</h3>..An in
1dd0: 63 72 65 61 73 65 64 20 73 75 72 66 61 63 65 20  creased surface 
1de0: 69 73 20 73 75 72 65 6c 79 20 77 65 6c 63 6f 6d  is surely welcom
1df0: 65 2c 20 62 65 63 61 75 73 65 20 69 74 20 61 75  e, because it au
1e00: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6d 70 6c  tomatically impl
1e10: 69 65 73 20 6d 6f 72 65 20 61 67 72 69 63 75 6c  ies more agricul
1e20: 74 75 72 61 6c 20 6c 61 6e 64 73 3a 20 6f 6e 20  tural lands: on 
1e30: 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 20 73  the other hand s
1e40: 68 6f 72 74 65 6e 69 6e 67 20 61 20 6c 69 74 74  hortening a litt
1e50: 6c 65 20 62 69 74 20 74 68 65 20 6c 65 6e 67 74  le bit the lengt
1e60: 68 20 6f 66 20 74 68 65 20 73 6f 75 74 68 65 72  h of the souther
1e70: 6e 20 63 6f 61 73 74 6c 69 6e 65 20 77 69 6c 6c  n coastline will
1e80: 20 73 75 72 65 6c 79 20 66 61 63 69 6c 69 74 61   surely facilita
1e90: 74 65 20 6d 6f 62 69 6c 69 74 79 20 61 6e 64 20  te mobility and 
1ea0: 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 73 2e 3c  communications.<
1eb0: 62 72 3e 0d 0a 53 6f 20 77 65 27 6c 6c 20 6e 6f  br>..So we'll no
1ec0: 77 20 61 70 70 6c 79 20 61 20 3c 61 20 68 72 65  w apply a <a hre
1ed0: 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b  f="http://en.wik
1ee0: 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
1ef0: 53 63 61 6c 69 6e 67 5f 25 32 38 67 65 6f 6d 65  Scaling_%28geome
1f00: 74 72 79 25 32 39 22 3e 73 63 61 6c 69 6e 67 3c  try%29">scaling<
1f10: 2f 61 3e 20 74 72 61 6e 73 66 6f 72 6d 61 74 69  /a> transformati
1f20: 6f 6e 20 75 73 69 6e 67 20 74 77 6f 20 64 69 66  on using two dif
1f30: 66 65 72 65 6e 74 20 76 61 6c 75 65 73 3a 20 3c  ferent values: <
1f40: 62 3e 73 78 3d 30 2e 39 3c 2f 62 3e 20 61 6e 64  b>sx=0.9</b> and
1f50: 20 3c 62 3e 73 79 3d 31 2e 33 3c 2f 62 3e 2e 3c   <b>sy=1.3</b>.<
1f60: 62 72 3e 0d 0a 4f 6e 63 65 20 61 67 61 69 6e 2c  br>..Once again,
1f70: 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72   Affine Transfor
1f80: 6d 61 74 69 6f 6e 73 20 65 6e 61 62 6c 65 20 75  mations enable u
1f90: 73 20 74 6f 20 63 6f 6d 62 69 6e 65 20 61 6c 74  s to combine alt
1fa0: 6f 67 65 74 68 65 72 20 62 6f 74 68 20 74 72 61  ogether both tra
1fb0: 6e 73 6c 61 74 65 2c 20 72 6f 74 61 74 65 20 61  nslate, rotate a
1fc0: 6e 64 20 73 63 61 6c 65 20 69 6e 74 6f 20 61 20  nd scale into a 
1fd0: 73 69 6e 67 6c 65 20 74 72 61 6e 73 66 6f 72 6d  single transform
1fe0: 61 74 69 6f 6e 2e 3c 62 72 3e 0d 0a 54 68 69 73  ation.<br>..This
1ff0: 20 69 73 20 74 68 65 20 63 6f 72 72 65 73 70 6f   is the correspo
2000: 6e 64 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  nding SQL statem
2010: 65 6e 74 3a 0d 0a 3c 76 65 72 62 61 74 69 6d 3e  ent:..<verbatim>
2020: 0d 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  ..CREATE TABLE s
2030: 69 63 69 6c 69 61 5f 33 20 41 53 0d 0a 53 45 4c  icilia_3 AS..SEL
2040: 45 43 54 20 63 6f 64 5f 72 65 67 2c 20 0d 0a 20  ECT cod_reg, .. 
2050: 20 20 41 54 4d 5f 54 72 61 6e 73 66 6f 72 6d 28    ATM_Transform(
2060: 67 65 6f 6d 65 74 72 79 2c 0d 0a 20 20 20 20 20  geometry,..     
2070: 20 41 54 4d 5f 54 72 61 6e 73 6c 61 74 65 28 2d   ATM_Translate(-
2080: 31 35 30 30 30 30 2c 20 31 35 30 30 30 30 2c 0d  150000, 150000,.
2090: 0a 20 20 20 20 20 20 20 20 20 41 54 4d 5f 54 72  .         ATM_Tr
20a0: 61 6e 73 6c 61 74 65 28 63 78 2c 20 63 79 2c 0d  anslate(cx, cy,.
20b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 54 4d  .            ATM
20c0: 5f 53 63 61 6c 65 28 30 2e 39 2c 20 31 2e 33 2c  _Scale(0.9, 1.3,
20d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20e0: 20 41 54 4d 5f 52 6f 74 61 74 65 28 32 35 2c 0d   ATM_Rotate(25,.
20f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2100: 20 20 20 41 54 4d 5f 43 72 65 61 74 65 54 72 61     ATM_CreateTra
2110: 6e 73 6c 61 74 65 28 2d 63 78 2c 20 2d 63 79 29  nslate(-cx, -cy)
2120: 29 29 29 29 29 20 41 53 20 67 65 6f 6d 0d 0a 46  ))))) AS geom..F
2130: 52 4f 4d 20 28 53 45 4c 45 43 54 20 63 6f 64 5f  ROM (SELECT cod_
2140: 72 65 67 2c 20 53 54 5f 58 28 63 65 6e 74 72 6f  reg, ST_X(centro
2150: 69 64 29 20 41 53 20 63 78 2c 20 53 54 5f 59 28  id) AS cx, ST_Y(
2160: 63 65 6e 74 72 6f 69 64 29 20 41 53 20 63 79 2c  centroid) AS cy,
2170: 20 67 65 6f 6d 65 74 72 79 0d 0a 20 20 20 20 20   geometry..     
2180: 20 46 52 4f 4d 20 28 53 45 4c 45 43 54 20 63 6f   FROM (SELECT co
2190: 64 5f 72 65 67 2c 20 53 54 5f 43 65 6e 74 72 6f  d_reg, ST_Centro
21a0: 69 64 28 67 65 6f 6d 65 74 72 79 29 20 41 53 20  id(geometry) AS 
21b0: 63 65 6e 74 72 6f 69 64 2c 20 67 65 6f 6d 65 74  centroid, geomet
21c0: 72 79 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry ..           
21d0: 20 46 52 4f 4d 20 73 69 63 69 6c 69 61 5f 30 29   FROM sicilia_0)
21e0: 20 41 53 20 67 31 0d 0a 29 20 41 53 20 67 32 3b   AS g1..) AS g2;
21f0: 0d 0a 53 45 4c 45 43 54 20 52 65 63 6f 76 65 72  ..SELECT Recover
2200: 47 65 6f 6d 65 74 72 79 43 6f 6c 75 6d 6e 28 27  GeometryColumn('
2210: 73 69 63 69 6c 69 61 5f 33 27 2c 20 27 67 65 6f  sicilia_3', 'geo
2220: 6d 27 2c 20 33 32 36 33 32 2c 20 27 4d 55 4c 54  m', 32632, 'MULT
2230: 49 50 4f 4c 59 47 4f 4e 27 2c 20 27 58 59 27 29  IPOLYGON', 'XY')
2240: 3b 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 20 0d  ;..</verbatim> .
2250: 0a 3c 62 3e 52 65 6d 61 72 6b 73 3c 2f 62 3e 3a  .<b>Remarks</b>:
2260: 0d 0a 3c 75 6c 3e 0d 0a 3c 6c 69 3e 74 68 65 72  ..<ul>..<li>ther
2270: 65 20 69 73 20 6e 6f 74 68 69 6e 67 20 72 65 61  e is nothing rea
2280: 6c 6c 79 20 6e 65 77 20 69 6e 20 74 68 69 73 3a  lly new in this:
2290: 20 77 65 27 6c 6c 20 73 69 6d 70 6c 79 20 63 68   we'll simply ch
22a0: 61 69 6e 20 79 65 74 20 61 6e 6f 74 68 65 72 20  ain yet another 
22b0: 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 69  transformation i
22c0: 6e 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74  n the appropriat
22d0: 65 20 73 65 71 75 65 6e 63 65 20 6f 72 64 65 72  e sequence order
22e0: 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 3c 62 3e 41  .</li>..<li><b>A
22f0: 54 4d 5f 53 63 61 6c 65 28 73 78 2c 20 73 79 29  TM_Scale(sx, sy)
2300: 3c 2f 62 3e 20 69 73 20 69 6e 74 65 6e 64 65 64  </b> is intended
2310: 20 66 6f 72 20 74 68 65 20 73 69 6d 70 6c 65 72   for the simpler
2320: 20 3c 62 3e 32 44 3c 2f 62 3e 20 63 61 73 65 2e   <b>2D</b> case.
2330: 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 69 6e 20 74 68  </li>..<li>in th
2340: 65 20 6d 6f 72 65 20 67 65 6e 65 72 61 6c 20 3c  e more general <
2350: 62 3e 33 44 3c 2f 62 3e 20 63 61 73 65 20 79 6f  b>3D</b> case yo
2360: 75 20 63 61 6e 20 69 6e 76 6f 6b 65 20 3c 62 3e  u can invoke <b>
2370: 41 54 4d 5f 53 63 61 6c 65 28 73 78 2c 20 73 79  ATM_Scale(sx, sy
2380: 2c 20 73 7a 29 3c 2f 62 3e 3c 2f 6c 69 3e 0d 0a  , sz)</b></li>..
2390: 3c 2f 75 6c 3e 0d 0a 3c 2f 74 64 3e 3c 74 64 3e  </ul>..</td><td>
23a0: 0d 0a 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70  ..<img src="http
23b0: 73 3a 2f 2f 77 77 77 2e 67 61 69 61 2d 67 69 73  s://www.gaia-gis
23c0: 2e 69 74 2f 67 61 69 61 2d 73 69 6e 73 2f 61 66  .it/gaia-sins/af
23d0: 66 69 6e 65 2d 70 69 63 73 2f 73 69 63 69 6c 79  fine-pics/sicily
23e0: 5f 33 2e 70 6e 67 22 20 61 6c 74 3d 22 73 69 63  _3.png" alt="sic
23f0: 69 6c 69 61 2d 33 22 20 62 6f 72 64 65 72 3d 22  ilia-3" border="
2400: 31 22 3e 0d 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  1">..</td></tr>.
2410: 0a 3c 74 72 3e 3c 74 64 3e 0d 0a 3c 68 33 3e 53  .<tr><td>..<h3>S
2420: 74 65 70 20 23 34 3a 20 66 69 6e 61 6c 20 74 6f  tep #4: final to
2430: 75 63 68 3a 20 72 65 66 6c 65 63 74 69 6e 67 20  uch: reflecting 
2440: 53 69 63 69 6c 79 3c 2f 68 33 3e 0d 0a 41 20 72  Sicily</h3>..A r
2450: 65 66 6c 65 63 74 65 64 20 53 69 63 69 6c 79 20  eflected Sicily 
2460: 70 72 65 73 65 6e 74 73 20 6d 61 6e 79 20 69 6e  presents many in
2470: 74 65 72 65 73 74 69 6e 67 20 61 64 76 61 6e 74  teresting advant
2480: 61 67 65 73 3a 20 77 65 27 6c 6c 20 65 78 61 6d  ages: we'll exam
2490: 69 6e 65 20 61 6c 6c 20 74 68 65 6d 20 69 6e 20  ine all them in 
24a0: 66 75 6c 6c 20 64 65 74 61 69 6c 20 69 6e 20 74  full detail in t
24b0: 68 65 20 66 69 6e 61 6c 20 63 6f 6e 63 6c 75 73  he final conclus
24c0: 69 6f 6e 73 20 6f 66 20 74 68 65 20 70 72 65 73  ions of the pres
24d0: 65 6e 74 20 73 74 75 64 79 2e 3c 62 72 3e 0d 0a  ent study.<br>..
24e0: 53 6f 20 77 65 27 6c 6c 20 6e 6f 77 20 61 70 70  So we'll now app
24f0: 6c 79 20 61 20 66 69 6e 61 6c 20 3c 61 20 68 72  ly a final <a hr
2500: 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69  ef="http://en.wi
2510: 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69  kipedia.org/wiki
2520: 2f 52 65 66 6c 65 63 74 69 6f 6e 5f 25 32 38 6d  /Reflection_%28m
2530: 61 74 68 65 6d 61 74 69 63 73 25 32 39 22 3e 72  athematics%29">r
2540: 65 66 6c 65 63 74 69 6f 6e 3c 2f 61 3e 20 74 72  eflection</a> tr
2550: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 3b 20 74 68  ansformation; th
2560: 69 73 20 73 69 6d 70 6c 79 20 63 6f 72 72 65 73  is simply corres
2570: 70 6f 6e 64 73 20 74 6f 20 61 20 3c 62 3e 31 38  ponds to a <b>18
2580: 30 20 64 65 67 72 65 65 73 3c 2f 62 3e 20 72 6f  0 degrees</b> ro
2590: 74 61 74 69 6f 6e 20 61 72 6f 75 6e 64 20 74 68  tation around th
25a0: 65 20 3c 62 3e 59 20 61 78 69 73 3c 2f 62 3e 2e  e <b>Y axis</b>.
25b0: 3c 62 72 3e 0d 0a 41 6e 64 20 74 68 65 20 66 6f  <br>..And the fo
25c0: 6c 6c 6f 77 69 6e 67 20 69 73 20 74 68 65 20 66  llowing is the f
25d0: 69 6e 61 6c 20 53 51 4c 20 73 74 61 74 65 6d 65  inal SQL stateme
25e0: 6e 74 20 61 70 70 6c 79 69 6e 67 20 61 6c 6c 20  nt applying all 
25f0: 74 68 65 20 61 62 6f 76 65 20 74 72 61 6e 73 66  the above transf
2600: 6f 72 6d 61 74 69 6f 6e 73 20 69 6e 20 61 20 73  ormations in a s
2610: 69 6e 67 6c 65 20 73 68 6f 74 3a 0d 0a 3c 76 65  ingle shot:..<ve
2620: 72 62 61 74 69 6d 3e 43 52 45 41 54 45 20 54 41  rbatim>CREATE TA
2630: 42 4c 45 20 73 69 63 69 6c 69 61 5f 32 20 41 53  BLE sicilia_2 AS
2640: 0d 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  ..CREATE TABLE s
2650: 69 63 69 6c 69 61 5f 34 20 41 53 0d 0a 53 45 4c  icilia_4 AS..SEL
2660: 45 43 54 20 63 6f 64 5f 72 65 67 2c 20 0d 0a 20  ECT cod_reg, .. 
2670: 20 20 41 54 4d 5f 54 72 61 6e 73 66 6f 72 6d 28    ATM_Transform(
2680: 67 65 6f 6d 65 74 72 79 2c 0d 0a 20 20 20 20 20  geometry,..     
2690: 20 41 54 4d 5f 54 72 61 6e 73 6c 61 74 65 28 2d   ATM_Translate(-
26a0: 31 35 30 30 30 30 2c 20 31 35 30 30 30 30 2c 0d  150000, 150000,.
26b0: 0a 20 20 20 20 20 20 20 20 20 41 54 4d 5f 54 72  .         ATM_Tr
26c0: 61 6e 73 6c 61 74 65 28 63 78 2c 20 63 79 2c 0d  anslate(cx, cy,.
26d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 54 4d  .            ATM
26e0: 5f 59 52 6f 6c 6c 28 31 38 30 2c 0d 0a 20 20 20  _YRoll(180,..   
26f0: 20 20 20 20 20 20 20 20 20 20 20 20 41 54 4d 5f              ATM_
2700: 53 63 61 6c 65 28 30 2e 39 2c 20 31 2e 33 2c 0d  Scale(0.9, 1.3,.
2710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2720: 20 20 20 41 54 4d 5f 52 6f 74 61 74 65 28 32 35     ATM_Rotate(25
2730: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2740: 20 20 20 20 20 20 20 20 41 54 4d 5f 43 72 65 61          ATM_Crea
2750: 74 65 54 72 61 6e 73 6c 61 74 65 28 2d 63 78 2c  teTranslate(-cx,
2760: 20 2d 63 79 29 29 29 29 29 29 29 20 41 53 20 67   -cy))))))) AS g
2770: 65 6f 6d 0d 0a 46 52 4f 4d 20 28 53 45 4c 45 43  eom..FROM (SELEC
2780: 54 20 63 6f 64 5f 72 65 67 2c 20 53 54 5f 58 28  T cod_reg, ST_X(
2790: 63 65 6e 74 72 6f 69 64 29 20 41 53 20 63 78 2c  centroid) AS cx,
27a0: 20 53 54 5f 59 28 63 65 6e 74 72 6f 69 64 29 20   ST_Y(centroid) 
27b0: 41 53 20 63 79 2c 20 67 65 6f 6d 65 74 72 79 0d  AS cy, geometry.
27c0: 0a 20 20 20 20 20 20 46 52 4f 4d 20 28 53 45 4c  .      FROM (SEL
27d0: 45 43 54 20 63 6f 64 5f 72 65 67 2c 20 53 54 5f  ECT cod_reg, ST_
27e0: 43 65 6e 74 72 6f 69 64 28 67 65 6f 6d 65 74 72  Centroid(geometr
27f0: 79 29 20 41 53 20 63 65 6e 74 72 6f 69 64 2c 20  y) AS centroid, 
2800: 67 65 6f 6d 65 74 72 79 20 0d 0a 20 20 20 20 20  geometry ..     
2810: 20 20 20 20 20 20 20 46 52 4f 4d 20 73 69 63 69         FROM sici
2820: 6c 69 61 5f 30 29 20 41 53 20 67 31 0d 0a 29 20  lia_0) AS g1..) 
2830: 41 53 20 67 32 3b 0d 0a 53 45 4c 45 43 54 20 52  AS g2;..SELECT R
2840: 65 63 6f 76 65 72 47 65 6f 6d 65 74 72 79 43 6f  ecoverGeometryCo
2850: 6c 75 6d 6e 28 27 73 69 63 69 6c 69 61 5f 34 27  lumn('sicilia_4'
2860: 2c 20 27 67 65 6f 6d 27 2c 20 33 32 36 33 32 2c  , 'geom', 32632,
2870: 20 27 4d 55 4c 54 49 50 4f 4c 59 47 4f 4e 27 2c   'MULTIPOLYGON',
2880: 20 27 58 59 27 29 3b 0d 0a 3c 2f 76 65 72 62 61   'XY');..</verba
2890: 74 69 6d 3e 20 0d 0a 3c 62 3e 52 65 6d 61 72 6b  tim> ..<b>Remark
28a0: 73 3c 2f 62 3e 3a 0d 0a 3c 75 6c 3e 0d 0a 3c 6c  s</b>:..<ul>..<l
28b0: 69 3e 74 68 65 72 65 20 61 72 65 20 73 65 76 65  i>there are seve
28c0: 72 61 6c 20 70 6f 73 73 69 62 6c 65 20 72 6f 74  ral possible rot
28d0: 61 74 69 6f 6e 73 20 73 75 70 70 6f 72 74 65 64  ations supported
28e0: 20 62 79 20 41 66 66 69 6e 65 20 54 72 61 6e 73   by Affine Trans
28f0: 66 6f 72 6d 61 74 69 6f 6e 3a 0d 0a 3c 6f 6c 3e  formation:..<ol>
2900: 0d 0a 3c 6c 69 3e 3c 62 3e 41 54 4d 5f 52 6f 74  ..<li><b>ATM_Rot
2910: 61 74 65 28 29 3c 2f 62 3e 20 61 6c 77 61 79 73  ate()</b> always
2920: 20 69 6e 74 65 6e 64 73 20 61 20 3c 62 3e 32 44   intends a <b>2D
2930: 3c 2f 62 3e 20 72 6f 74 61 74 69 6f 6e 2c 20 69  </b> rotation, i
2940: 2e 65 2e 20 61 20 72 6f 74 61 74 69 6f 6e 20 63  .e. a rotation c
2950: 65 6e 74 65 72 65 64 20 61 72 6f 75 6e 64 20 74  entered around t
2960: 68 65 20 3c 62 3e 5a 20 61 78 69 73 3c 2f 62 3e  he <b>Z axis</b>
2970: 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 49 6e 20 74 68  </li>..<li>In th
2980: 65 20 6d 6f 72 65 20 67 65 6e 65 72 61 6c 20 3c  e more general <
2990: 62 3e 33 44 3c 2f 62 3e 20 63 61 73 65 20 74 68  b>3D</b> case th
29a0: 65 72 65 20 61 72 65 20 74 68 72 65 65 20 70 6f  ere are three po
29b0: 73 73 69 62 6c 65 20 72 6f 74 61 74 69 6f 6e 73  ssible rotations
29c0: 2c 20 6f 6e 65 20 66 6f 72 20 65 61 63 68 20 61  , one for each a
29d0: 78 69 73 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 74  xis.</li>..<li>t
29e0: 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  he corresponding
29f0: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 61   SQL functions a
2a00: 72 65 3a 20 3c 62 3e 41 54 4d 5f 58 52 6f 6c 6c  re: <b>ATM_XRoll
2a10: 28 61 6e 67 6c 65 29 3c 2f 62 3e 2c 20 3c 62 3e  (angle)</b>, <b>
2a20: 41 54 4d 5f 59 52 6f 6c 6c 28 61 6e 67 6c 65 29  ATM_YRoll(angle)
2a30: 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 41 54 4d 5f  </b> and <b>ATM_
2a40: 5a 52 6f 6c 6c 28 61 6e 67 6c 65 29 3c 2f 62 3e  ZRoll(angle)</b>
2a50: 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 3c 69 3e 3c 75  </li>..<li><i><u
2a60: 3e 4e 6f 74 65 3c 2f 75 3e 3a 20 41 54 4d 5f 5a  >Note</u>: ATM_Z
2a70: 52 6f 6c 6c 28 29 20 61 6e 64 20 41 54 4d 5f 52  Roll() and ATM_R
2a80: 6f 74 61 74 65 28 29 20 73 69 6d 70 6c 79 20 61  otate() simply a
2a90: 72 65 20 74 77 6f 20 64 69 66 66 65 72 65 6e 74  re two different
2aa0: 20 61 6c 69 61 73 2d 6e 61 6d 65 73 20 66 6f 72   alias-names for
2ab0: 20 74 68 65 20 73 61 6d 65 20 69 64 65 6e 74 69   the same identi
2ac0: 63 61 6c 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  cal SQL function
2ad0: 3c 2f 69 3e 2e 3c 2f 6c 69 3e 0d 0a 3c 2f 6f 6c  </i>.</li>..</ol
2ae0: 3e 3c 2f 6c 69 3e 0d 0a 3c 2f 75 6c 3e 0d 0a 3c  ></li>..</ul>..<
2af0: 2f 74 64 3e 3c 74 64 3e 0d 0a 3c 69 6d 67 20 73  /td><td>..<img s
2b00: 72 63 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e  rc="https://www.
2b10: 67 61 69 61 2d 67 69 73 2e 69 74 2f 67 61 69 61  gaia-gis.it/gaia
2b20: 2d 73 69 6e 73 2f 61 66 66 69 6e 65 2d 70 69 63  -sins/affine-pic
2b30: 73 2f 73 69 63 69 6c 79 5f 34 2e 70 6e 67 22 20  s/sicily_4.png" 
2b40: 61 6c 74 3d 22 73 69 63 69 6c 69 61 2d 34 22 20  alt="sicilia-4" 
2b50: 62 6f 72 64 65 72 3d 22 31 22 3e 0d 0a 3c 2f 74  border="1">..</t
2b60: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64  d></tr>..<tr><td
2b70: 3e 0d 0a 3c 68 33 3e 46 69 6e 61 6c 20 63 6f 6e  >..<h3>Final con
2b80: 73 69 64 65 72 61 74 69 6f 6e 73 20 61 6e 64 20  siderations and 
2b90: 63 6f 6e 63 6c 75 73 69 6f 6e 73 3c 2f 68 33 3e  conclusions</h3>
2ba0: 0d 0a 3c 6f 6c 3e 0d 0a 3c 6c 69 3e 3c 62 3e 41  ..<ol>..<li><b>A
2bb0: 67 72 69 63 75 6c 74 75 72 65 3c 2f 62 3e 3a 20  griculture</b>: 
2bc0: 61 66 74 65 72 20 69 74 73 20 72 65 6c 6f 63 61  after its reloca
2bd0: 74 69 6f 6e 20 53 69 63 69 6c 79 20 77 69 6c 6c  tion Sicily will
2be0: 20 67 61 69 6e 20 6d 75 63 68 20 6d 6f 72 65 20   gain much more 
2bf0: 61 67 72 69 63 75 6c 74 75 72 61 6c 20 6c 61 6e  agricultural lan
2c00: 64 20 61 6e 64 20 77 69 6c 6c 20 65 6e 6a 6f 79  d and will enjoy
2c10: 20 61 20 6d 6f 72 65 20 66 61 76 6f 75 72 61 62   a more favourab
2c20: 6c 65 20 63 6c 69 6d 61 74 65 3a 20 73 74 69 6c  le climate: stil
2c30: 6c 20 73 75 6e 6e 79 20 61 6e 64 20 77 61 72 6d  l sunny and warm
2c40: 20 62 75 74 20 6d 75 63 68 20 6c 65 73 73 20 61   but much less a
2c50: 72 69 64 2e 3c 62 72 3e 0d 0a 54 68 69 73 20 77  rid.<br>..This w
2c60: 69 6c 6c 20 63 65 72 74 61 69 6e 6c 79 20 73 75  ill certainly su
2c70: 73 74 61 69 6e 20 61 20 6e 6f 74 69 63 65 61 62  stain a noticeab
2c80: 6c 65 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20 6f  le development o
2c90: 66 20 6d 61 6e 79 20 65 63 6f 6e 6f 6d 69 63 20  f many economic 
2ca0: 61 63 74 69 76 69 74 69 65 73 2e 3c 2f 6c 69 3e  activities.</li>
2cb0: 0d 0a 3c 6c 69 3e 3c 62 3e 54 72 61 6e 73 70 6f  ..<li><b>Transpo
2cc0: 72 74 61 74 69 6f 6e 20 73 79 73 74 65 6d 73 3c  rtation systems<
2cd0: 2f 62 3e 3a 20 74 68 65 20 73 75 67 67 65 73 74  /b>: the suggest
2ce0: 65 64 20 6e 65 77 20 6c 61 79 6f 75 74 20 66 6f  ed new layout fo
2cf0: 72 20 74 68 65 20 4c 6f 77 65 72 20 54 79 72 72  r the Lower Tyrr
2d00: 68 65 6e 69 61 6e 20 53 65 61 20 73 74 72 6f 6e  henian Sea stron
2d10: 67 6c 79 20 66 61 63 69 6c 69 74 61 74 65 73 20  gly facilitates 
2d20: 74 68 65 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20  the development 
2d30: 6f 66 20 6d 61 72 69 74 69 6d 65 20 74 72 61 6e  of maritime tran
2d40: 73 70 6f 72 74 73 2e 20 53 69 63 69 6c 79 20 63  sports. Sicily c
2d50: 6f 75 6c 64 20 6e 6f 77 20 62 65 63 6f 6d 65 20  ould now become 
2d60: 74 68 65 20 63 65 6e 74 72 61 6c 20 68 75 62 20  the central hub 
2d70: 6f 66 20 61 20 68 69 67 68 6c 79 20 65 66 66 69  of a highly effi
2d80: 63 69 65 6e 74 20 6e 65 74 77 6f 72 6b 20 6f 66  cient network of
2d90: 20 68 69 67 68 2d 73 70 65 65 64 20 61 6e 64 20   high-speed and 
2da0: 68 69 67 68 2d 66 72 65 71 75 65 6e 63 79 20 66  high-frequency f
2db0: 65 72 72 79 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  erry connections
2dc0: 3a 0d 0a 3c 75 6c 3e 0d 0a 3c 6c 69 3e 50 61 6c  :..<ul>..<li>Pal
2dd0: 65 72 6d 6f 20 77 69 6c 6c 20 6e 6f 77 20 64 69  ermo will now di
2de0: 72 65 63 74 6c 79 20 66 61 63 65 20 4e 61 70 6c  rectly face Napl
2df0: 65 73 3b 20 43 69 76 69 74 61 76 65 63 63 68 69  es; Civitavecchi
2e00: 61 20 28 52 6f 6d 65 29 20 73 65 65 6d 73 20 74  a (Rome) seems t
2e10: 6f 20 62 65 20 61 20 73 65 63 6f 6e 64 20 6f 62  o be a second ob
2e20: 76 69 6f 75 73 20 74 65 72 6d 69 6e 61 6c 20 66  vious terminal f
2e30: 6f 72 20 64 69 72 65 63 74 20 63 6f 6e 6e 65 63  or direct connec
2e40: 74 69 6f 6e 73 20 6c 65 61 64 69 6e 67 20 74 6f  tions leading to
2e50: 20 43 65 6e 74 72 61 6c 20 49 74 61 6c 79 2e 3c   Central Italy.<
2e60: 2f 6c 69 3e 0d 0a 3c 6c 69 3e 4d 65 73 73 69 6e  /li>..<li>Messin
2e70: 61 20 77 69 6c 6c 20 61 63 71 75 69 72 65 20 61  a will acquire a
2e80: 20 64 65 63 69 73 69 76 65 20 73 74 72 61 74 65   decisive strate
2e90: 67 69 63 20 72 6f 6c 65 2c 20 61 6e 64 20 77 69  gic role, and wi
2ea0: 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65 20 74 65  ll become the te
2eb0: 72 6d 69 6e 61 6c 20 66 6f 72 20 66 65 72 72 79  rminal for ferry
2ec0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 6c 65 61   connections lea
2ed0: 64 69 6e 67 20 74 6f 20 43 65 6e 74 72 61 6c 20  ding to Central 
2ee0: 61 6e 64 20 4e 6f 72 74 68 65 72 6e 20 49 74 61  and Northern Ita
2ef0: 6c 79 3a 20 43 69 76 69 74 61 76 65 63 63 68 69  ly: Civitavecchi
2f00: 61 2c 20 4c 65 67 68 6f 72 6e 20 61 6e 64 20 47  a, Leghorn and G
2f10: 65 6e 6f 61 20 61 72 65 20 74 68 65 20 6f 62 76  enoa are the obv
2f20: 69 6f 75 73 20 64 65 73 74 69 6e 61 74 69 6f 6e  ious destination
2f30: 73 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 41 20 6c  s.</li>..<li>A l
2f40: 65 73 73 20 72 65 6c 65 76 61 6e 74 20 28 62 75  ess relevant (bu
2f50: 74 20 61 6e 79 77 61 79 20 69 6e 74 65 72 65 73  t anyway interes
2f60: 74 69 6e 67 29 20 66 65 72 72 79 20 6c 69 6e 6b  ting) ferry link
2f70: 20 77 69 6c 6c 20 6a 6f 69 6e 20 54 72 61 70 61   will join Trapa
2f80: 6e 69 20 61 6e 64 20 52 65 67 67 69 6f 20 43 61  ni and Reggio Ca
2f90: 6c 61 62 72 69 61 2e 3c 2f 6c 69 3e 0d 0a 3c 6c  labria.</li>..<l
2fa0: 69 3e 53 61 72 64 69 6e 69 61 20 77 69 6c 6c 20  i>Sardinia will 
2fb0: 73 74 72 6f 6e 67 6c 79 20 62 65 6e 65 66 69 74  strongly benefit
2fc0: 20 66 72 6f 6d 20 74 68 65 20 6e 65 77 20 6c 61   from the new la
2fd0: 79 6f 75 74 3b 20 43 61 67 6c 69 61 72 69 20 77  yout; Cagliari w
2fe0: 69 6c 6c 20 62 65 20 64 69 72 65 63 74 6c 79 20  ill be directly 
2ff0: 63 6f 6e 6e 65 63 74 65 64 20 74 6f 20 53 79 72  connected to Syr
3000: 61 63 75 73 65 20 28 6f 72 20 6d 61 79 20 62 65  acuse (or may be
3010: 20 41 75 67 75 73 74 61 29 2c 20 61 6e 64 20 4f   Augusta), and O
3020: 6c 62 69 61 20 74 6f 20 4d 65 73 73 69 6e 61 2e  lbia to Messina.
3030: 3c 62 72 3e 54 68 69 73 20 6d 65 61 6e 73 20 64  <br>This means d
3040: 65 66 69 6e 69 74 65 6c 79 20 62 72 65 61 6b 69  efinitely breaki
3050: 6e 67 20 74 68 65 20 73 65 63 75 6c 61 72 20 69  ng the secular i
3060: 6e 73 75 6c 61 74 69 6f 6e 20 6f 66 20 53 61 72  nsulation of Sar
3070: 64 69 6e 69 61 2c 20 74 68 61 74 20 77 69 6c 6c  dinia, that will
3080: 20 6e 6f 77 20 73 74 61 72 74 20 65 6e 6a 6f 79   now start enjoy
3090: 69 6e 67 20 61 20 73 74 72 6f 6e 67 65 72 20 61  ing a stronger a
30a0: 6e 64 20 6d 6f 72 65 20 65 66 66 65 63 74 69 76  nd more effectiv
30b0: 65 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 77 69  e integration wi
30c0: 74 68 20 53 6f 75 74 68 65 72 6e 20 49 74 61 6c  th Southern Ital
30d0: 79 2e 3c 2f 6c 69 3e 20 0d 0a 3c 6c 69 3e 4c 61  y.</li> ..<li>La
30e0: 73 74 20 62 75 74 20 6e 6f 74 20 6c 65 61 73 74  st but not least
30f0: 3a 20 61 74 20 61 20 6d 6f 72 65 20 73 74 72 61  : at a more stra
3100: 74 65 67 69 63 20 6c 65 76 65 6c 20 69 74 27 73  tegic level it's
3110: 20 61 62 73 6f 6c 75 74 65 6c 79 20 6f 62 76 69   absolutely obvi
3120: 6f 75 73 20 74 68 61 74 20 6e 6f 77 20 73 75 70  ous that now sup
3130: 65 72 74 61 6e 6b 65 72 73 2c 20 62 69 67 20 63  ertankers, big c
3140: 6f 6e 74 61 69 6e 65 72 20 73 68 69 70 73 20 61  ontainer ships a
3150: 6e 64 20 63 72 75 69 73 65 20 6c 69 6e 65 72 73  nd cruise liners
3160: 20 63 61 6e 20 66 72 65 65 6c 79 20 63 69 72 63   can freely circ
3170: 75 6d 6e 61 76 69 67 61 74 65 20 53 69 63 69 6c  umnavigate Sicil
3180: 79 20 69 6e 20 61 6e 79 20 64 69 72 65 63 74 69  y in any directi
3190: 6f 6e 20 75 6e 64 65 72 20 75 6e 63 6f 6d 70 72  on under uncompr
31a0: 6f 6d 69 73 65 64 20 73 61 66 65 74 79 20 63 6f  omised safety co
31b0: 6e 64 69 74 69 6f 6e 73 2e 3c 62 72 3e 0d 0a 41  nditions.<br>..A
31c0: 6e 64 20 63 6f 6e 73 65 71 75 65 6e 74 6c 79 20  nd consequently 
31d0: 61 6c 6c 20 54 79 72 72 68 65 6e 69 61 6e 20 68  all Tyrrhenian h
31e0: 61 72 62 6f 72 73 20 77 69 6c 6c 20 6e 6f 77 20  arbors will now 
31f0: 62 65 20 64 69 72 65 63 74 6c 79 20 63 6f 6e 6e  be directly conn
3200: 65 63 74 65 64 20 62 6f 74 68 20 74 6f 20 45 61  ected both to Ea
3210: 73 74 65 72 6e 20 61 6e 64 20 57 65 73 74 65 72  stern and Wester
3220: 6e 20 4d 65 64 69 74 65 72 72 61 6e 65 61 6e 3a  n Mediterranean:
3230: 20 74 68 69 73 20 77 69 6c 6c 20 73 75 72 65 6c   this will surel
3240: 79 20 69 6e 64 75 63 65 20 61 20 72 65 6d 61 72  y induce a remar
3250: 6b 61 62 6c 65 20 67 72 6f 77 74 68 20 69 6e 20  kable growth in 
3260: 74 68 65 20 76 6f 6c 75 6d 65 73 20 6f 66 20 69  the volumes of i
3270: 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 74 72 61  nternational tra
3280: 66 66 69 63 73 20 74 68 65 79 20 63 6f 75 6c 64  ffics they could
3290: 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 61 74 74   potentially att
32a0: 72 61 63 74 2e 3c 2f 6c 69 3e 20 0d 0a 3c 2f 75  ract.</li> ..</u
32b0: 6c 3e 3c 2f 6c 69 3e 20 0d 0a 3c 6c 69 3e 3c 62  l></li> ..<li><b
32c0: 3e 48 65 61 76 79 20 69 6e 64 75 73 74 72 79 3c  >Heavy industry<
32d0: 2f 62 3e 3a 20 74 68 65 20 6e 65 77 20 74 72 61  /b>: the new tra
32e0: 6e 73 70 6f 72 74 61 74 69 6f 6e 20 73 79 73 74  nsportation syst
32f0: 65 6d 20 73 74 72 6f 6e 67 6c 79 20 63 65 6e 74  em strongly cent
3300: 65 72 65 64 20 61 72 6f 75 6e 64 20 6d 61 72 69  ered around mari
3310: 74 69 6d 65 20 63 6f 6d 6d 75 6e 69 63 61 74 69  time communicati
3320: 6f 6e 73 20 77 69 6c 6c 20 73 75 72 65 6c 79 20  ons will surely 
3330: 69 6e 64 75 63 65 20 61 6e 20 61 63 74 69 76 65  induce an active
3340: 20 72 65 62 69 72 74 68 20 6f 66 20 73 68 69 70   rebirth of ship
3350: 79 61 72 64 73 2c 20 61 20 66 6c 6f 75 72 69 73  yards, a flouris
3360: 68 69 6e 67 20 74 72 61 64 69 74 69 6f 6e 61 6c  hing traditional
3370: 20 65 78 63 65 6c 6c 65 6e 63 65 20 6f 66 20 6d   excellence of m
3380: 61 6e 79 20 73 6f 75 74 68 65 72 6e 20 72 65 67  any southern reg
3390: 69 6f 6e 73 20 69 6e 20 70 61 73 74 20 74 69 6d  ions in past tim
33a0: 65 73 20 62 75 74 20 6e 6f 77 61 64 61 79 73 20  es but nowadays 
33b0: 61 20 64 65 63 6c 69 6e 69 6e 67 20 61 63 74 69  a declining acti
33c0: 76 69 74 79 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e  vity.</li>..<li>
33d0: 3c 62 3e 54 6f 75 72 69 73 6d 3c 2f 62 3e 3a 20  <b>Tourism</b>: 
33e0: 61 20 72 65 61 72 72 61 6e 67 65 64 20 4c 6f 77  a rearranged Low
33f0: 65 72 20 54 79 72 72 68 65 6e 69 61 6e 20 53 65  er Tyrrhenian Se
3400: 61 20 77 69 6c 6c 20 63 65 72 74 61 69 6e 6c 79  a will certainly
3410: 20 70 72 6f 6d 6f 74 65 20 61 20 73 74 72 6f 6e   promote a stron
3420: 67 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20 6f 66  g development of
3430: 20 69 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 20 74   international t
3440: 6f 75 72 69 73 6d 2e 3c 62 72 3e 0d 0a 49 74 27  ourism.<br>..It'
3450: 73 20 77 6f 72 74 68 20 6e 6f 74 69 6e 67 20 74  s worth noting t
3460: 68 61 74 20 74 68 65 20 70 72 6f 70 6f 73 65 64  hat the proposed
3470: 20 6c 61 79 6f 75 74 20 77 69 6c 6c 20 67 69 76   layout will giv
3480: 65 20 62 69 72 74 68 20 74 6f 20 61 20 77 6f 6e  e birth to a won
3490: 64 65 72 66 75 6c 20 69 73 6c 61 6e 64 20 67 72  derful island gr
34a0: 6f 75 70 20 65 78 74 65 6e 64 69 6e 67 20 62 65  oup extending be
34b0: 74 77 65 65 6e 20 53 69 63 69 6c 79 20 61 6e 64  tween Sicily and
34c0: 20 73 6f 75 74 68 65 72 6e 20 4c 61 7a 69 6f 20   southern Lazio 
34d0: 2d 20 43 61 6d 70 61 6e 69 61 3b 20 74 68 65 20  - Campania; the 
34e0: 50 6f 6e 74 69 6e 65 2c 20 41 65 6f 6c 69 61 6e  Pontine, Aeolian
34f0: 20 61 6e 64 20 47 75 6c 66 20 6f 66 20 4e 61 70   and Gulf of Nap
3500: 6c 65 73 20 69 73 6c 61 6e 64 73 20 77 69 6c 6c  les islands will
3510: 20 62 65 20 70 72 61 63 74 69 63 61 6c 6c 79 20   be practically 
3520: 6d 65 72 67 65 64 20 69 6e 74 6f 20 61 20 73 69  merged into a si
3530: 6e 67 6c 65 20 61 72 63 68 69 70 65 6c 61 67 6f  ngle archipelago
3540: 2e 3c 62 72 3e 0d 0a 53 65 76 65 72 61 6c 20 6f  .<br>..Several o
3550: 66 20 74 68 65 73 65 20 69 73 6c 61 6e 64 73 20  f these islands 
3560: 61 63 74 75 61 6c 6c 79 20 61 72 65 20 61 63 74  actually are act
3570: 69 76 65 20 76 6f 6c 63 61 6e 6f 65 73 2c 20 61  ive volcanoes, a
3580: 6e 64 20 74 68 65 20 6e 65 77 20 69 73 6c 61 6e  nd the new islan
3590: 64 20 63 68 61 69 6e 20 77 69 6c 6c 20 64 69 72  d chain will dir
35a0: 65 63 74 6c 79 20 6a 6f 69 6e 20 4d 6f 75 6e 74  ectly join Mount
35b0: 20 45 74 6e 61 20 61 6e 64 20 4d 6f 75 6e 74 20   Etna and Mount 
35c0: 56 65 73 75 76 69 75 73 2e 3c 62 72 3e 0d 0a 53  Vesuvius.<br>..S
35d0: 6f 20 74 68 69 73 20 61 72 65 61 20 77 69 6c 6c  o this area will
35e0: 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 6d   represent the m
35f0: 6f 73 74 20 69 6d 70 72 65 73 73 69 76 65 20 76  ost impressive v
3600: 6f 6c 63 61 6e 69 63 20 66 69 65 6c 64 20 6f 66  olcanic field of
3610: 20 45 75 72 6f 70 65 20 61 6e 64 20 77 69 6c 6c   Europe and will
3620: 20 63 65 72 74 61 69 6e 6c 79 20 62 65 63 6f 6d   certainly becom
3630: 65 20 61 20 73 74 72 6f 6e 67 20 74 6f 75 72 69  e a strong touri
3640: 73 74 69 63 20 61 74 74 72 61 63 74 69 6f 6e 20  stic attraction 
3650: 74 68 61 6e 6b 73 20 74 6f 20 69 74 73 20 6e 69  thanks to its ni
3660: 63 65 6c 79 20 73 75 6e 6e 79 20 77 65 61 74 68  cely sunny weath
3670: 65 72 20 61 6e 64 20 70 6c 65 61 73 61 6e 74 20  er and pleasant 
3680: 63 6c 69 6d 61 74 65 2e 0d 0a 3c 2f 6c 69 3e 0d  climate...</li>.
3690: 0a 3c 6c 69 3e 3c 62 3e 49 6e 74 65 72 6e 61 6c  .<li><b>Internal
36a0: 20 63 6f 6d 6d 65 72 63 65 3c 2f 62 3e 3a 20 77   commerce</b>: w
36b0: 65 20 63 61 6e 20 65 61 73 69 6c 79 20 66 6f 72  e can easily for
36c0: 65 63 61 73 74 20 61 20 73 74 72 6f 6e 67 20 67  ecast a strong g
36d0: 72 6f 77 74 68 20 69 6e 20 76 6f 6c 75 6d 65 20  rowth in volume 
36e0: 6f 66 20 69 6e 74 65 72 6e 61 6c 20 65 78 63 68  of internal exch
36f0: 61 6e 67 65 73 20 74 68 61 6e 6b 73 20 74 6f 20  anges thanks to 
3700: 74 68 65 20 62 65 74 74 65 72 20 63 6f 6e 6e 65  the better conne
3710: 63 74 69 76 69 74 79 20 62 61 73 65 64 20 6f 6e  ctivity based on
3720: 20 6d 61 72 69 74 69 6d 65 20 74 72 61 6e 73 70   maritime transp
3730: 6f 72 74 73 2e 3c 62 72 3e 20 0d 0a 4a 75 73 74  orts.<br> ..Just
3740: 20 61 20 73 69 6e 67 6c 65 20 65 78 61 6d 70 6c   a single exampl
3750: 65 3a 20 53 61 72 64 69 6e 69 61 20 73 68 6f 75  e: Sardinia shou
3760: 6c 64 20 6e 6f 77 20 62 65 20 61 62 6c 65 20 74  ld now be able t
3770: 6f 20 65 78 70 6f 72 74 20 69 74 73 20 66 69 6e  o export its fin
3780: 65 73 74 20 73 68 65 65 70 20 63 68 65 65 73 65  est sheep cheese
3790: 20 6f 6e 20 43 61 6c 61 62 72 69 61 6e 20 6d 61   on Calabrian ma
37a0: 72 6b 65 74 73 20 77 68 69 6c 73 74 20 43 61 6c  rkets whilst Cal
37b0: 61 62 72 69 61 20 63 6f 75 6c 64 20 66 72 65 65  abria could free
37c0: 6c 79 20 65 78 70 6f 72 74 20 69 74 73 20 72 65  ly export its re
37d0: 6e 6f 77 6e 20 72 65 64 20 68 6f 74 20 63 68 69  nown red hot chi
37e0: 6c 6c 79 20 70 65 70 70 65 72 73 20 74 6f 20 53  lly peppers to S
37f0: 61 72 64 69 6e 69 61 3b 20 6e 6f 74 20 6f 6e 6c  ardinia; not onl
3800: 79 20 62 6f 74 68 20 72 65 67 69 6f 6e 73 20 77  y both regions w
3810: 69 6c 6c 20 77 69 64 65 6c 79 20 62 65 6e 65 66  ill widely benef
3820: 69 74 20 66 72 6f 6d 20 69 6e 63 72 65 61 73 65  it from increase
3830: 64 20 65 78 63 68 61 6e 67 65 20 76 6f 6c 75 6d  d exchange volum
3840: 65 73 2c 20 62 75 74 20 53 69 63 69 6c 79 20 61  es, but Sicily a
3850: 73 20 77 65 6c 6c 20 77 69 6c 6c 20 74 61 6b 65  s well will take
3860: 20 70 72 6f 66 69 74 20 66 72 6f 6d 20 66 6c 6f   profit from flo
3870: 75 72 69 73 68 69 6e 67 20 6c 6f 67 69 73 74 69  urishing logisti
3880: 63 20 61 6e 64 20 62 79 20 6f 74 68 65 72 20 61  c and by other a
3890: 63 74 69 76 69 74 69 65 73 20 62 61 73 65 64 20  ctivities based 
38a0: 6f 6e 20 63 6f 6d 6d 65 72 63 69 61 6c 20 69 6e  on commercial in
38b0: 74 65 72 6d 65 64 69 61 74 69 6f 6e 20 73 65 72  termediation ser
38c0: 76 69 63 65 73 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69  vices.</li>..<li
38d0: 3e 3c 62 3e 50 72 61 63 74 69 63 61 6c 20 72 65  ><b>Practical re
38e0: 61 6c 69 7a 61 74 69 6f 6e 3c 2f 62 3e 3a 20 74  alization</b>: t
38f0: 68 65 20 70 72 65 73 65 6e 74 20 73 74 75 64 79  he present study
3900: 20 63 6c 65 61 72 6c 79 20 64 65 6d 6f 6e 73 74   clearly demonst
3910: 72 61 74 65 73 20 74 68 61 74 20 74 68 65 72 65  rates that there
3920: 20 69 73 20 6e 6f 74 68 69 6e 67 20 69 6e 20 4d   is nothing in M
3930: 61 74 68 65 6d 61 74 69 63 73 2c 20 47 65 6f 6d  athematics, Geom
3940: 65 74 72 79 20 6f 72 20 47 65 6f 67 72 61 70 68  etry or Geograph
3950: 79 20 66 6f 72 62 69 64 64 69 6e 67 20 74 68 65  y forbidding the
3960: 20 70 72 61 63 74 69 63 61 6c 20 72 65 61 6c 69   practical reali
3970: 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 75  zation of the su
3980: 67 67 65 73 74 65 64 20 69 64 65 61 2e 3c 62 72  ggested idea.<br
3990: 3e 0d 0a 55 6e 68 61 70 70 69 6c 79 20 74 68 65  >..Unhappily the
39a0: 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f   current state o
39b0: 66 20 74 68 65 20 61 72 74 20 69 6e 20 47 65 6f  f the art in Geo
39c0: 6c 6f 67 79 20 73 74 69 6c 6c 20 70 6f 73 65 73  logy still poses
39d0: 20 6d 61 6e 79 20 70 75 7a 7a 6c 69 6e 67 20 70   many puzzling p
39e0: 72 6f 62 6c 65 6d 73 20 6e 6f 74 20 79 65 74 20  roblems not yet 
39f0: 66 75 6c 6c 79 20 72 65 73 6f 6c 76 65 64 2e 3c  fully resolved.<
3a00: 62 72 3e 0d 0a 41 6e 79 77 61 79 20 77 65 20 61  br>..Anyway we a
3a10: 72 65 20 68 6f 70 65 66 75 6c 6c 79 20 65 78 70  re hopefully exp
3a20: 65 63 74 69 6e 67 20 74 68 61 74 20 66 75 74 75  ecting that futu
3a30: 72 65 20 61 64 76 61 6e 63 65 6d 65 6e 74 73 20  re advancements 
3a40: 69 6e 20 54 65 63 74 6f 6e 69 63 73 20 77 69 6c  in Tectonics wil
3a50: 6c 20 70 6f 73 73 69 62 6c 79 20 61 6c 6c 6f 77  l possibly allow
3a60: 20 74 6f 20 6f 76 65 72 63 6f 6d 65 20 61 6e 79   to overcome any
3a70: 20 72 65 6d 61 69 6e 69 6e 67 20 69 73 73 75 65   remaining issue
3a80: 2e 20 4d 6f 72 65 20 73 70 65 63 69 66 69 63 61  . More specifica
3a90: 6c 6c 79 20 61 20 62 65 74 74 65 72 20 6b 6e 6f  lly a better kno
3aa0: 77 6c 65 64 67 65 20 6f 66 20 69 6e 74 65 72 61  wledge of intera
3ab0: 63 74 69 6f 6e 73 20 62 65 74 77 65 65 6e 20 74  ctions between t
3ac0: 68 65 20 63 72 75 73 74 20 61 6e 64 20 74 68 65  he crust and the
3ad0: 20 75 70 70 65 72 20 6d 61 6e 74 6c 65 20 61 6c   upper mantle al
3ae0: 6f 6e 67 20 74 68 65 20 4d 6f 68 6f 20 61 6e 64  ong the Moho and
3af0: 20 61 20 64 65 65 70 65 72 20 63 6f 6d 70 72 65   a deeper compre
3b00: 68 65 6e 73 69 6f 6e 20 6f 66 20 74 68 65 20 6d  hension of the m
3b10: 69 63 72 6f 2d 70 6c 61 71 75 65 73 20 6d 65 63  icro-plaques mec
3b20: 68 61 6e 69 63 73 20 77 69 6c 6c 20 63 65 72 74  hanics will cert
3b30: 61 69 6e 6c 79 20 68 65 6c 70 3b 20 77 65 20 61  ainly help; we a
3b40: 72 65 20 72 61 74 68 65 72 20 63 6f 6e 66 69 64  re rather confid
3b50: 65 6e 74 20 69 6e 20 66 75 74 75 72 65 20 72 65  ent in future re
3b60: 73 65 61 72 63 68 20 61 63 68 69 65 76 65 6d 65  search achieveme
3b70: 6e 74 73 20 6f 6e 20 74 68 65 73 65 20 66 69 65  nts on these fie
3b80: 6c 64 73 2e 0d 0a 3c 2f 6f 6c 3e 0d 0a 3c 2f 74  lds...</ol>..</t
3b90: 64 3e 3c 74 64 3e 0d 0a 3c 69 6d 67 20 73 72 63  d><td>..<img src
3ba0: 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 61  ="https://www.ga
3bb0: 69 61 2d 67 69 73 2e 69 74 2f 67 61 69 61 2d 73  ia-gis.it/gaia-s
3bc0: 69 6e 73 2f 61 66 66 69 6e 65 2d 70 69 63 73 2f  ins/affine-pics/
3bd0: 69 74 61 6c 79 2d 32 2e 30 2e 70 6e 67 22 20 61  italy-2.0.png" a
3be0: 6c 74 3d 22 69 74 61 6c 79 2d 32 2e 30 22 20 62  lt="italy-2.0" b
3bf0: 6f 72 64 65 72 3d 22 31 22 3e 0d 0a 3c 2f 74 64  order="1">..</td
3c00: 3e 3c 2f 74 72 3e 0d 0a 3c 2f 74 61 62 6c 65 3e  ></tr>..</table>
3c10: 3c 62 72 3e 3c 68 72 3e 0d 0a 3c 68 32 3e 42 6f  <br><hr>..<h2>Bo
3c20: 72 69 6e 67 20 4d 61 74 68 3a 20 61 20 6d 6f 72  ring Math: a mor
3c30: 65 20 66 6f 72 6d 61 6c 20 70 72 65 73 65 6e 74  e formal present
3c40: 61 74 69 6f 6e 3c 2f 68 32 3e 0d 0a 50 6c 61 79  ation</h2>..Play
3c50: 74 69 6d 65 27 73 20 6f 76 65 72 3a 20 77 65 27  time's over: we'
3c60: 6c 6c 20 6e 6f 77 20 73 74 61 72 74 20 61 20 6d  ll now start a m
3c70: 6f 73 74 20 73 65 72 69 6f 75 73 20 65 78 70 6c  ost serious expl
3c80: 61 6e 61 74 69 6f 6e 2e 3c 62 72 3e 3c 62 72 3e  anation.<br><br>
3c90: 0d 0a 41 6e 20 41 66 66 69 6e 65 20 54 72 61 6e  ..An Affine Tran
3ca0: 73 66 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62  sformation can b
3cb0: 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 69 6e  e represented in
3cc0: 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 61 20 73   the form of a s
3cd0: 71 75 61 72 65 20 6d 61 74 72 69 78 3b 20 74 68  quare matrix; th
3ce0: 65 20 73 69 6d 70 6c 65 72 20 3c 62 3e 32 44 3c  e simpler <b>2D<
3cf0: 2f 62 3e 20 63 61 73 65 20 72 65 71 75 69 72 65  /b> case require
3d00: 73 20 61 20 3c 62 3e 33 20 78 20 33 3c 2f 62 3e  s a <b>3 x 3</b>
3d10: 20 6d 61 74 72 69 78 2c 20 61 6e 64 20 74 68 65   matrix, and the
3d20: 20 66 6f 6c 6c 6f 77 69 6e 67 73 20 61 72 65 20   followings are 
3d30: 74 68 65 20 70 6f 73 73 69 62 6c 65 20 61 72 72  the possible arr
3d40: 61 6e 67 65 6d 65 6e 74 73 20 63 6f 72 72 65 73  angements corres
3d50: 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68 20  ponding to each 
3d60: 65 6c 65 6d 65 6e 74 61 72 79 20 74 72 61 6e 73  elementary trans
3d70: 66 6f 72 6d 61 74 69 6f 6e 3a 3c 62 72 3e 3c 62  formation:<br><b
3d80: 72 3e 0d 0a 3c 74 61 62 6c 65 3e 0d 0a 3c 74 72  r>..<table>..<tr
3d90: 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22 34 22  ><td rowspan="4"
3da0: 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 22   valign="middle"
3db0: 3e 47 65 6e 65 72 61 6c 20 6c 61 79 6f 75 74 3c  >General layout<
3dc0: 2f 74 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e  /td>..<td>/</td>
3dd0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
3de0: 72 22 3e 3c 62 3e 61 3c 2f 62 3e 3c 2f 74 64 3e  r"><b>a</b></td>
3df0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
3e00: 72 22 3e 3c 62 3e 62 3c 2f 62 3e 3c 2f 74 64 3e  r"><b>b</b></td>
3e10: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
3e20: 72 22 3e 3c 62 3e 78 6f 66 66 3c 2f 62 3e 3c 2f  r"><b>xoff</b></
3e30: 74 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74  td><td>\</td></t
3e40: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74  r>..<tr><td>|</t
3e50: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
3e60: 74 65 72 22 3e 3c 62 3e 64 3c 2f 62 3e 3c 2f 74  ter"><b>d</b></t
3e70: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
3e80: 74 65 72 22 3e 3c 62 3e 65 3c 2f 62 3e 3c 2f 74  ter"><b>e</b></t
3e90: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
3ea0: 74 65 72 22 3e 3c 62 3e 79 6f 66 66 3c 2f 62 3e  ter"><b>yoff</b>
3eb0: 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c  </td><td>|</td><
3ec0: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c  /tr>..<tr><td>\<
3ed0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
3ee0: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64  enter">0</td><td
3ef0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
3f00: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  0</td><td align=
3f10: 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c  "center">1</td><
3f20: 74 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a  td>/</td></tr>..
3f30: 3c 74 72 3e 3c 74 64 20 63 6f 6c 73 70 61 6e 3d  <tr><td colspan=
3f40: 22 35 22 3e 3c 68 72 3e 3c 2f 74 64 3e 3c 2f 74  "5"><hr></td></t
3f50: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 20 72 6f 77 73  r>..<tr><td rows
3f60: 70 61 6e 3d 22 34 22 20 76 61 6c 69 67 6e 3d 22  pan="4" valign="
3f70: 6d 69 64 64 6c 65 22 3e 49 64 65 6e 74 69 74 79  middle">Identity
3f80: 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64  </td>..<td>/</td
3f90: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
3fa0: 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">1</td><td al
3fb0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f  ign="center">0</
3fc0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
3fd0: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e  nter">0</td><td>
3fe0: 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72  \</td></tr>..<tr
3ff0: 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61  ><td>|</td><td a
4000: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
4010: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
4020: 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64  enter">1</td><td
4030: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
4040: 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e  0</td><td>|</td>
4050: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c  </tr>..<tr><td>\
4060: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
4070: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74  center">0</td><t
4080: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
4090: 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  >0</td><td align
40a0: 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e  ="center">1</td>
40b0: 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  <td>/</td></tr>.
40c0: 0a 3c 74 72 3e 3c 74 64 20 63 6f 6c 73 70 61 6e  .<tr><td colspan
40d0: 3d 22 35 22 3e 3c 68 72 3e 3c 2f 74 64 3e 3c 2f  ="5"><hr></td></
40e0: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 20 72 6f 77  tr>..<tr><td row
40f0: 73 70 61 6e 3d 22 34 22 20 76 61 6c 69 67 6e 3d  span="4" valign=
4100: 22 6d 69 64 64 6c 65 22 3e 54 72 61 6e 73 6c 61  "middle">Transla
4110: 74 65 28 3c 62 3e 74 78 3c 2f 62 3e 2c 20 3c 62  te(<b>tx</b>, <b
4120: 3e 74 79 3c 2f 62 3e 29 26 6e 62 73 70 3b 26 6e  >ty</b>)&nbsp;&n
4130: 62 73 70 3b 26 6e 62 73 70 3b 3c 2f 74 64 3e 0d  bsp;&nbsp;</td>.
4140: 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61  .<td>/</td><td a
4150: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c  lign="center">1<
4160: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
4170: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64  enter">0</td><td
4180: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
4190: 3c 62 3e 74 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74  <b>tx</b></td><t
41a0: 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  d>\</td></tr>..<
41b0: 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64  tr><td>|</td><td
41c0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
41d0: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  0</td><td align=
41e0: 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c  "center">1</td><
41f0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
4200: 22 3e 3c 62 3e 74 79 3c 2f 62 3e 3c 2f 74 64 3e  "><b>ty</b></td>
4210: 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  <td>|</td></tr>.
4220: 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c  .<tr><td>\</td><
4230: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
4240: 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ">0</td><td alig
4250: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
4260: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
4270: 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c  er">1</td><td>/<
4280: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c  /td></tr>..<tr><
4290: 74 64 20 63 6f 6c 73 70 61 6e 3d 22 35 22 3e 3c  td colspan="5"><
42a0: 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  hr></td></tr>..<
42b0: 74 72 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22  tr><td rowspan="
42c0: 34 22 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c  4" valign="middl
42d0: 65 22 3e 53 63 61 6c 65 28 3c 62 3e 73 78 3c 2f  e">Scale(<b>sx</
42e0: 62 3e 2c 20 3c 62 3e 73 79 3c 2f 62 3e 29 3c 2f  b>, <b>sy</b>)</
42f0: 74 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c  td>..<td>/</td><
4300: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
4310: 22 3e 3c 62 3e 73 78 3c 2f 62 3e 3c 2f 74 64 3e  "><b>sx</b></td>
4320: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
4330: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  r">0</td><td ali
4340: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74  gn="center">0</t
4350: 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72  d><td>\</td></tr
4360: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64  >..<tr><td>|</td
4370: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
4380: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">0</td><td al
4390: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e  ign="center"><b>
43a0: 73 79 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61  sy</b></td><td a
43b0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
43c0: 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f  /td><td>|</td></
43d0: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f  tr>..<tr><td>\</
43e0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
43f0: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20  nter">0</td><td 
4400: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30  align="center">0
4410: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
4420: 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74  center">1</td><t
4430: 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  d>/</td></tr>..<
4440: 74 72 3e 3c 74 64 20 63 6f 6c 73 70 61 6e 3d 22  tr><td colspan="
4450: 35 22 3e 3c 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72  5"><hr></td></tr
4460: 3e 0d 0a 3c 74 72 3e 3c 74 64 20 72 6f 77 73 70  >..<tr><td rowsp
4470: 61 6e 3d 22 34 22 20 76 61 6c 69 67 6e 3d 22 6d  an="4" valign="m
4480: 69 64 64 6c 65 22 3e 52 6f 74 61 74 65 28 3c 62  iddle">Rotate(<b
4490: 3e 26 74 68 65 74 61 3b 3c 2f 62 3e 29 3c 2f 74  >&theta;</b>)</t
44a0: 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74  d>..<td>/</td><t
44b0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
44c0: 3e 3c 62 3e 63 6f 73 28 26 74 68 65 74 61 3b 29  ><b>cos(&theta;)
44d0: 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  </b></td><td ali
44e0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 2d  gn="center"><b>-
44f0: 73 69 6e 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e  sin(&theta;)</b>
4500: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
4510: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74  center">0</td><t
4520: 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  d>\</td></tr>..<
4530: 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64  tr><td>|</td><td
4540: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
4550: 3c 62 3e 73 69 6e 28 26 74 68 65 74 61 3b 29 3c  <b>sin(&theta;)<
4560: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  /b></td><td alig
4570: 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 63 6f  n="center"><b>co
4580: 73 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f  s(&theta;)</b></
4590: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
45a0: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e  nter">0</td><td>
45b0: 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72  |</td></tr>..<tr
45c0: 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61  ><td>\</td><td a
45d0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
45e0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
45f0: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64  enter">0</td><td
4600: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
4610: 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e  1</td><td>/</td>
4620: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c  </tr>..<tr><td><
4630: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 2f 74 61 62  /td></tr>..</tab
4640: 6c 65 3e 3c 62 72 3e 0d 0a 41 20 3c 62 3e 33 44  le><br>..A <b>3D
4650: 3c 2f 62 3e 20 61 66 66 69 6e 65 20 74 72 61 6e  </b> affine tran
4660: 73 66 6f 72 6d 61 74 69 6f 6e 20 72 65 71 75 69  sformation requi
4670: 72 65 73 20 61 20 3c 62 3e 34 20 78 20 34 3c 2f  res a <b>4 x 4</
4680: 62 3e 20 6d 61 74 72 69 78 2e 3c 62 72 3e 0d 0a  b> matrix.<br>..
4690: 41 73 20 79 6f 75 20 63 61 6e 20 65 61 73 69 6c  As you can easil
46a0: 79 20 6e 6f 74 69 63 65 20 74 68 65 72 65 20 69  y notice there i
46b0: 73 20 61 6e 20 6f 62 76 69 6f 75 73 20 64 69 72  s an obvious dir
46c0: 65 63 74 20 72 65 6c 61 74 69 6f 6e 20 62 65 74  ect relation bet
46d0: 77 65 65 6e 20 61 20 33 44 20 6d 61 74 72 69 78  ween a 3D matrix
46e0: 20 61 6e 64 20 61 20 32 44 20 6d 61 74 72 69 78   and a 2D matrix
46f0: 3b 20 6e 6f 74 69 63 65 20 74 68 65 20 63 65 6c  ; notice the cel
4700: 6c 73 20 73 68 6f 77 69 6e 67 20 61 20 67 72 61  ls showing a gra
4710: 79 20 62 61 63 6b 67 72 6f 75 6e 64 2e 3c 62 72  y background.<br
4720: 3e 3c 62 72 3e 0d 0a 3c 74 61 62 6c 65 3e 0d 0a  ><br>..<table>..
4730: 3c 74 72 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d  <tr><td rowspan=
4740: 22 35 22 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64  "5" valign="midd
4750: 6c 65 22 3e 47 65 6e 65 72 61 6c 20 6c 61 79 6f  le">General layo
4760: 75 74 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e  ut&nbsp;&nbsp;&n
4770: 62 73 70 3b 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 2f  bsp;</td>..<td>/
4780: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
4790: 63 65 6e 74 65 72 22 3e 3c 62 3e 61 3c 2f 62 3e  center"><b>a</b>
47a0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
47b0: 63 65 6e 74 65 72 22 3e 3c 62 3e 62 3c 2f 62 3e  center"><b>b</b>
47c0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
47d0: 63 65 6e 74 65 72 22 20 62 67 63 6f 6c 6f 72 3d  center" bgcolor=
47e0: 22 23 64 30 64 30 64 30 22 3e 3c 62 3e 63 3c 2f  "#d0d0d0"><b>c</
47f0: 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  b></td><td align
4800: 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 78 6f 66  ="center"><b>xof
4810: 66 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 5c 3c  f</b></td><td>\<
4820: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c  /td></tr>..<tr><
4830: 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  td>|</td><td ali
4840: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 64  gn="center"><b>d
4850: 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  </b></td><td ali
4860: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 65  gn="center"><b>e
4870: 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  </b></td><td ali
4880: 67 6e 3d 22 63 65 6e 74 65 72 22 20 62 67 63 6f  gn="center" bgco
4890: 6c 6f 72 3d 22 23 64 30 64 30 64 30 22 3e 3c 62  lor="#d0d0d0"><b
48a0: 3e 66 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61  >f</b></td><td a
48b0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62  lign="center"><b
48c0: 3e 79 6f 66 66 3c 2f 62 3e 3c 2f 74 64 3e 3c 74  >yoff</b></td><t
48d0: 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  d>|</td></tr>..<
48e0: 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64  tr><td>|</td><td
48f0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20   align="center" 
4900: 62 67 63 6f 6c 6f 72 3d 22 23 64 30 64 30 64 30  bgcolor="#d0d0d0
4910: 22 3e 3c 62 3e 67 3c 2f 62 3e 3c 2f 74 64 3e 3c  "><b>g</b></td><
4920: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
4930: 22 20 62 67 63 6f 6c 6f 72 3d 22 23 64 30 64 30  " bgcolor="#d0d0
4940: 64 30 22 3e 3c 62 3e 68 3c 2f 62 3e 3c 2f 74 64  d0"><b>h</b></td
4950: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
4960: 65 72 22 20 62 67 63 6f 6c 6f 72 3d 22 23 64 30  er" bgcolor="#d0
4970: 64 30 64 30 22 3e 3c 62 3e 69 3c 2f 62 3e 3c 2f  d0d0"><b>i</b></
4980: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
4990: 6e 74 65 72 22 20 62 67 63 6f 6c 6f 72 3d 22 23  nter" bgcolor="#
49a0: 64 30 64 30 64 30 22 3e 3c 62 3e 7a 6f 66 66 3c  d0d0d0"><b>zoff<
49b0: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74  /b></td><td>|</t
49c0: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64  d></tr>..<tr><td
49d0: 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  >\</td><td align
49e0: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e  ="center">0</td>
49f0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
4a00: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  r">0</td><td ali
4a10: 67 6e 3d 22 63 65 6e 74 65 72 22 20 62 67 63 6f  gn="center" bgco
4a20: 6c 6f 72 3d 22 23 64 30 64 30 64 30 22 3e 30 3c  lor="#d0d0d0">0<
4a30: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
4a40: 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64  enter">1</td><td
4a50: 3e 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74  >/</td></tr>..<t
4a60: 72 3e 3c 74 64 20 63 6f 6c 73 70 61 6e 3d 22 35  r><td colspan="5
4a70: 22 3e 3c 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72 3e  "><hr></td></tr>
4a80: 0d 0a 3c 74 72 3e 3c 74 64 20 72 6f 77 73 70 61  ..<tr><td rowspa
4a90: 6e 3d 22 35 22 20 76 61 6c 69 67 6e 3d 22 6d 69  n="5" valign="mi
4aa0: 64 64 6c 65 22 3e 49 64 65 6e 74 69 74 79 3c 2f  ddle">Identity</
4ab0: 74 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c  td>..<td>/</td><
4ac0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
4ad0: 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ">1</td><td alig
4ae0: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
4af0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
4b00: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">0</td><td al
4b10: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f  ign="center">0</
4b20: 74 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74  td><td>\</td></t
4b30: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74  r>..<tr><td>|</t
4b40: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
4b50: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61  ter">0</td><td a
4b60: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c  lign="center">1<
4b70: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
4b80: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64  enter">0</td><td
4b90: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
4ba0: 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e  0</td><td>|</td>
4bb0: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c  </tr>..<tr><td>\
4bc0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
4bd0: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74  center">0</td><t
4be0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
4bf0: 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  >0</td><td align
4c00: 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e  ="center">1</td>
4c10: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
4c20: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f  r">0</td><td>/</
4c30: 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74  td></tr>..<tr><t
4c40: 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  d>\</td><td alig
4c50: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
4c60: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
4c70: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">0</td><td al
4c80: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f  ign="center">0</
4c90: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
4ca0: 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e  nter">1</td><td>
4cb0: 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72  /</td></tr>..<tr
4cc0: 3e 3c 74 64 20 63 6f 6c 73 70 61 6e 3d 22 35 22  ><td colspan="5"
4cd0: 3e 3c 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  ><hr></td></tr>.
4ce0: 0a 3c 74 72 3e 3c 74 64 20 72 6f 77 73 70 61 6e  .<tr><td rowspan
4cf0: 3d 22 35 22 20 76 61 6c 69 67 6e 3d 22 6d 69 64  ="5" valign="mid
4d00: 64 6c 65 22 3e 54 72 61 6e 73 6c 61 74 65 28 3c  dle">Translate(<
4d10: 62 3e 74 78 3c 2f 62 3e 2c 20 3c 62 3e 74 79 3c  b>tx</b>, <b>ty<
4d20: 2f 62 3e 2c 20 3c 62 3e 74 7a 3c 2f 62 3e 29 26  /b>, <b>tz</b>)&
4d30: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70  nbsp;&nbsp;&nbsp
4d40: 3b 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74  ;</td>..<td>/</t
4d50: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
4d60: 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61  ter">1</td><td a
4d70: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
4d80: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
4d90: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64  enter">0</td><td
4da0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
4db0: 3c 62 3e 74 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74  <b>tx</b></td><t
4dc0: 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  d>\</td></tr>..<
4dd0: 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64  tr><td>|</td><td
4de0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
4df0: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  0</td><td align=
4e00: 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c  "center">1</td><
4e10: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
4e20: 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ">0</td><td alig
4e30: 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 74 79  n="center"><b>ty
4e40: 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f  </b></td><td>|</
4e50: 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74  td></tr>..<tr><t
4e60: 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  d>|</td><td alig
4e70: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
4e80: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
4e90: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">0</td><td al
4ea0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f  ign="center">1</
4eb0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
4ec0: 6e 74 65 72 22 3e 3c 62 3e 74 7a 3c 2f 62 3e 3c  nter"><b>tz</b><
4ed0: 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f  /td><td>|</td></
4ee0: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f  tr>..<tr><td>\</
4ef0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
4f00: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20  nter">0</td><td 
4f10: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30  align="center">0
4f20: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
4f30: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74  center">0</td><t
4f40: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
4f50: 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64  >1</td><td>/</td
4f60: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 20  ></tr>..<tr><td 
4f70: 63 6f 6c 73 70 61 6e 3d 22 35 22 3e 3c 68 72 3e  colspan="5"><hr>
4f80: 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e  </td></tr>..<tr>
4f90: 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22 35 22 20  <td rowspan="5" 
4fa0: 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 22 3e  valign="middle">
4fb0: 53 63 61 6c 65 28 3c 62 3e 73 78 3c 2f 62 3e 2c  Scale(<b>sx</b>,
4fc0: 20 3c 62 3e 73 79 3c 2f 62 3e 2c 20 3c 62 3e 73   <b>sy</b>, <b>s
4fd0: 7a 3c 2f 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64  z</b>)</td>..<td
4fe0: 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  >/</td><td align
4ff0: 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 73 78 3c  ="center"><b>sx<
5000: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  /b></td><td alig
5010: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
5020: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
5030: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">0</td><td al
5040: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f  ign="center">0</
5050: 74 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74  td><td>\</td></t
5060: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74  r>..<tr><td>|</t
5070: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
5080: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61  ter">0</td><td a
5090: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62  lign="center"><b
50a0: 3e 73 79 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20  >sy</b></td><td 
50b0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30  align="center">0
50c0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
50d0: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74  center">0</td><t
50e0: 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  d>|</td></tr>..<
50f0: 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64  tr><td>|</td><td
5100: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
5110: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  0</td><td align=
5120: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c  "center">0</td><
5130: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
5140: 22 3e 3c 62 3e 73 7a 3c 2f 62 3e 3c 2f 74 64 3e  "><b>sz</b></td>
5150: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
5160: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f  r">0</td><td>|</
5170: 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74  td></tr>..<tr><t
5180: 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  d>\</td><td alig
5190: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
51a0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
51b0: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">0</td><td al
51c0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f  ign="center">0</
51d0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
51e0: 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e  nter">1</td><td>
51f0: 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72  /</td></tr>..<tr
5200: 3e 3c 74 64 20 63 6f 6c 73 70 61 6e 3d 22 35 22  ><td colspan="5"
5210: 3e 3c 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  ><hr></td></tr>.
5220: 0a 3c 74 72 3e 3c 74 64 20 72 6f 77 73 70 61 6e  .<tr><td rowspan
5230: 3d 22 35 22 20 76 61 6c 69 67 6e 3d 22 6d 69 64  ="5" valign="mid
5240: 64 6c 65 22 3e 58 20 52 6f 6c 6c 28 3c 62 3e 26  dle">X Roll(<b>&
5250: 74 68 65 74 61 3b 3c 2f 62 3e 29 3c 2f 74 64 3e  theta;</b>)</td>
5260: 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20  ..<td>/</td><td 
5270: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31  align="center">1
5280: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
5290: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74  center">0</td><t
52a0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
52b0: 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  >0</td><td align
52c0: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e  ="center">0</td>
52d0: 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  <td>\</td></tr>.
52e0: 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c  .<tr><td>|</td><
52f0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
5300: 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ">0</td><td alig
5310: 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 63 6f  n="center"><b>co
5320: 73 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f  s(&theta;)</b></
5330: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
5340: 6e 74 65 72 22 3e 3c 62 3e 2d 73 69 6e 28 26 74  nter"><b>-sin(&t
5350: 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c  heta;)</b></td><
5360: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
5370: 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74  ">0</td><td>|</t
5380: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64  d></tr>..<tr><td
5390: 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  >|</td><td align
53a0: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e  ="center">0</td>
53b0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
53c0: 72 22 3e 3c 62 3e 73 69 6e 28 26 74 68 65 74 61  r"><b>sin(&theta
53d0: 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61  ;)</b></td><td a
53e0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62  lign="center"><b
53f0: 3e 63 6f 73 28 26 74 68 65 74 61 3b 29 3c 2f 62  >cos(&theta;)</b
5400: 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  ></td><td align=
5410: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c  "center">0</td><
5420: 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a  td>|</td></tr>..
5430: 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 74  <tr><td>\</td><t
5440: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
5450: 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  >0</td><td align
5460: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e  ="center">0</td>
5470: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
5480: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  r">0</td><td ali
5490: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74  gn="center">1</t
54a0: 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 72  d><td>/</td></tr
54b0: 3e 0d 0a 3c 74 72 3e 3c 74 64 20 63 6f 6c 73 70  >..<tr><td colsp
54c0: 61 6e 3d 22 35 22 3e 3c 68 72 3e 3c 2f 74 64 3e  an="5"><hr></td>
54d0: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 20 72  </tr>..<tr><td r
54e0: 6f 77 73 70 61 6e 3d 22 35 22 20 76 61 6c 69 67  owspan="5" valig
54f0: 6e 3d 22 6d 69 64 64 6c 65 22 3e 59 20 52 6f 6c  n="middle">Y Rol
5500: 6c 28 3c 62 3e 26 74 68 65 74 61 3b 3c 2f 62 3e  l(<b>&theta;</b>
5510: 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74  )</td>..<td>/</t
5520: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
5530: 74 65 72 22 3e 3c 62 3e 63 6f 73 28 26 74 68 65  ter"><b>cos(&the
5540: 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64  ta;)</b></td><td
5550: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
5560: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  0</td><td align=
5570: 22 63 65 6e 74 65 72 22 3e 3c 62 3e 73 69 6e 28  "center"><b>sin(
5580: 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64  &theta;)</b></td
5590: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
55a0: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 5c 3c  er">0</td><td>\<
55b0: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c  /td></tr>..<tr><
55c0: 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  td>|</td><td ali
55d0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74  gn="center">0</t
55e0: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
55f0: 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61  ter">1</td><td a
5600: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c  lign="center">0<
5610: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
5620: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64  enter">0</td><td
5630: 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74  >|</td></tr>..<t
5640: 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20  r><td>|</td><td 
5650: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c  align="center"><
5660: 62 3e 2d 73 69 6e 28 26 74 68 65 74 61 3b 29 3c  b>-sin(&theta;)<
5670: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  /b></td><td alig
5680: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
5690: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
56a0: 65 72 22 3e 3c 62 3e 63 6f 73 28 26 74 68 65 74  er"><b>cos(&thet
56b0: 61 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20  a;)</b></td><td 
56c0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30  align="center">0
56d0: 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c  </td><td>|</td><
56e0: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c  /tr>..<tr><td>\<
56f0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
5700: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64  enter">0</td><td
5710: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
5720: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  0</td><td align=
5730: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c  "center">0</td><
5740: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
5750: 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74  ">1</td><td>/</t
5760: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64  d></tr>..<tr><td
5770: 20 63 6f 6c 73 70 61 6e 3d 22 35 22 3e 3c 68 72   colspan="5"><hr
5780: 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72  ></td></tr>..<tr
5790: 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22 35 22  ><td rowspan="5"
57a0: 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 22   valign="middle"
57b0: 3e 5a 20 52 6f 6c 6c 28 3c 62 3e 26 74 68 65 74  >Z Roll(<b>&thet
57c0: 61 3b 3c 2f 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74  a;</b>)</td>..<t
57d0: 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  d>/</td><td alig
57e0: 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 63 6f  n="center"><b>co
57f0: 73 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f  s(&theta;)</b></
5800: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
5810: 6e 74 65 72 22 3e 3c 62 3e 2d 73 69 6e 28 26 74  nter"><b>-sin(&t
5820: 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c  heta;)</b></td><
5830: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
5840: 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ">0</td><td alig
5850: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
5860: 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e  ><td>\</td></tr>
5870: 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e  ..<tr><td>|</td>
5880: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
5890: 72 22 3e 3c 62 3e 73 69 6e 28 26 74 68 65 74 61  r"><b>sin(&theta
58a0: 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61  ;)</b></td><td a
58b0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62  lign="center"><b
58c0: 3e 63 6f 73 28 26 74 68 65 74 61 3b 29 3c 2f 62  >cos(&theta;)</b
58d0: 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  ></td><td align=
58e0: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c  "center">0</td><
58f0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
5900: 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74  ">0</td><td>|</t
5910: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64  d></tr>..<tr><td
5920: 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  >|</td><td align
5930: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e  ="center">0</td>
5940: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
5950: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  r">0</td><td ali
5960: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74  gn="center">1</t
5970: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
5980: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c  ter">0</td><td>|
5990: 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e  </td></tr>..<tr>
59a0: 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c  <td>\</td><td al
59b0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f  ign="center">0</
59c0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
59d0: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20  nter">0</td><td 
59e0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30  align="center">0
59f0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
5a00: 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74  center">1</td><t
5a10: 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  d>/</td></tr>..<
5a20: 74 72 3e 3c 74 64 3e 3c 2f 74 64 3e 3c 2f 74 72  tr><td></td></tr
5a30: 3e 0d 0a 3c 2f 74 61 62 6c 65 3e 0d 0a 3c 62 72  >..</table>..<br
5a40: 3e 3c 68 72 3e 0d 0a 3c 68 33 3e 61 70 70 6c 79  ><hr>..<h3>apply
5a50: 69 6e 67 20 61 6e 20 41 66 66 69 6e 65 20 54 72  ing an Affine Tr
5a60: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 3c 2f 68 33  ansformation</h3
5a70: 3e 0d 0a 49 6e 20 6f 72 64 65 72 20 74 6f 20 6d  >..In order to m
5a80: 61 74 65 72 69 61 6c 69 7a 65 20 61 6e 20 61 66  aterialize an af
5a90: 66 69 6e 65 20 74 72 61 6e 73 66 6f 72 6d 61 74  fine transformat
5aa0: 69 6f 6e 20 77 65 20 73 69 6d 70 6c 79 20 68 61  ion we simply ha
5ab0: 76 65 20 74 6f 20 63 6f 6d 70 75 74 65 20 20 3c  ve to compute  <
5ac0: 62 3e 28 78 27 2c 20 79 27 2c 20 7a 27 29 3c 2f  b>(x', y', z')</
5ad0: 62 3e 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 73  b> coordinates s
5ae0: 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 3c 62 3e  tarting from <b>
5af0: 28 78 2c 20 79 2c 20 7a 29 3c 2f 62 3e 20 66 6f  (x, y, z)</b> fo
5b00: 72 20 65 76 65 72 79 20 70 6f 69 6e 74 20 6f 72  r every point or
5b10: 20 76 65 72 74 65 78 20 66 6f 75 6e 64 20 69 6e   vertex found in
5b20: 20 74 68 65 20 69 6e 70 75 74 20 47 65 6f 6d 65   the input Geome
5b30: 74 72 79 20 61 63 63 6f 72 64 69 6e 67 6c 79 20  try accordingly 
5b40: 74 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  to the following
5b50: 20 66 6f 72 6d 75 6c 61 65 3a 0d 0a 3c 75 6c 3e   formulae:..<ul>
5b60: 0d 0a 3c 6c 69 3e 3c 62 3e 78 27 20 3d 20 61 2a  ..<li><b>x' = a*
5b70: 78 20 2b 20 62 2a 79 20 2b 20 63 2a 7a 20 2b 20  x + b*y + c*z + 
5b80: 78 6f 66 66 3c 2f 62 3e 3c 2f 6c 69 3e 0d 0a 3c  xoff</b></li>..<
5b90: 6c 69 3e 3c 62 3e 79 27 20 3d 20 64 2a 78 20 2b  li><b>y' = d*x +
5ba0: 20 65 2a 79 20 2b 20 66 2a 7a 20 2b 20 79 6f 66   e*y + f*z + yof
5bb0: 66 3c 2f 62 3e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e  f</b></li>..<li>
5bc0: 3c 62 3e 7a 27 20 3d 20 67 2a 78 20 2b 20 68 2a  <b>z' = g*x + h*
5bd0: 79 20 2b 20 69 2a 7a 20 2b 20 7a 6f 66 66 3c 2f  y + i*z + zoff</
5be0: 62 3e 3c 2f 6c 69 3e 0d 0a 3c 2f 75 6c 3e 3c 62  b></li>..</ul><b
5bf0: 72 3e 0d 0a 69 6e 20 74 68 65 20 73 69 6d 70 6c  r>..in the simpl
5c00: 65 72 20 3c 62 3e 32 44 3c 2f 62 3e 20 63 61 73  er <b>2D</b> cas
5c10: 65 20 74 68 69 73 20 77 69 6c 6c 20 61 73 73 75  e this will assu
5c20: 6d 65 20 74 68 65 20 72 65 64 75 63 65 64 20 66  me the reduced f
5c30: 6f 72 6d 3a 0d 0a 3c 75 6c 3e 0d 0a 3c 6c 69 3e  orm:..<ul>..<li>
5c40: 3c 62 3e 78 27 20 3d 20 61 2a 78 20 2b 20 62 2a  <b>x' = a*x + b*
5c50: 79 20 2b 20 78 6f 66 66 3c 2f 62 3e 3c 2f 6c 69  y + xoff</b></li
5c60: 3e 0d 0a 3c 6c 69 3e 3c 62 3e 79 27 20 3d 20 64  >..<li><b>y' = d
5c70: 2a 78 20 2b 20 65 2a 79 20 2b 20 79 6f 66 66 3c  *x + e*y + yoff<
5c80: 2f 62 3e 3c 2f 6c 69 3e 0d 0a 3c 2f 75 6c 3e 3c  /b></li>..</ul><
5c90: 62 72 3e 0d 0a 41 73 20 79 6f 75 20 63 61 6e 20  br>..As you can 
5ca0: 6e 6f 74 69 63 65 2c 20 61 70 70 6c 79 69 6e 67  notice, applying
5cb0: 20 61 6e 20 41 66 66 69 6e 65 20 54 72 61 6e 73   an Affine Trans
5cc0: 66 6f 72 6d 61 74 69 6f 6e 20 64 6f 65 73 20 6e  formation does n
5cd0: 6f 74 20 72 65 71 75 69 72 65 73 20 63 6f 6d 70  ot requires comp
5ce0: 75 74 69 6e 67 20 61 6e 79 20 74 72 69 67 6f 6e  uting any trigon
5cf0: 6f 6d 65 74 72 69 63 20 66 75 6e 63 74 69 6f 6e  ometric function
5d00: 2e 3c 62 72 3e 0d 0a 54 72 69 67 6f 6e 6f 6d 65  .<br>..Trigonome
5d10: 74 72 69 63 20 66 75 6e 63 74 69 6f 6e 73 20 61  tric functions a
5d20: 72 65 20 76 65 72 79 20 63 6f 73 74 6c 79 20 69  re very costly i
5d30: 6e 20 63 6f 6d 70 75 74 61 74 69 6f 6e 61 6c 20  n computational 
5d40: 74 65 72 6d 73 2c 20 73 6f 20 61 70 70 6c 79 69  terms, so applyi
5d50: 6e 67 20 61 6e 20 41 66 66 69 6e 65 20 54 72 61  ng an Affine Tra
5d60: 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 61  nsformation is a
5d70: 6e 20 69 6e 74 72 69 6e 73 69 63 61 6c 6c 79 20  n intrinsically 
5d80: 65 66 66 69 63 69 65 6e 74 20 6d 65 63 68 61 6e  efficient mechan
5d90: 69 73 6d 20 62 65 63 61 75 73 65 20 73 69 6d 70  ism because simp
5da0: 6c 79 20 64 65 70 65 6e 64 73 20 6f 6e 20 6d 75  ly depends on mu
5db0: 6c 74 69 70 6c 69 63 61 74 69 6f 6e 73 20 61 6e  ltiplications an
5dc0: 64 20 61 64 64 69 74 69 6f 6e 73 2e 3c 62 72 3e  d additions.<br>
5dd0: 0d 0a 3c 62 72 3e 3c 68 72 3e 0d 0a 3c 68 33 3e  ..<br><hr>..<h3>
5de0: 63 68 61 69 6e 69 6e 67 20 74 77 6f 20 28 6f 72  chaining two (or
5df0: 20 65 76 65 6e 20 6d 6f 72 65 29 20 41 66 66 69   even more) Affi
5e00: 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f  ne Transformatio
5e10: 6e 73 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 6f  ns in a single o
5e20: 70 65 72 61 74 69 6f 6e 3c 2f 68 33 3e 0d 0a 41  peration</h3>..A
5e30: 66 66 69 6e 65 20 74 72 61 6e 73 66 6f 72 6d 61  ffine transforma
5e40: 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 68 61  tion matrices ha
5e50: 76 65 20 61 6e 6f 74 68 65 72 20 61 73 74 6f 6e  ve another aston
5e60: 69 73 68 69 6e 67 20 70 72 6f 70 65 72 74 79 2e  ishing property.
5e70: 3c 62 72 3e 0d 0a 57 65 20 63 61 6e 20 3c 61 20  <br>..We can <a 
5e80: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e  href="http://en.
5e90: 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69  wikipedia.org/wi
5ea0: 6b 69 2f 4d 61 74 72 69 78 5f 6d 75 6c 74 69 70  ki/Matrix_multip
5eb0: 6c 69 63 61 74 69 6f 6e 22 3e 6d 75 6c 74 69 70  lication">multip
5ec0: 6c 79 3c 2f 61 3e 20 74 77 6f 20 64 69 66 66 65  ly</a> two diffe
5ed0: 72 65 6e 74 20 61 66 66 69 6e 65 20 74 72 61 6e  rent affine tran
5ee0: 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69  sformation matri
5ef0: 63 65 73 20 74 68 75 73 20 6f 62 74 61 69 6e 69  ces thus obtaini
5f00: 6e 67 20 61 20 74 68 69 72 64 20 6d 61 74 72 69  ng a third matri
5f10: 78 2c 20 61 6e 64 20 74 68 69 73 20 6c 61 74 65  x, and this late
5f20: 73 74 20 6f 6e 63 65 20 61 70 70 6c 69 65 64 20  st once applied 
5f30: 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 62 6f 74  will contain bot
5f40: 68 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e  h transformation
5f50: 73 20 61 6e 64 20 69 6e 20 74 68 65 20 72 69 67  s and in the rig
5f60: 68 74 20 73 65 71 75 65 6e 63 65 2e 3c 62 72 3e  ht sequence.<br>
5f70: 0d 0a 54 68 65 72 65 20 69 73 20 6e 6f 20 6c 69  ..There is no li
5f80: 6d 69 74 3b 20 77 65 20 63 61 6e 20 69 6e 66 69  mit; we can infi
5f90: 6e 69 74 69 76 65 6c 79 20 63 68 61 69 6e 20 61  nitively chain a
5fa0: 73 20 6d 61 6e 79 20 74 72 61 6e 73 66 6f 72 6d  s many transform
5fb0: 61 74 69 6f 6e 73 20 61 73 20 72 65 71 75 69 72  ations as requir
5fc0: 65 64 2c 20 77 65 27 6c 6c 20 73 69 6d 70 6c 79  ed, we'll simply
5fd0: 20 68 61 76 65 20 74 6f 20 63 6f 6e 74 69 6e 75   have to continu
5fe0: 65 20 6d 75 6c 74 69 70 6c 79 69 6e 67 20 61 6c  e multiplying al
5ff0: 6c 20 6d 61 74 72 69 63 65 73 20 6f 6e 65 20 61  l matrices one a
6000: 66 74 65 72 20 74 68 65 20 6f 74 68 65 72 20 63  fter the other c
6010: 61 72 65 66 75 6c 6c 79 20 72 65 73 70 65 63 74  arefully respect
6020: 69 6e 67 20 74 68 65 20 61 70 70 72 6f 70 72 69  ing the appropri
6030: 61 74 65 20 73 65 71 75 65 6e 63 65 2e 3c 62 72  ate sequence.<br
6040: 3e 0d 0a 41 74 20 74 68 65 20 65 6e 64 20 6f 66  >..At the end of
6050: 20 74 68 65 20 70 72 6f 63 65 73 73 20 77 65 27   the process we'
6060: 6c 6c 20 61 6c 77 61 79 73 20 67 65 74 20 6a 75  ll always get ju
6070: 73 74 20 61 20 73 69 6e 67 6c 65 20 61 66 66 69  st a single affi
6080: 6e 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f  ne transformatio
6090: 6e 20 6d 61 74 72 69 78 20 66 61 69 74 68 66 75  n matrix faithfu
60a0: 6c 6c 79 20 72 65 70 72 65 73 65 6e 74 69 6e 67  lly representing
60b0: 20 61 6e 79 20 69 6e 64 69 76 69 64 75 61 6c 20   any individual 
60c0: 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 69  transformation i
60d0: 6e 20 74 68 65 20 63 68 61 69 6e 2e 0d 0a 3c 74  n the chain...<t
60e0: 61 62 6c 65 20 62 67 63 6f 6c 6f 72 3d 22 23 66  able bgcolor="#f
60f0: 66 63 30 30 30 22 20 63 65 6c 6c 70 61 64 64 69  fc000" cellpaddi
6100: 6e 67 3d 22 31 30 22 3e 3c 74 72 3e 3c 74 64 3e  ng="10"><tr><td>
6110: 0d 0a 54 68 65 20 6d 75 6c 74 69 70 6c 69 63 61  ..The multiplica
6120: 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 74 77 6f  tion between two
6130: 20 6d 61 74 72 69 63 65 73 20 3c 75 3e 69 73 20   matrices <u>is 
6140: 6e 6f 74 20 61 20 63 6f 6d 6d 75 74 61 74 69 76  not a commutativ
6150: 65 20 6f 70 65 72 61 74 69 6f 6e 3c 2f 75 3e 3a  e operation</u>:
6160: 20 74 68 65 20 72 65 6c 61 74 69 76 65 20 6f 72   the relative or
6170: 64 65 72 20 6f 66 20 6f 70 65 72 61 6e 64 73 20  der of operands 
6180: 69 73 20 61 62 73 6f 6c 75 74 65 6c 79 20 72 65  is absolutely re
6190: 6c 65 76 61 6e 74 2e 3c 2f 74 64 3e 3c 2f 74 72  levant.</td></tr
61a0: 3e 3c 2f 74 61 62 6c 65 3e 0d 0a 3c 68 33 3e 6d  ></table>..<h3>m
61b0: 75 6c 74 69 70 6c 79 69 6e 67 20 74 77 6f 20 6d  ultiplying two m
61c0: 61 74 72 69 63 65 73 3c 2f 68 33 3e 0d 0a 4d 75  atrices</h3>..Mu
61d0: 6c 74 69 70 6c 69 63 61 74 69 6f 6e 20 69 73 20  ltiplication is 
61e0: 6e 6f 74 20 72 65 61 6c 6c 79 20 61 20 73 69 6d  not really a sim
61f0: 70 6c 65 20 6f 70 65 72 61 74 69 6f 6e 20 77 68  ple operation wh
6200: 65 6e 20 6d 61 74 72 69 63 65 73 20 61 72 65 20  en matrices are 
6210: 69 6e 76 6f 6c 76 65 64 20 61 6e 64 20 72 65 71  involved and req
6220: 75 69 72 65 73 20 61 20 72 61 74 68 65 72 20 63  uires a rather c
6230: 6f 6d 70 6c 65 78 20 70 72 6f 63 65 64 75 72 65  omplex procedure
6240: 3b 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  ; the following 
6250: 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20 68 6f  example shows ho
6260: 77 20 74 6f 20 6d 75 6c 74 69 70 6c 79 20 74 77  w to multiply tw
6270: 6f 20 3c 62 3e 34 20 78 20 34 3c 2f 62 3e 20 6d  o <b>4 x 4</b> m
6280: 61 74 72 69 63 65 73 2e 3c 62 72 3e 0d 0a 3c 74  atrices.<br>..<t
6290: 61 62 6c 65 20 63 65 6c 6c 73 70 61 63 69 6e 67  able cellspacing
62a0: 3d 22 34 22 20 63 65 6c 6c 70 61 64 64 69 6e 67  ="4" cellpadding
62b0: 3d 22 34 22 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 0d  ="4">..<tr><td>.
62c0: 0a 3c 74 61 62 6c 65 3e 0d 0a 3c 74 72 3e 3c 74  .<table>..<tr><t
62d0: 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  d>/</td><td alig
62e0: 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c 73 75 62  n="center">a<sub
62f0: 3e 31 31 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74  >11</sub></td><t
6300: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
6310: 3e 61 3c 73 75 62 3e 31 32 3c 2f 73 75 62 3e 3c  >a<sub>12</sub><
6320: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
6330: 65 6e 74 65 72 22 3e 61 3c 73 75 62 3e 31 33 3c  enter">a<sub>13<
6340: 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c  /sub></td><td al
6350: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c 73  ign="center">a<s
6360: 75 62 3e 31 34 3c 2f 73 75 62 3e 3c 2f 74 64 3e  ub>14</sub></td>
6370: 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  <td>\</td></tr>.
6380: 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c  .<tr><td>|</td><
6390: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
63a0: 22 3e 61 3c 73 75 62 3e 32 31 3c 2f 73 75 62 3e  ">a<sub>21</sub>
63b0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
63c0: 63 65 6e 74 65 72 22 3e 61 3c 73 75 62 3e 32 32  center">a<sub>22
63d0: 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61  </sub></td><td a
63e0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c  lign="center">a<
63f0: 73 75 62 3e 32 33 3c 2f 73 75 62 3e 3c 2f 74 64  sub>23</sub></td
6400: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
6410: 65 72 22 3e 61 3c 73 75 62 3e 32 34 3c 2f 73 75  er">a<sub>24</su
6420: 62 3e 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64  b></td><td>|</td
6430: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e  ></tr>..<tr><td>
6440: 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  |</td><td align=
6450: 22 63 65 6e 74 65 72 22 3e 61 3c 73 75 62 3e 33  "center">a<sub>3
6460: 31 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20  1</sub></td><td 
6470: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 61  align="center">a
6480: 3c 73 75 62 3e 33 32 3c 2f 73 75 62 3e 3c 2f 74  <sub>32</sub></t
6490: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
64a0: 74 65 72 22 3e 61 3c 73 75 62 3e 33 33 3c 2f 73  ter">a<sub>33</s
64b0: 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ub></td><td alig
64c0: 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c 73 75 62  n="center">a<sub
64d0: 3e 33 34 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74  >34</sub></td><t
64e0: 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  d>|</td></tr>..<
64f0: 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 74 64  tr><td>\</td><td
6500: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
6510: 61 3c 73 75 62 3e 34 31 3c 2f 73 75 62 3e 3c 2f  a<sub>41</sub></
6520: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
6530: 6e 74 65 72 22 3e 61 3c 73 75 62 3e 34 32 3c 2f  nter">a<sub>42</
6540: 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  sub></td><td ali
6550: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c 73 75  gn="center">a<su
6560: 62 3e 34 33 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c  b>43</sub></td><
6570: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
6580: 22 3e 61 3c 73 75 62 3e 34 34 3c 2f 73 75 62 3e  ">a<sub>44</sub>
6590: 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c  </td><td>/</td><
65a0: 2f 74 72 3e 0d 0a 3c 2f 74 61 62 6c 65 3e 0d 0a  /tr>..</table>..
65b0: 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  </td><td valign=
65c0: 22 6d 69 64 64 6c 65 22 3e 2a 3c 2f 74 64 3e 0d  "middle">*</td>.
65d0: 0a 3c 74 64 3e 0d 0a 3c 74 61 62 6c 65 3e 0d 0a  .<td>..<table>..
65e0: 3c 74 72 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74  <tr><td>/</td><t
65f0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
6600: 3e 62 3c 73 75 62 3e 31 31 3c 2f 73 75 62 3e 3c  >b<sub>11</sub><
6610: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
6620: 65 6e 74 65 72 22 3e 62 3c 73 75 62 3e 31 32 3c  enter">b<sub>12<
6630: 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c  /sub></td><td al
6640: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 62 3c 73  ign="center">b<s
6650: 75 62 3e 31 33 3c 2f 73 75 62 3e 3c 2f 74 64 3e  ub>13</sub></td>
6660: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
6670: 72 22 3e 62 3c 73 75 62 3e 31 34 3c 2f 73 75 62  r">b<sub>14</sub
6680: 3e 3c 2f 74 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e  ></td><td>\</td>
6690: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c  </tr>..<tr><td>|
66a0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
66b0: 63 65 6e 74 65 72 22 3e 62 3c 73 75 62 3e 32 31  center">b<sub>21
66c0: 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61  </sub></td><td a
66d0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 62 3c  lign="center">b<
66e0: 73 75 62 3e 32 32 3c 2f 73 75 62 3e 3c 2f 74 64  sub>22</sub></td
66f0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
6700: 65 72 22 3e 62 3c 73 75 62 3e 32 33 3c 2f 73 75  er">b<sub>23</su
6710: 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e  b></td><td align
6720: 3d 22 63 65 6e 74 65 72 22 3e 62 3c 73 75 62 3e  ="center">b<sub>
6730: 32 34 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64  24</sub></td><td
6740: 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74  >|</td></tr>..<t
6750: 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20  r><td>|</td><td 
6760: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 62  align="center">b
6770: 3c 73 75 62 3e 33 31 3c 2f 73 75 62 3e 3c 2f 74  <sub>31</sub></t
6780: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
6790: 74 65 72 22 3e 62 3c 73 75 62 3e 33 32 3c 2f 73  ter">b<sub>32</s
67a0: 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ub></td><td alig
67b0: 6e 3d 22 63 65 6e 74 65 72 22 3e 62 3c 73 75 62  n="center">b<sub
67c0: 3e 33 33 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74  >33</sub></td><t
67d0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
67e0: 3e 62 3c 73 75 62 3e 33 34 3c 2f 73 75 62 3e 3c  >b<sub>34</sub><
67f0: 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f  /td><td>|</td></
6800: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f  tr>..<tr><td>\</
6810: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
6820: 6e 74 65 72 22 3e 62 3c 73 75 62 3e 34 31 3c 2f  nter">b<sub>41</
6830: 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  sub></td><td ali
6840: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 62 3c 73 75  gn="center">b<su
6850: 62 3e 34 32 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c  b>42</sub></td><
6860: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
6870: 22 3e 62 3c 73 75 62 3e 34 33 3c 2f 73 75 62 3e  ">b<sub>43</sub>
6880: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
6890: 63 65 6e 74 65 72 22 3e 62 3c 73 75 62 3e 34 34  center">b<sub>44
68a0: 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 3e 2f  </sub></td><td>/
68b0: 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 2f 74 61  </td></tr>..</ta
68c0: 62 6c 65 3e 0d 0a 3c 2f 74 64 3e 0d 0a 3c 2f 74  ble>..</td>..</t
68d0: 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 6d 69  d><td valign="mi
68e0: 64 64 6c 65 22 3e 3d 3c 2f 74 64 3e 0d 0a 3c 74  ddle">=</td>..<t
68f0: 64 3e 0d 0a 3c 74 61 62 6c 65 3e 0d 0a 3c 74 72  d>..<table>..<tr
6900: 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61  ><td>/</td><td a
6910: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0d 0a  lign="center">..
6920: 28 61 3c 73 75 62 3e 31 31 3c 2f 73 75 62 3e 2a  (a<sub>11</sub>*
6930: 62 3c 73 75 62 3e 31 31 3c 2f 73 75 62 3e 20 2b  b<sub>11</sub> +
6940: 20 0d 0a 61 3c 73 75 62 3e 31 32 3c 2f 73 75 62   ..a<sub>12</sub
6950: 3e 2a 62 3c 73 75 62 3e 32 31 3c 2f 73 75 62 3e  >*b<sub>21</sub>
6960: 20 2b 20 0d 0a 61 3c 73 75 62 3e 31 33 3c 2f 73   + ..a<sub>13</s
6970: 75 62 3e 2a 62 3c 73 75 62 3e 33 31 3c 2f 73 75  ub>*b<sub>31</su
6980: 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 31 34 3c  b> + ..a<sub>14<
6990: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 34 31 3c 2f  /sub>*b<sub>41</
69a0: 73 75 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e  sub>)</td>..<td>
69b0: 28 61 3c 73 75 62 3e 31 31 3c 2f 73 75 62 3e 2a  (a<sub>11</sub>*
69c0: 62 3c 73 75 62 3e 31 32 3c 2f 73 75 62 3e 20 2b  b<sub>12</sub> +
69d0: 20 0d 0a 61 3c 73 75 62 3e 31 32 3c 2f 73 75 62   ..a<sub>12</sub
69e0: 3e 2a 62 3c 73 75 62 3e 32 32 3c 2f 73 75 62 3e  >*b<sub>22</sub>
69f0: 20 2b 20 0d 0a 61 3c 73 75 62 3e 31 33 3c 2f 73   + ..a<sub>13</s
6a00: 75 62 3e 2a 62 3c 73 75 62 3e 33 32 3c 2f 73 75  ub>*b<sub>32</su
6a10: 62 3e 20 2b 0d 0a 61 3c 73 75 62 3e 31 34 3c 2f  b> +..a<sub>14</
6a20: 73 75 62 3e 2a 62 3c 73 75 62 3e 34 32 3c 2f 73  sub>*b<sub>42</s
6a30: 75 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28  ub>)</td>..<td>(
6a40: 61 3c 73 75 62 3e 31 31 3c 2f 73 75 62 3e 2a 62  a<sub>11</sub>*b
6a50: 3c 73 75 62 3e 31 33 3c 2f 73 75 62 3e 20 2b 20  <sub>13</sub> + 
6a60: 0d 0a 61 3c 73 75 62 3e 31 32 3c 2f 73 75 62 3e  ..a<sub>12</sub>
6a70: 2a 62 3c 73 75 62 3e 32 33 3c 2f 73 75 62 3e 20  *b<sub>23</sub> 
6a80: 2b 20 0d 0a 61 3c 73 75 62 3e 31 33 3c 2f 73 75  + ..a<sub>13</su
6a90: 62 3e 2a 62 3c 73 75 62 3e 33 33 3c 2f 73 75 62  b>*b<sub>33</sub
6aa0: 3e 20 2b 0d 0a 61 3c 73 75 62 3e 31 34 3c 2f 73  > +..a<sub>14</s
6ab0: 75 62 3e 2a 62 3c 73 75 62 3e 34 33 3c 2f 73 75  ub>*b<sub>43</su
6ac0: 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61  b>)</td>..<td>(a
6ad0: 3c 73 75 62 3e 31 31 3c 2f 73 75 62 3e 2a 62 3c  <sub>11</sub>*b<
6ae0: 73 75 62 3e 31 34 3c 2f 73 75 62 3e 20 2b 20 0d  sub>14</sub> + .
6af0: 0a 61 3c 73 75 62 3e 31 32 3c 2f 73 75 62 3e 2a  .a<sub>12</sub>*
6b00: 62 3c 73 75 62 3e 32 34 3c 2f 73 75 62 3e 20 2b  b<sub>24</sub> +
6b10: 20 0d 0a 61 3c 73 75 62 3e 31 33 3c 2f 73 75 62   ..a<sub>13</sub
6b20: 3e 2a 62 3c 73 75 62 3e 33 34 3c 2f 73 75 62 3e  >*b<sub>34</sub>
6b30: 20 2b 0d 0a 61 3c 73 75 62 3e 31 34 3c 2f 73 75   +..a<sub>14</su
6b40: 62 3e 2a 62 3c 73 75 62 3e 34 34 3c 2f 73 75 62  b>*b<sub>44</sub
6b50: 3e 29 3c 2f 74 64 3e 3c 74 64 3e 5c 3c 2f 74 64  >)</td><td>\</td
6b60: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e  ></tr>..<tr><td>
6b70: 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  |</td><td align=
6b80: 22 63 65 6e 74 65 72 22 3e 0d 0a 28 61 3c 73 75  "center">..(a<su
6b90: 62 3e 32 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 62  b>21</sub>*b<sub
6ba0: 3e 31 31 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c  >11</sub> + ..a<
6bb0: 73 75 62 3e 32 32 3c 2f 73 75 62 3e 2a 62 3c 73  sub>22</sub>*b<s
6bc0: 75 62 3e 32 31 3c 2f 73 75 62 3e 20 2b 20 0d 0a  ub>21</sub> + ..
6bd0: 61 3c 73 75 62 3e 32 33 3c 2f 73 75 62 3e 2a 62  a<sub>23</sub>*b
6be0: 3c 73 75 62 3e 33 31 3c 2f 73 75 62 3e 20 2b 20  <sub>31</sub> + 
6bf0: 0d 0a 61 3c 73 75 62 3e 32 34 3c 2f 73 75 62 3e  ..a<sub>24</sub>
6c00: 2a 62 3c 73 75 62 3e 34 31 3c 2f 73 75 62 3e 29  *b<sub>41</sub>)
6c10: 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c 73 75  </td>..<td>(a<su
6c20: 62 3e 32 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 62  b>21</sub>*b<sub
6c30: 3e 31 32 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c  >12</sub> + ..a<
6c40: 73 75 62 3e 32 32 3c 2f 73 75 62 3e 2a 62 3c 73  sub>22</sub>*b<s
6c50: 75 62 3e 32 32 3c 2f 73 75 62 3e 20 2b 20 0d 0a  ub>22</sub> + ..
6c60: 61 3c 73 75 62 3e 32 33 3c 2f 73 75 62 3e 2a 62  a<sub>23</sub>*b
6c70: 3c 73 75 62 3e 33 32 3c 2f 73 75 62 3e 20 2b 0d  <sub>32</sub> +.
6c80: 0a 61 3c 73 75 62 3e 32 34 3c 2f 73 75 62 3e 2a  .a<sub>24</sub>*
6c90: 62 3c 73 75 62 3e 34 32 3c 2f 73 75 62 3e 29 3c  b<sub>42</sub>)<
6ca0: 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c 73 75 62  /td>..<td>(a<sub
6cb0: 3e 32 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e  >21</sub>*b<sub>
6cc0: 31 33 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73  13</sub> + ..a<s
6cd0: 75 62 3e 32 32 3c 2f 73 75 62 3e 2a 62 3c 73 75  ub>22</sub>*b<su
6ce0: 62 3e 32 33 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61  b>23</sub> + ..a
6cf0: 3c 73 75 62 3e 32 33 3c 2f 73 75 62 3e 2a 62 3c  <sub>23</sub>*b<
6d00: 73 75 62 3e 33 33 3c 2f 73 75 62 3e 20 2b 0d 0a  sub>33</sub> +..
6d10: 61 3c 73 75 62 3e 32 34 3c 2f 73 75 62 3e 2a 62  a<sub>24</sub>*b
6d20: 3c 73 75 62 3e 34 33 3c 2f 73 75 62 3e 29 3c 2f  <sub>43</sub>)</
6d30: 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c 73 75 62 3e  td>..<td>(a<sub>
6d40: 32 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 31  21</sub>*b<sub>1
6d50: 34 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75  4</sub> + ..a<su
6d60: 62 3e 32 32 3c 2f 73 75 62 3e 2a 62 3c 73 75 62  b>22</sub>*b<sub
6d70: 3e 32 34 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c  >24</sub> + ..a<
6d80: 73 75 62 3e 32 33 3c 2f 73 75 62 3e 2a 62 3c 73  sub>23</sub>*b<s
6d90: 75 62 3e 33 34 3c 2f 73 75 62 3e 20 2b 0d 0a 61  ub>34</sub> +..a
6da0: 3c 73 75 62 3e 32 34 3c 2f 73 75 62 3e 2a 62 3c  <sub>24</sub>*b<
6db0: 73 75 62 3e 34 34 3c 2f 73 75 62 3e 29 3c 2f 74  sub>44</sub>)</t
6dc0: 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72  d><td>|</td></tr
6dd0: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64  >..<tr><td>|</td
6de0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
6df0: 65 72 22 3e 0d 0a 28 61 3c 73 75 62 3e 33 31 3c  er">..(a<sub>31<
6e00: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 31 31 3c 2f  /sub>*b<sub>11</
6e10: 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33  sub> + ..a<sub>3
6e20: 32 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 32 31  2</sub>*b<sub>21
6e30: 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62  </sub> + ..a<sub
6e40: 3e 33 33 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e  >33</sub>*b<sub>
6e50: 33 31 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73  31</sub> + ..a<s
6e60: 75 62 3e 33 34 3c 2f 73 75 62 3e 2a 62 3c 73 75  ub>34</sub>*b<su
6e70: 62 3e 34 31 3c 2f 73 75 62 3e 29 3c 2f 74 64 3e  b>41</sub>)</td>
6e80: 0d 0a 3c 74 64 3e 28 61 3c 73 75 62 3e 33 31 3c  ..<td>(a<sub>31<
6e90: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 31 32 3c 2f  /sub>*b<sub>12</
6ea0: 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33  sub> + ..a<sub>3
6eb0: 32 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 32 32  2</sub>*b<sub>22
6ec0: 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62  </sub> + ..a<sub
6ed0: 3e 33 33 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e  >33</sub>*b<sub>
6ee0: 33 32 3c 2f 73 75 62 3e 20 2b 0d 0a 61 3c 73 75  32</sub> +..a<su
6ef0: 62 3e 33 34 3c 2f 73 75 62 3e 2a 62 3c 73 75 62  b>34</sub>*b<sub
6f00: 3e 34 32 3c 2f 73 75 62 3e 29 3c 2f 74 64 3e 0d  >42</sub>)</td>.
6f10: 0a 3c 74 64 3e 28 61 3c 73 75 62 3e 33 31 3c 2f  .<td>(a<sub>31</
6f20: 73 75 62 3e 2a 62 3c 73 75 62 3e 31 33 3c 2f 73  sub>*b<sub>13</s
6f30: 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 32  ub> + ..a<sub>32
6f40: 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 32 33 3c  </sub>*b<sub>23<
6f50: 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e  /sub> + ..a<sub>
6f60: 33 33 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 33  33</sub>*b<sub>3
6f70: 33 3c 2f 73 75 62 3e 20 2b 0d 0a 61 3c 73 75 62  3</sub> +..a<sub
6f80: 3e 33 34 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e  >34</sub>*b<sub>
6f90: 34 33 3c 2f 73 75 62 3e 29 3c 2f 74 64 3e 0d 0a  43</sub>)</td>..
6fa0: 3c 74 64 3e 28 61 3c 73 75 62 3e 33 31 3c 2f 73  <td>(a<sub>31</s
6fb0: 75 62 3e 2a 62 3c 73 75 62 3e 31 34 3c 2f 73 75  ub>*b<sub>14</su
6fc0: 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 32 3c  b> + ..a<sub>32<
6fd0: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 32 34 3c 2f  /sub>*b<sub>24</
6fe0: 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33  sub> + ..a<sub>3
6ff0: 33 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 33 34  3</sub>*b<sub>34
7000: 3c 2f 73 75 62 3e 20 2b 0d 0a 61 3c 73 75 62 3e  </sub> +..a<sub>
7010: 33 34 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 34  34</sub>*b<sub>4
7020: 34 3c 2f 73 75 62 3e 29 3c 2f 74 64 3e 3c 74 64  4</sub>)</td><td
7030: 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74  >|</td></tr>..<t
7040: 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20  r><td>\</td><td 
7050: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0d  align="center">.
7060: 0a 28 61 3c 73 75 62 3e 34 31 3c 2f 73 75 62 3e  .(a<sub>41</sub>
7070: 2a 62 3c 73 75 62 3e 31 31 3c 2f 73 75 62 3e 20  *b<sub>11</sub> 
7080: 2b 20 0d 0a 61 3c 73 75 62 3e 34 32 3c 2f 73 75  + ..a<sub>42</su
7090: 62 3e 2a 62 3c 73 75 62 3e 32 31 3c 2f 73 75 62  b>*b<sub>21</sub
70a0: 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 34 33 3c 2f  > + ..a<sub>43</
70b0: 73 75 62 3e 2a 62 3c 73 75 62 3e 33 31 3c 2f 73  sub>*b<sub>31</s
70c0: 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 34 34  ub> + ..a<sub>44
70d0: 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 34 31 3c  </sub>*b<sub>41<
70e0: 2f 73 75 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64  /sub>)</td>..<td
70f0: 3e 28 61 3c 73 75 62 3e 34 31 3c 2f 73 75 62 3e  >(a<sub>41</sub>
7100: 2a 62 3c 73 75 62 3e 31 32 3c 2f 73 75 62 3e 20  *b<sub>12</sub> 
7110: 2b 20 0d 0a 61 3c 73 75 62 3e 34 32 3c 2f 73 75  + ..a<sub>42</su
7120: 62 3e 2a 62 3c 73 75 62 3e 32 32 3c 2f 73 75 62  b>*b<sub>22</sub
7130: 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 34 33 3c 2f  > + ..a<sub>43</
7140: 73 75 62 3e 2a 62 3c 73 75 62 3e 33 32 3c 2f 73  sub>*b<sub>32</s
7150: 75 62 3e 20 2b 0d 0a 61 3c 73 75 62 3e 34 34 3c  ub> +..a<sub>44<
7160: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 34 32 3c 2f  /sub>*b<sub>42</
7170: 73 75 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e  sub>)</td>..<td>
7180: 28 61 3c 73 75 62 3e 34 31 3c 2f 73 75 62 3e 2a  (a<sub>41</sub>*
7190: 62 3c 73 75 62 3e 31 33 3c 2f 73 75 62 3e 20 2b  b<sub>13</sub> +
71a0: 20 0d 0a 61 3c 73 75 62 3e 34 32 3c 2f 73 75 62   ..a<sub>42</sub
71b0: 3e 2a 62 3c 73 75 62 3e 32 33 3c 2f 73 75 62 3e  >*b<sub>23</sub>
71c0: 20 2b 20 0d 0a 61 3c 73 75 62 3e 34 33 3c 2f 73   + ..a<sub>43</s
71d0: 75 62 3e 2a 62 3c 73 75 62 3e 33 33 3c 2f 73 75  ub>*b<sub>33</su
71e0: 62 3e 20 2b 0d 0a 61 3c 73 75 62 3e 34 34 3c 2f  b> +..a<sub>44</
71f0: 73 75 62 3e 2a 62 3c 73 75 62 3e 34 33 3c 2f 73  sub>*b<sub>43</s
7200: 75 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28  ub>)</td>..<td>(
7210: 61 3c 73 75 62 3e 34 31 3c 2f 73 75 62 3e 2a 62  a<sub>41</sub>*b
7220: 3c 73 75 62 3e 31 34 3c 2f 73 75 62 3e 20 2b 20  <sub>14</sub> + 
7230: 0d 0a 61 3c 73 75 62 3e 34 32 3c 2f 73 75 62 3e  ..a<sub>42</sub>
7240: 2a 62 3c 73 75 62 3e 32 34 3c 2f 73 75 62 3e 20  *b<sub>24</sub> 
7250: 2b 20 0d 0a 61 3c 73 75 62 3e 34 33 3c 2f 73 75  + ..a<sub>43</su
7260: 62 3e 2a 62 3c 73 75 62 3e 33 34 3c 2f 73 75 62  b>*b<sub>34</sub
7270: 3e 20 2b 0d 0a 61 3c 73 75 62 3e 34 34 3c 2f 73  > +..a<sub>44</s
7280: 75 62 3e 2a 62 3c 73 75 62 3e 34 34 3c 2f 73 75  ub>*b<sub>44</su
7290: 62 3e 29 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74  b>)</td><td>/</t
72a0: 64 3e 3c 2f 74 72 3e 0d 0a 3c 2f 74 61 62 6c 65  d></tr>..</table
72b0: 3e 0d 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74  >..</td></tr></t
72c0: 61 62 6c 65 3e 0d 0a 3c 68 33 3e 69 64 65 6e 74  able>..<h3>ident
72d0: 69 74 79 20 6d 61 74 72 69 78 3c 2f 68 33 3e 0d  ity matrix</h3>.
72e0: 0a 41 6e 20 69 64 65 6e 74 69 74 79 20 6d 61 74  .An identity mat
72f0: 72 69 78 20 73 69 6d 70 6c 79 20 63 6f 72 72 65  rix simply corre
7300: 73 70 6f 6e 64 73 20 74 6f 20 61 6e 20 61 66 66  sponds to an aff
7310: 69 6e 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69  ine transformati
7320: 6f 6e 20 6c 61 63 6b 69 6e 67 20 61 6e 79 20 61  on lacking any a
7330: 63 74 75 61 6c 20 65 66 66 65 63 74 3a 20 61 74  ctual effect: at
7340: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20   the end of the 
7350: 70 72 6f 63 65 73 73 20 74 68 65 20 74 72 61 6e  process the tran
7360: 73 66 6f 72 6d 65 64 20 67 65 6f 6d 65 74 72 79  sformed geometry
7370: 20 77 69 6c 6c 20 62 65 20 65 78 61 63 74 6c 79   will be exactly
7380: 20 74 68 65 20 73 61 6d 65 20 61 73 20 62 65 66   the same as bef
7390: 6f 72 65 2e 3c 62 72 3e 0d 0a 4d 6f 72 65 6f 76  ore.<br>..Moreov
73a0: 65 72 20 61 6e 20 69 64 65 6e 74 69 74 79 20 6d  er an identity m
73b0: 61 74 72 69 78 20 70 6c 61 79 73 20 61 20 73 70  atrix plays a sp
73c0: 65 63 69 61 6c 20 72 6f 6c 65 20 69 6e 20 6d 75  ecial role in mu
73d0: 6c 74 69 70 6c 69 63 61 74 69 6f 6e 3a 20 74 68  ltiplication: th
73e0: 65 20 72 65 73 75 6c 74 69 6e 67 20 6d 61 74 72  e resulting matr
73f0: 69 78 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  ix will always b
7400: 65 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61  e exactly the sa
7410: 6d 65 20 6f 66 20 74 68 65 20 6f 74 68 65 72 20  me of the other 
7420: 6d 61 74 72 69 78 2e 3c 62 72 3e 0d 0a 28 3c 69  matrix.<br>..(<i
7430: 3e 69 74 27 73 20 6d 6f 72 65 20 6f 72 20 6c 65  >it's more or le
7440: 73 73 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e  ss the equivalen
7450: 74 20 6f 66 20 6d 75 6c 74 69 70 6c 79 69 6e 67  t of multiplying
7460: 20 65 2e 67 2e 20 3c 62 3e 38 2a 31 3d 38 3c 2f   e.g. <b>8*1=8</
7470: 62 3e 20 69 6e 20 61 6e 20 6f 72 64 69 6e 61 72  b> in an ordinar
7480: 79 20 73 63 61 6c 61 72 20 6d 75 6c 74 69 70 6c  y scalar multipl
7490: 69 63 61 74 69 6f 6e 3c 2f 69 3e 29 2e 3c 62 72  ication</i>).<br
74a0: 3e 3c 62 72 3e 0d 0a 3c 68 72 3e 0d 0a 3c 68 33  ><br>..<hr>..<h3
74b0: 3e 42 6f 72 69 6e 67 20 53 51 4c 20 66 75 6e 63  >Boring SQL func
74c0: 74 69 6f 6e 73 3a 20 61 20 66 6f 72 6d 61 6c 20  tions: a formal 
74d0: 65 78 70 6c 61 6e 61 74 69 6f 6e 3c 2f 68 33 3e  explanation</h3>
74e0: 0d 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
74f0: 22 31 22 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d  "1" cellspacing=
7500: 22 34 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  "4" cellpadding=
7510: 22 38 22 20 62 67 63 6f 6c 6f 72 3d 22 23 66 66  "8" bgcolor="#ff
7520: 66 30 64 30 22 3e 0d 0a 3c 74 72 3e 3c 74 68 20  f0d0">..<tr><th 
7530: 62 67 63 6f 6c 6f 72 3d 22 23 43 33 42 30 39 31  bgcolor="#C3B091
7540: 22 3e 53 51 4c 20 46 75 6e 63 74 69 6f 6e 3c 2f  ">SQL Function</
7550: 74 68 3e 3c 74 68 20 62 67 63 6f 6c 6f 72 3d 22  th><th bgcolor="
7560: 23 43 33 42 30 39 31 22 3e 44 65 73 63 72 69 70  #C3B091">Descrip
7570: 74 69 6f 6e 3c 2f 74 68 3e 3c 2f 74 72 3e 0d 0a  tion</th></tr>..
7580: 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 54  <tr><td><b>ATM_T
7590: 72 61 6e 73 66 6f 72 6d 20 28 20 42 4c 4f 42 20  ransform ( BLOB 
75a0: 47 65 6f 6d 65 74 72 79 20 2c 20 42 4c 4f 42 20  Geometry , BLOB 
75b0: 41 54 2d 6d 61 74 72 69 78 20 29 20 3a 20 42 4c  AT-matrix ) : BL
75c0: 4f 42 20 47 65 6f 6d 65 74 72 79 3c 2f 74 64 3e  OB Geometry</td>
75d0: 3c 74 64 3e 57 69 6c 6c 20 72 65 74 75 72 6e 20  <td>Will return 
75e0: 61 20 6e 65 77 20 47 65 6f 6d 65 74 72 79 20 62  a new Geometry b
75f0: 79 20 61 70 70 6c 79 69 6e 67 20 61 6e 20 41 66  y applying an Af
7600: 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74  fine Transformat
7610: 69 6f 6e 20 74 6f 20 74 68 65 20 69 6e 70 75 74  ion to the input
7620: 20 47 65 6f 6d 65 74 72 79 2e 3c 62 72 3e 0d 0a   Geometry.<br>..
7630: 54 68 65 20 6f 75 74 70 75 74 20 47 65 6f 6d 65  The output Geome
7640: 74 72 79 20 77 69 6c 6c 20 70 72 65 73 65 72 76  try will preserv
7650: 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 53  e the original S
7660: 52 49 44 2c 20 64 69 6d 65 6e 73 69 6f 6e 73 20  RID, dimensions 
7670: 61 6e 64 20 74 79 70 65 2e 3c 62 72 3e 0d 0a 4e  and type.<br>..N
7680: 55 4c 4c 20 77 69 6c 6c 20 62 65 20 72 65 74 75  ULL will be retu
7690: 72 6e 65 64 20 6f 6e 20 69 6e 76 61 6c 69 64 20  rned on invalid 
76a0: 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c  arguments.</td><
76b0: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62  /tr>..<tr><td><b
76c0: 3e 41 54 4d 5f 49 73 56 61 6c 69 64 20 28 20 42  >ATM_IsValid ( B
76d0: 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 20 29 20  LOB AT-matrix ) 
76e0: 3a 20 42 4f 4f 4c 45 41 4e 3c 2f 74 64 3e 3c 74  : BOOLEAN</td><t
76f0: 64 3e 57 69 6c 6c 20 63 68 65 63 6b 20 69 66 20  d>Will check if 
7700: 61 20 42 4c 4f 42 20 64 6f 20 72 65 61 6c 6c 79  a BLOB do really
7710: 20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f 20 61   correspond to a
7720: 6e 20 65 6e 63 6f 64 65 64 20 41 66 66 69 6e 65  n encoded Affine
7730: 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20   Transformation 
7740: 4d 61 74 72 69 78 20 74 68 65 6e 20 72 65 74 75  Matrix then retu
7750: 72 6e 69 6e 67 20 54 52 55 45 20 6f 72 20 46 41  rning TRUE or FA
7760: 4c 53 45 2e 3c 62 72 3e 0d 0a 2d 31 20 77 69 6c  LSE.<br>..-1 wil
7770: 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66  l be returned if
7780: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   the argument is
7790: 6e 27 74 20 6f 66 20 74 68 65 20 42 4c 4f 42 20  n't of the BLOB 
77a0: 74 79 70 65 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  type.</td></tr>.
77b0: 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f  .<tr><td><b>ATM_
77c0: 41 73 54 65 78 74 20 28 20 42 4c 4f 42 20 41 54  AsText ( BLOB AT
77d0: 2d 6d 61 74 72 69 78 20 29 20 3a 20 54 45 58 54  -matrix ) : TEXT
77e0: 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65  </td><td>Will re
77f0: 74 75 72 6e 20 61 20 74 65 78 74 20 73 65 72 69  turn a text seri
7800: 61 6c 69 7a 65 64 20 72 65 70 72 65 73 65 6e 74  alized represent
7810: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 4d 61 74  ation of the Mat
7820: 72 69 78 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 77  rix.<br>..NULL w
7830: 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20  ill be returned 
7840: 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 67 75 6d  on invalid argum
7850: 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  ents.</td></tr>.
7860: 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f  .<tr><td><b>ATM_
7870: 4d 75 6c 74 69 70 6c 79 20 28 20 42 4c 4f 42 20  Multiply ( BLOB 
7880: 41 54 2d 6d 61 74 72 69 78 2d 41 20 2c 20 42 4c  AT-matrix-A , BL
7890: 4f 42 20 41 54 2d 6d 61 74 72 69 78 2d 42 20 29  OB AT-matrix-B )
78a0: 20 3a 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69   : BLOB AT-matri
78b0: 78 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 6d  x</td><td>Will m
78c0: 75 6c 74 69 70 6c 79 20 4d 61 74 72 69 78 2d 42  ultiply Matrix-B
78d0: 20 62 79 20 4d 61 74 72 69 78 2d 41 20 74 68 65   by Matrix-A the
78e0: 6e 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20  n returning the 
78f0: 72 65 73 75 6c 74 69 6e 67 20 4d 61 74 72 69 78  resulting Matrix
7900: 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 77 69 6c 6c  .<br>..NULL will
7910: 20 62 65 20 72 65 74 75 72 6e 65 64 20 6f 6e 20   be returned on 
7920: 69 6e 76 61 6c 69 64 20 61 72 67 75 6d 65 6e 74  invalid argument
7930: 73 2e 3c 68 72 3e 0d 0a 3c 75 3e 4e 6f 74 65 3c  s.<hr>..<u>Note<
7940: 2f 75 3e 3a 20 74 68 65 20 74 72 61 6e 73 66 6f  /u>: the transfo
7950: 72 6d 61 74 69 6f 6e 20 64 65 66 69 6e 65 64 20  rmation defined 
7960: 62 79 20 4d 61 74 72 69 78 2d 41 20 28 6c 65 66  by Matrix-A (lef
7970: 74 20 6f 70 65 72 61 6e 64 29 20 77 69 6c 6c 20  t operand) will 
7980: 61 6c 77 61 79 73 20 68 61 70 70 65 6e 20 3c 75  always happen <u
7990: 3e 61 66 74 65 72 3c 2f 75 3e 20 61 70 70 6c 79  >after</u> apply
79a0: 69 6e 67 20 61 6c 6c 20 74 72 61 6e 73 66 6f 72  ing all transfor
79b0: 6d 61 74 69 6f 6e 73 20 64 65 66 69 6e 65 64 20  mations defined 
79c0: 62 79 20 4d 61 74 72 69 78 2d 42 20 28 72 69 67  by Matrix-B (rig
79d0: 68 74 20 6f 70 65 72 61 6e 64 29 2e 3c 2f 74 64  ht operand).</td
79e0: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 68 20  ></tr>..<tr><th 
79f0: 63 6f 6c 73 70 61 6e 3d 22 32 22 20 62 67 63 6f  colspan="2" bgco
7a00: 6c 6f 72 3d 22 23 46 30 45 36 38 43 22 20 61 6c  lor="#F0E68C" al
7a10: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 53 51 4c  ign="center">SQL
7a20: 20 66 75 6e 63 74 69 6f 6e 73 20 63 72 65 61 74   functions creat
7a30: 69 6e 67 20 61 6e 64 20 69 6e 69 74 69 61 6c 69  ing and initiali
7a40: 7a 69 6e 67 20 61 20 6e 65 77 20 41 66 66 69 6e  zing a new Affin
7a50: 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e  e Transformation
7a60: 20 4d 61 74 72 69 78 3c 2f 74 68 3e 3c 2f 74 72   Matrix</th></tr
7a70: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54  >..<tr><td><b>AT
7a80: 4d 5f 43 72 65 61 74 65 20 28 20 76 6f 69 64 20  M_Create ( void 
7a90: 29 20 3a 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72  ) : BLOB AT-matr
7aa0: 69 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57  ix</b></td><td>W
7ab0: 69 6c 6c 20 72 65 74 75 72 6e 20 61 6e 20 49 64  ill return an Id
7ac0: 65 6e 74 69 74 79 20 41 66 66 69 6e 65 20 54 72  entity Affine Tr
7ad0: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74  ansformation Mat
7ae0: 72 69 78 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69  rix.<br>..NULL i
7af0: 66 20 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 75  f any error occu
7b00: 72 73 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c  rs.</td></tr>..<
7b10: 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 43 72  tr><td><b>ATM_Cr
7b20: 65 61 74 65 20 28 20 64 6f 75 62 6c 65 20 61 20  eate ( double a 
7b30: 2c 20 64 6f 75 62 6c 65 20 62 20 2c 20 64 6f 75  , double b , dou
7b40: 62 6c 65 20 64 20 2c 20 64 6f 75 62 6c 65 20 65  ble d , double e
7b50: 20 2c 20 64 6f 75 62 6c 65 20 78 6f 66 66 20 2c   , double xoff ,
7b60: 20 64 6f 75 62 6c 65 20 79 6f 66 66 20 29 20 3a   double yoff ) :
7b70: 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c   BLOB AT-matrix<
7b80: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c  /b></td><td>Will
7b90: 20 72 65 74 75 72 6e 20 61 20 32 44 20 41 66 66   return a 2D Aff
7ba0: 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69  ine Transformati
7bb0: 6f 6e 20 4d 61 74 72 69 78 20 69 6e 69 74 69 61  on Matrix initia
7bc0: 6c 69 7a 65 64 20 77 69 74 68 20 65 78 70 6c 69  lized with expli
7bd0: 63 69 74 20 76 61 6c 75 65 73 2e 3c 62 72 3e 0d  cit values.<br>.
7be0: 0a 4e 55 4c 4c 20 69 66 20 61 6e 79 20 65 72 72  .NULL if any err
7bf0: 6f 72 20 6f 63 63 75 72 73 20 6f 72 20 6f 6e 20  or occurs or on 
7c00: 69 6e 76 61 6c 69 64 20 61 72 67 75 6d 65 6e 74  invalid argument
7c10: 73 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74  s.</td></tr>..<t
7c20: 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 43 72 65  r><td><b>ATM_Cre
7c30: 61 74 65 20 28 20 64 6f 75 62 6c 65 20 61 20 2c  ate ( double a ,
7c40: 20 64 6f 75 62 6c 65 20 62 20 2c 20 64 6f 75 62   double b , doub
7c50: 6c 65 20 63 20 2c 20 64 6f 75 62 6c 65 20 64 20  le c , double d 
7c60: 2c 20 64 6f 75 62 6c 65 20 65 20 2c 20 64 6f 75  , double e , dou
7c70: 62 6c 65 20 66 20 2c 20 64 6f 75 62 6c 65 20 67  ble f , double g
7c80: 20 2c 20 64 6f 75 62 6c 65 20 68 20 2c 20 64 6f   , double h , do
7c90: 75 62 6c 65 20 69 20 2c 20 64 6f 75 62 6c 65 20  uble i , double 
7ca0: 78 6f 66 66 20 2c 20 64 6f 75 62 6c 65 20 79 6f  xoff , double yo
7cb0: 66 66 20 2c 20 64 6f 75 62 6c 65 20 64 6f 75 62  ff , double doub
7cc0: 6c 65 20 7a 6f 66 66 20 29 20 3a 20 42 4c 4f 42  le zoff ) : BLOB
7cd0: 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 2f   AT-matrix</b></
7ce0: 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 75  td><td>Will retu
7cf0: 72 6e 20 61 20 33 44 20 41 66 66 69 6e 65 20 54  rn a 3D Affine T
7d00: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61  ransformation Ma
7d10: 74 72 69 78 20 69 6e 69 74 69 61 6c 69 7a 65 64  trix initialized
7d20: 20 77 69 74 68 20 65 78 70 6c 69 63 69 74 20 76   with explicit v
7d30: 61 6c 75 65 73 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c  alues.<br>..NULL
7d40: 20 69 66 20 61 6e 79 20 65 72 72 6f 72 20 6f 63   if any error oc
7d50: 63 75 72 73 20 6f 72 20 6f 6e 20 69 6e 76 61 6c  curs or on inval
7d60: 69 64 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74  id arguments.</t
7d70: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64  d></tr>..<tr><td
7d80: 3e 3c 62 3e 41 54 4d 5f 43 72 65 61 74 65 54 72  ><b>ATM_CreateTr
7d90: 61 6e 73 6c 61 74 65 20 28 20 64 6f 75 62 6c 65  anslate ( double
7da0: 20 74 78 20 2c 20 64 6f 75 62 6c 65 20 74 79 20   tx , double ty 
7db0: 29 20 3a 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72  ) : BLOB AT-matr
7dc0: 69 78 3c 2f 62 3e 3c 62 72 3e 0d 0a 3c 62 3e 41  ix</b><br>..<b>A
7dd0: 54 4d 5f 43 72 65 61 74 65 54 72 61 6e 73 6c 61  TM_CreateTransla
7de0: 74 65 20 28 20 64 6f 75 62 6c 65 20 74 78 20 2c  te ( double tx ,
7df0: 20 64 6f 75 62 6c 65 20 74 79 20 2c 20 64 6f 75   double ty , dou
7e00: 62 6c 65 20 74 7a 20 29 20 3a 20 42 4c 4f 42 20  ble tz ) : BLOB 
7e10: 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 2f 74  AT-matrix</b></t
7e20: 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 75 72  d><td>Will retur
7e30: 6e 20 61 6e 20 41 66 66 69 6e 65 20 54 72 61 6e  n an Affine Tran
7e40: 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 72 69  sformation Matri
7e50: 78 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 72 65  x initialized re
7e60: 73 70 65 63 74 69 76 65 6c 79 20 61 73 20 61 20  spectively as a 
7e70: 32 44 20 6f 72 20 33 44 20 54 72 61 6e 73 6c 61  2D or 3D Transla
7e80: 74 65 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66  te.<br>..NULL if
7e90: 20 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 75 72   any error occur
7ea0: 73 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20  s or on invalid 
7eb0: 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c  arguments.</td><
7ec0: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62  /tr>..<tr><td><b
7ed0: 3e 41 54 4d 5f 43 72 65 61 74 65 53 63 61 6c 65  >ATM_CreateScale
7ee0: 20 28 20 64 6f 75 62 6c 65 20 73 78 20 2c 20 64   ( double sx , d
7ef0: 6f 75 62 6c 65 20 73 79 20 29 20 3a 20 42 4c 4f  ouble sy ) : BLO
7f00: 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c  B AT-matrix</b><
7f10: 62 72 3e 0d 0a 3c 62 3e 41 54 4d 5f 43 72 65 61  br>..<b>ATM_Crea
7f20: 74 65 53 63 61 6c 65 20 28 20 64 6f 75 62 6c 65  teScale ( double
7f30: 20 73 78 20 2c 20 64 6f 75 62 6c 65 20 73 79 20   sx , double sy 
7f40: 2c 20 64 6f 75 62 6c 65 20 73 7a 20 29 20 3a 20  , double sz ) : 
7f50: 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f  BLOB AT-matrix</
7f60: 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20  b></td><td>Will 
7f70: 72 65 74 75 72 6e 20 61 6e 20 41 66 66 69 6e 65  return an Affine
7f80: 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20   Transformation 
7f90: 4d 61 74 72 69 78 20 69 6e 69 74 69 61 6c 69 7a  Matrix initializ
7fa0: 65 64 20 72 65 73 70 65 63 74 69 76 65 6c 79 20  ed respectively 
7fb0: 61 73 20 61 20 32 44 20 6f 72 20 33 44 20 53 63  as a 2D or 3D Sc
7fc0: 61 6c 65 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69  ale.<br>..NULL i
7fd0: 66 20 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 75  f any error occu
7fe0: 72 73 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64  rs or on invalid
7ff0: 20 61 72 67 75 6d 65 6e 74 73 2e 2e 3c 2f 74 64   arguments..</td
8000: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e  ></tr>..<tr><td>
8010: 3c 62 3e 41 54 4d 5f 43 72 65 61 74 65 52 6f 74  <b>ATM_CreateRot
8020: 61 74 65 20 28 20 64 6f 75 62 6c 65 20 61 6e 67  ate ( double ang
8030: 6c 65 20 29 20 3a 20 42 4c 4f 42 20 41 54 2d 6d  le ) : BLOB AT-m
8040: 61 74 72 69 78 3c 2f 62 3e 3c 62 72 3e 0d 0a 3c  atrix</b><br>..<
8050: 62 3e 41 54 4d 5f 43 72 65 61 74 65 5a 52 6f 6c  b>ATM_CreateZRol
8060: 6c 20 28 20 64 6f 75 62 6c 65 20 61 6e 67 6c 65  l ( double angle
8070: 20 29 20 3a 20 42 4c 4f 42 20 41 54 2d 6d 61 74   ) : BLOB AT-mat
8080: 72 69 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e  rix</b></td><td>
8090: 57 69 6c 6c 20 72 65 74 75 72 6e 20 61 6e 20 41  Will return an A
80a0: 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61  ffine Transforma
80b0: 74 69 6f 6e 20 4d 61 74 72 69 78 20 69 6e 69 74  tion Matrix init
80c0: 69 61 6c 69 7a 65 64 20 61 73 20 52 6f 74 61 74  ialized as Rotat
80d0: 69 6f 6e 20 61 72 6f 75 6e 64 20 74 68 65 20 5a  ion around the Z
80e0: 20 61 78 69 73 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c   axis.<br>..NULL
80f0: 20 69 66 20 61 6e 79 20 65 72 72 6f 72 20 6f 63   if any error oc
8100: 63 75 72 73 20 6f 72 20 6f 6e 20 69 6e 76 61 6c  curs or on inval
8110: 69 64 20 61 72 67 75 6d 65 6e 74 73 2e 3c 68 72  id arguments.<hr
8120: 3e 0d 0a 54 68 65 20 61 6e 67 6c 65 20 69 73 20  >..The angle is 
8130: 61 6c 77 61 79 73 20 65 78 70 65 63 74 65 64 20  always expected 
8140: 74 6f 20 62 65 20 6d 65 61 73 75 72 65 64 20 69  to be measured i
8150: 6e 20 64 65 63 69 6d 61 6c 20 64 65 67 72 65 65  n decimal degree
8160: 73 2e 20 54 68 65 20 64 69 72 65 63 74 69 6f 6e  s. The direction
8170: 20 6f 66 20 72 6f 74 61 74 69 6f 6e 20 69 73 20   of rotation is 
8180: 64 65 66 69 6e 65 64 20 73 75 63 68 20 74 68 61  defined such tha
8190: 74 20 70 6f 73 69 74 69 76 65 20 61 6e 67 6c 65  t positive angle
81a0: 73 20 72 6f 74 61 74 65 20 69 6e 20 74 68 65 20  s rotate in the 
81b0: 64 69 72 65 63 74 69 6f 6e 20 66 72 6f 6d 20 74  direction from t
81c0: 68 65 20 70 6f 73 69 74 69 76 65 20 58 20 61 78  he positive X ax
81d0: 69 73 20 74 6f 77 61 72 64 20 74 68 65 20 70 6f  is toward the po
81e0: 73 69 74 69 76 65 20 59 20 61 78 69 73 2e 20 57  sitive Y axis. W
81f0: 69 74 68 20 74 68 65 20 64 65 66 61 75 6c 74 20  ith the default 
8200: 61 78 69 73 20 6f 72 69 65 6e 74 61 74 69 6f 6e  axis orientation
8210: 20 20 70 6f 73 69 74 69 76 65 20 61 6e 67 6c 65    positive angle
8220: 73 20 72 6f 74 61 74 65 20 69 6e 20 61 20 63 6f  s rotate in a co
8230: 75 6e 74 65 72 63 6c 6f 63 6b 77 69 73 65 20 64  unterclockwise d
8240: 69 72 65 63 74 69 6f 6e 2e 3c 68 72 3e 0d 0a 3c  irection.<hr>..<
8250: 75 3e 4e 6f 74 65 3c 2f 75 3e 3a 20 74 68 69 73  u>Note</u>: this
8260: 20 69 73 20 74 68 65 20 75 6e 69 71 75 65 20 72   is the unique r
8270: 6f 74 61 74 69 6f 6e 20 61 6c 6c 6f 77 65 64 20  otation allowed 
8280: 6f 6e 20 61 20 70 75 72 65 6c 79 20 32 44 20 70  on a purely 2D p
8290: 6c 61 6e 65 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d  lane.</td></tr>.
82a0: 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f  .<tr><td><b>ATM_
82b0: 43 72 65 61 74 65 58 52 6f 6c 6c 20 28 20 64 6f  CreateXRoll ( do
82c0: 75 62 6c 65 20 61 6e 67 6c 65 20 29 20 3a 20 42  uble angle ) : B
82d0: 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62  LOB AT-matrix</b
82e0: 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72  ></td><td>Will r
82f0: 65 74 75 72 6e 20 61 6e 20 41 66 66 69 6e 65 20  eturn an Affine 
8300: 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d  Transformation M
8310: 61 74 72 69 78 20 69 6e 69 74 69 61 6c 69 7a 65  atrix initialize
8320: 64 20 61 73 20 52 6f 74 61 74 69 6f 6e 20 61 72  d as Rotation ar
8330: 6f 75 6e 64 20 74 68 65 20 58 20 61 78 69 73 2e  ound the X axis.
8340: 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 61 6e  <br>..NULL if an
8350: 79 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f  y error occurs o
8360: 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 67  r on invalid arg
8370: 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f 74 72  uments.</td></tr
8380: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54  >..<tr><td><b>AT
8390: 4d 5f 43 72 65 61 74 65 59 52 6f 6c 6c 20 28 20  M_CreateYRoll ( 
83a0: 64 6f 75 62 6c 65 20 61 6e 67 6c 65 20 29 20 3a  double angle ) :
83b0: 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c   BLOB AT-matrix<
83c0: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c  /b></td><td>Will
83d0: 20 72 65 74 75 72 6e 20 61 6e 20 41 66 66 69 6e   return an Affin
83e0: 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e  e Transformation
83f0: 20 4d 61 74 72 69 78 20 69 6e 69 74 69 61 6c 69   Matrix initiali
8400: 7a 65 64 20 61 73 20 52 6f 74 61 74 69 6f 6e 20  zed as Rotation 
8410: 61 72 6f 75 6e 64 20 74 68 65 20 59 20 61 78 69  around the Y axi
8420: 73 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20  s.<br>..NULL if 
8430: 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 75 72 73  any error occurs
8440: 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61   or on invalid a
8450: 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f  rguments.</td></
8460: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 68 20 63 6f 6c  tr>..<tr><th col
8470: 73 70 61 6e 3d 22 32 22 20 62 67 63 6f 6c 6f 72  span="2" bgcolor
8480: 3d 22 23 46 30 45 36 38 43 22 20 61 6c 69 67 6e  ="#F0E68C" align
8490: 3d 22 63 65 6e 74 65 72 22 3e 53 51 4c 20 66 75  ="center">SQL fu
84a0: 6e 63 74 69 6f 6e 73 20 73 75 70 70 6f 72 74 69  nctions supporti
84b0: 6e 67 20 63 68 61 69 6e 69 6e 67 20 74 77 6f 20  ng chaining two 
84c0: 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d  Affine Transform
84d0: 61 74 69 6f 6e 20 4d 61 74 72 69 63 65 73 3c 2f  ation Matrices</
84e0: 74 68 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74  th></tr>..<tr><t
84f0: 64 3e 3c 62 3e 41 54 4d 5f 54 72 61 6e 73 6c 61  d><b>ATM_Transla
8500: 74 65 20 28 20 64 6f 75 62 6c 65 20 74 78 20 2c  te ( double tx ,
8510: 20 64 6f 75 62 6c 65 20 74 79 20 2c 20 42 4c 4f   double ty , BLO
8520: 42 20 41 54 2d 6d 61 74 72 69 78 20 29 20 3a 20  B AT-matrix ) : 
8530: 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f  BLOB AT-matrix</
8540: 62 3e 3c 62 72 3e 0d 0a 3c 62 3e 41 54 4d 5f 54  b><br>..<b>ATM_T
8550: 72 61 6e 73 6c 61 74 65 20 28 20 64 6f 75 62 6c  ranslate ( doubl
8560: 65 20 74 78 20 2c 20 64 6f 75 62 6c 65 20 74 79  e tx , double ty
8570: 20 2c 20 64 6f 75 62 6c 65 20 74 7a 20 2c 20 42   , double tz , B
8580: 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 20 29 20  LOB AT-matrix ) 
8590: 3a 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78  : BLOB AT-matrix
85a0: 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c  </b></td><td>Wil
85b0: 6c 20 72 65 74 75 72 6e 20 61 6e 20 41 66 66 69  l return an Affi
85c0: 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f  ne Transformatio
85d0: 6e 20 4d 61 74 72 69 78 20 62 79 20 63 68 61 69  n Matrix by chai
85e0: 6e 69 6e 67 20 72 65 73 70 65 63 74 69 76 65 6c  ning respectivel
85f0: 79 20 61 20 32 44 20 6f 72 20 33 44 20 54 72 61  y a 2D or 3D Tra
8600: 6e 73 6c 61 74 65 20 61 6e 64 20 61 6e 6f 74 68  nslate and anoth
8610: 65 72 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66  er Affine Transf
8620: 6f 72 6d 61 74 69 6f 6e 2e 3c 62 72 3e 0d 0a 4e  ormation.<br>..N
8630: 55 4c 4c 20 69 66 20 61 6e 79 20 65 72 72 6f 72  ULL if any error
8640: 20 6f 63 63 75 72 73 20 6f 72 20 6f 6e 20 69 6e   occurs or on in
8650: 76 61 6c 69 64 20 61 72 67 75 6d 65 6e 74 73 2e  valid arguments.
8660: 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e  </td></tr>..<tr>
8670: 3c 74 64 3e 3c 62 3e 41 54 4d 5f 53 63 61 6c 65  <td><b>ATM_Scale
8680: 20 28 20 64 6f 75 62 6c 65 20 73 78 20 2c 20 64   ( double sx , d
8690: 6f 75 62 6c 65 20 73 79 20 2c 20 42 4c 4f 42 20  ouble sy , BLOB 
86a0: 41 54 2d 6d 61 74 72 69 78 20 29 20 3a 20 42 4c  AT-matrix ) : BL
86b0: 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e  OB AT-matrix</b>
86c0: 3c 62 72 3e 0d 0a 3c 62 3e 41 54 4d 5f 53 63 61  <br>..<b>ATM_Sca
86d0: 6c 65 20 28 20 64 6f 75 62 6c 65 20 73 78 20 2c  le ( double sx ,
86e0: 20 64 6f 75 62 6c 65 20 73 79 20 2c 20 64 6f 75   double sy , dou
86f0: 62 6c 65 20 73 7a 20 2c 20 42 4c 4f 42 20 41 54  ble sz , BLOB AT
8700: 2d 6d 61 74 72 69 78 20 29 20 3a 20 42 4c 4f 42  -matrix ) : BLOB
8710: 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 2f   AT-matrix</b></
8720: 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 75  td><td>Will retu
8730: 72 6e 20 61 6e 20 41 66 66 69 6e 65 20 54 72 61  rn an Affine Tra
8740: 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 72  nsformation Matr
8750: 69 78 20 62 79 20 63 68 61 69 6e 69 6e 67 20 72  ix by chaining r
8760: 65 73 70 65 63 74 69 76 65 6c 79 20 61 20 32 44  espectively a 2D
8770: 20 6f 72 20 33 44 20 53 63 61 6c 65 20 61 6e 64   or 3D Scale and
8780: 20 61 6e 6f 74 68 65 72 20 41 66 66 69 6e 65 20   another Affine 
8790: 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 3c  Transformation.<
87a0: 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 61 6e 79  br>..NULL if any
87b0: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f 72   error occurs or
87c0: 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 67 75   on invalid argu
87d0: 6d 65 6e 74 73 2e 2e 3c 2f 74 64 3e 3c 2f 74 72  ments..</td></tr
87e0: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54  >..<tr><td><b>AT
87f0: 4d 5f 52 6f 74 61 74 65 20 28 20 64 6f 75 62 6c  M_Rotate ( doubl
8800: 65 20 61 6e 67 6c 65 20 2c 20 42 4c 4f 42 20 41  e angle , BLOB A
8810: 54 2d 6d 61 74 72 69 78 20 29 20 3a 20 42 4c 4f  T-matrix ) : BLO
8820: 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c  B AT-matrix</b><
8830: 62 72 3e 0d 0a 3c 62 3e 41 54 4d 5f 5a 52 6f 6c  br>..<b>ATM_ZRol
8840: 6c 20 28 20 64 6f 75 62 6c 65 20 61 6e 67 6c 65  l ( double angle
8850: 20 2c 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69   , BLOB AT-matri
8860: 78 20 29 20 3a 20 42 4c 4f 42 20 41 54 2d 6d 61  x ) : BLOB AT-ma
8870: 74 72 69 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64  trix</b></td><td
8880: 3e 57 69 6c 6c 20 72 65 74 75 72 6e 20 61 6e 20  >Will return an 
8890: 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d  Affine Transform
88a0: 61 74 69 6f 6e 20 4d 61 74 72 69 78 20 62 79 20  ation Matrix by 
88b0: 63 68 61 69 6e 69 6e 67 20 61 20 52 6f 74 61 74  chaining a Rotat
88c0: 69 6f 6e 20 61 72 6f 75 6e 64 20 74 68 65 20 5a  ion around the Z
88d0: 20 61 78 69 73 20 61 6e 64 20 61 6e 6f 74 68 65   axis and anothe
88e0: 72 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f  r Affine Transfo
88f0: 72 6d 61 74 69 6f 6e 2e 3c 62 72 3e 0d 0a 4e 55  rmation.<br>..NU
8900: 4c 4c 20 69 66 20 61 6e 79 20 65 72 72 6f 72 20  LL if any error 
8910: 6f 63 63 75 72 73 20 6f 72 20 6f 6e 20 69 6e 76  occurs or on inv
8920: 61 6c 69 64 20 61 72 67 75 6d 65 6e 74 73 2e 3c  alid arguments.<
8930: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c  /td></tr>..<tr><
8940: 74 64 3e 3c 62 3e 41 54 4d 5f 58 52 6f 6c 6c 20  td><b>ATM_XRoll 
8950: 28 20 64 6f 75 62 6c 65 20 61 6e 67 6c 65 20 29  ( double angle )
8960: 20 3a 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69   : BLOB AT-matri
8970: 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69  x</b></td><td>Wi
8980: 6c 6c 20 72 65 74 75 72 6e 20 61 6e 20 41 66 66  ll return an Aff
8990: 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69  ine Transformati
89a0: 6f 6e 20 4d 61 74 72 69 78 20 62 79 20 63 68 61  on Matrix by cha
89b0: 69 6e 69 6e 67 20 61 20 52 6f 74 61 74 69 6f 6e  ining a Rotation
89c0: 20 61 72 6f 75 6e 64 20 74 68 65 20 58 20 61 78   around the X ax
89d0: 69 73 20 61 6e 64 20 61 6e 6f 74 68 65 72 20 41  is and another A
89e0: 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61  ffine Transforma
89f0: 74 69 6f 6e 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20  tion.<br>..NULL 
8a00: 69 66 20 61 6e 79 20 65 72 72 6f 72 20 6f 63 63  if any error occ
8a10: 75 72 73 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69  urs or on invali
8a20: 64 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64  d arguments.</td
8a30: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e  ></tr>..<tr><td>
8a40: 3c 62 3e 41 54 4d 5f 59 52 6f 6c 6c 20 28 20 64  <b>ATM_YRoll ( d
8a50: 6f 75 62 6c 65 20 61 6e 67 6c 65 20 29 20 3a 20  ouble angle ) : 
8a60: 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f  BLOB AT-matrix</
8a70: 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20  b></td><td>Will 
8a80: 72 65 74 75 72 6e 20 61 6e 20 41 66 66 69 6e 65  return an Affine
8a90: 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20   Transformation 
8aa0: 4d 61 74 72 69 78 20 62 79 20 63 68 61 69 6e 69  Matrix by chaini
8ab0: 6e 67 20 61 20 52 6f 74 61 74 69 6f 6e 20 61 72  ng a Rotation ar
8ac0: 6f 75 6e 64 20 74 68 65 20 59 20 61 78 69 73 20  ound the Y axis 
8ad0: 61 6e 64 20 61 6e 6f 74 68 65 72 20 41 66 66 69  and another Affi
8ae0: 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f  ne Transformatio
8af0: 6e 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20  n.<br>..NULL if 
8b00: 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 75 72 73  any error occurs
8b10: 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61   or on invalid a
8b20: 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f  rguments.</td></
8b30: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 2f 74  tr>..<tr><td></t
8b40: 64 3e 3c 74 64 3e 0d 0a 3c 75 3e 4e 6f 74 65 3c  d><td>..<u>Note<
8b50: 2f 75 3e 3a 20 61 6c 6c 20 74 68 65 20 61 62 6f  /u>: all the abo
8b60: 76 65 20 66 75 6e 63 74 69 6f 6e 73 20 73 69 6d  ve functions sim
8b70: 70 6c 79 20 61 72 65 20 63 6f 6e 76 65 6e 69 65  ply are convenie
8b80: 6e 63 65 20 6d 65 74 68 6f 64 73 20 69 6e 74 65  nce methods inte
8b90: 6e 64 65 64 20 74 6f 20 61 76 6f 69 64 20 61 6e  nded to avoid an
8ba0: 79 20 6e 65 65 64 20 74 6f 20 72 65 70 65 61 74  y need to repeat
8bb0: 65 64 6c 79 20 63 61 6c 6c 20 3c 62 3e 41 54 4d  edly call <b>ATM
8bc0: 5f 4d 75 6c 74 69 70 6c 79 28 29 3c 2f 62 3e 2e  _Multiply()</b>.
8bd0: 0d 0a 3c 76 65 72 62 61 74 69 6d 3e 0d 0a 53 45  ..<verbatim>..SE
8be0: 4c 45 43 54 20 41 54 4d 5f 4d 75 6c 74 69 70 6c  LECT ATM_Multipl
8bf0: 79 28 41 54 4d 5f 43 72 65 61 74 65 52 6f 74 61  y(ATM_CreateRota
8c00: 74 65 28 31 35 29 2c 20 0d 0a 20 20 20 20 20 20  te(15), ..      
8c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 54                AT
8c20: 4d 5f 4d 75 6c 74 69 70 6c 79 28 41 54 4d 5f 43  M_Multiply(ATM_C
8c30: 72 65 61 74 65 53 63 61 6c 65 28 31 2e 31 2c 20  reateScale(1.1, 
8c40: 31 2e 32 2c 20 31 2e 33 29 2c 20 0d 0a 20 20 20  1.2, 1.3), ..   
8c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 54                AT
8c70: 4d 5f 43 72 65 61 74 65 54 72 61 6e 73 6c 61 74  M_CreateTranslat
8c80: 65 28 31 30 2c 20 32 30 2c 20 33 30 29 29 29 3b  e(10, 20, 30)));
8c90: 0d 0a 0d 0a 53 45 4c 45 43 54 20 41 54 4d 5f 52  ....SELECT ATM_R
8ca0: 6f 74 61 74 65 28 31 35 2c 20 0d 0a 20 20 20 20  otate(15, ..    
8cb0: 20 20 20 20 20 20 41 54 4d 5f 53 63 61 6c 65 28        ATM_Scale(
8cc0: 31 2e 31 2c 20 31 2e 32 2c 20 31 2e 33 2c 0d 0a  1.1, 1.2, 1.3,..
8cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 54 4d               ATM
8ce0: 5f 43 72 65 61 74 65 54 72 61 6e 73 6c 61 74 65  _CreateTranslate
8cf0: 28 31 30 2c 20 32 30 2c 20 33 30 29 29 29 3b 0d  (10, 20, 30)));.
8d00: 0a 0d 0a 53 45 4c 45 43 54 20 41 54 4d 5f 52 6f  ...SELECT ATM_Ro
8d10: 74 61 74 65 28 31 35 2c 20 0d 0a 20 20 20 20 20  tate(15, ..     
8d20: 20 20 20 20 20 41 54 4d 5f 53 63 61 6c 65 28 31       ATM_Scale(1
8d30: 2e 31 2c 20 31 2e 32 2c 20 31 2e 33 2c 0d 0a 20  .1, 1.2, 1.3,.. 
8d40: 20 20 20 20 20 20 20 20 20 20 20 20 41 54 4d 5f              ATM_
8d50: 54 72 61 6e 73 6c 61 74 65 28 31 30 2c 20 32 30  Translate(10, 20
8d60: 2c 20 33 30 2c 0d 0a 20 20 20 20 20 20 20 20 20  , 30,..         
8d70: 20 20 20 20 20 20 20 41 54 4d 5f 43 72 65 61 74         ATM_Creat
8d80: 65 28 29 29 29 29 3b 0d 0a 3c 2f 76 65 72 62 61  e())));..</verba
8d90: 74 69 6d 3e 0d 0a 41 6c 6c 20 74 68 72 65 65 20  tim>..All three 
8da0: 73 74 61 74 65 6d 65 6e 74 73 20 77 69 6c 6c 20  statements will 
8db0: 72 65 74 75 72 6e 20 65 78 61 63 74 6c 79 20 74  return exactly t
8dc0: 68 65 20 73 61 6d 65 20 69 64 65 6e 74 69 63 61  he same identica
8dd0: 6c 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f  l Affine Transfo
8de0: 72 6d 61 74 69 6f 6e 20 4d 61 74 72 69 78 3b 20  rmation Matrix; 
8df0: 61 6e 79 77 61 79 20 74 68 65 20 73 65 63 6f 6e  anyway the secon
8e00: 64 20 6e 6f 74 61 74 69 6f 6e 20 69 73 20 6f 62  d notation is ob
8e10: 76 69 6f 75 73 6c 79 20 6d 6f 73 74 20 63 6f 6e  viously most con
8e20: 63 69 73 65 20 61 6e 64 20 6d 6f 72 65 20 70 72  cise and more pr
8e30: 61 63 74 69 63 61 6c 20 74 68 61 6e 20 74 68 65  actical than the
8e40: 20 6f 74 68 65 72 20 74 77 6f 2e 0d 0a 3c 2f 74   other two...</t
8e50: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 61 62 6c 65 3e  d></tr>..<table>
8e60: 3c 62 72 3e 3c 62 72 3e 0d 0a 3c 62 3e 4e 6f 74  <br><br>..<b>Not
8e70: 65 3c 2f 62 3e 3a 20 74 68 65 20 53 51 4c 20 69  e</b>: the SQL i
8e80: 6e 74 65 72 66 61 63 65 20 73 75 70 70 6f 72 74  nterface support
8e90: 69 6e 67 20 41 66 66 69 6e 65 20 54 72 61 73 66  ing Affine Trasf
8ea0: 6f 72 6d 61 74 69 6f 6e 73 20 69 73 20 64 65 73  ormations is des
8eb0: 69 67 6e 65 64 20 69 6e 20 73 75 63 68 20 61 20  igned in such a 
8ec0: 77 61 79 20 74 68 61 74 20 61 6e 79 20 63 6f 6d  way that any com
8ed0: 70 6c 65 78 69 74 79 20 61 6e 64 20 64 69 66 66  plexity and diff
8ee0: 69 63 75 6c 74 79 20 72 65 71 75 69 72 65 64 20  iculty required 
8ef0: 69 6e 20 6f 72 64 65 72 20 74 6f 20 64 69 72 65  in order to dire
8f00: 63 74 6c 79 20 68 61 6e 64 6c 65 20 6d 61 74 72  ctly handle matr
8f10: 69 63 69 61 6c 20 6f 70 65 72 61 74 69 6f 6e 73  icial operations
8f20: 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 68   is completely h
8f30: 69 64 64 65 6e 2e 3c 62 72 3e 0d 0a 59 6f 75 20  idden.<br>..You 
8f40: 61 72 65 20 73 69 6d 70 6c 79 20 72 65 71 75 69  are simply requi
8f50: 72 65 64 20 74 6f 20 63 68 61 69 6e 20 73 65 76  red to chain sev
8f60: 65 72 61 6c 20 65 6c 65 6d 65 6e 74 61 72 79 20  eral elementary 
8f70: 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 2c  transformations,
8f80: 20 65 61 63 68 20 6f 6e 65 20 6f 66 20 74 68 65   each one of the
8f90: 6d 20 62 61 73 69 63 61 6c 6c 79 20 73 69 6d 70  m basically simp
8fa0: 6c 65 2c 20 69 6e 20 74 68 65 20 63 6f 72 72 65  le, in the corre
8fb0: 63 74 20 73 65 71 75 65 6e 63 65 20 61 6e 64 20  ct sequence and 
8fc0: 74 68 61 74 27 73 20 61 62 73 6f 6c 75 74 65 6c  that's absolutel
8fd0: 79 20 61 6c 6c 2e 3c 62 72 3e 0d 0a 3c 62 3e 41  y all.<br>..<b>A
8fe0: 54 4d 3c 2f 62 3e 20 53 51 4c 20 66 75 6e 63 74  TM</b> SQL funct
8ff0: 69 6f 6e 73 20 77 69 6c 6c 20 3c 69 3e 3c 75 3e  ions will <i><u>
9000: 6d 61 67 69 63 61 6c 6c 79 20 61 6e 64 20 73 69  magically and si
9010: 6c 65 6e 74 6c 79 3c 2f 75 3e 3c 2f 69 3e 20 6b  lently</u></i> k
9020: 65 65 70 20 63 61 72 65 20 6f 66 20 61 6e 79 20  eep care of any 
9030: 6d 61 74 68 65 6d 61 74 69 63 61 6c 20 63 6f 6d  mathematical com
9040: 70 6c 65 78 69 74 79 2e 3c 62 72 3e 3c 62 72 3e  plexity.<br><br>
9050: 20 20 0d 0a 3c 68 72 3e 3c 62 72 3e 0d 0a 3c 61    ..<hr><br>..<a
9060: 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 77   href="https://w
9070: 77 77 2e 67 61 69 61 2d 67 69 73 2e 69 74 2f 66  ww.gaia-gis.it/f
9080: 6f 73 73 69 6c 2f 6c 69 62 73 70 61 74 69 61 6c  ossil/libspatial
9090: 69 74 65 2f 77 69 6b 69 3f 6e 61 6d 65 3d 34 2e  ite/wiki?name=4.
90a0: 32 2e 30 2d 64 6f 63 22 3e 62 61 63 6b 3c 2f 61  2.0-doc">back</a
90b0: 3e 0a 5a 20 63 61 35 66 39 61 65 38 35 30 64 65  >.Z ca5f9ae850de
90c0: 30 36 64 33 36 35 66 62 64 33 36 63 61 32 65 65  06d365fbd36ca2ee
90d0: 35 65 35 32 0a                                   5e52.