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>) &n
4130: 62 73 70 3b 26 6e 62 73 70 3b 3c 2f 74 64 3e 0d bsp; </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 >θ</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(θ)
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(θ)</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(θ)<
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(θ)</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 &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;  
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(θ)</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(θ)</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>θ</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 θ)</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(θ)<
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(θ)</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(θ)</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.