Wiki page
[Affine Transform] by
sandro
2015-05-04 16:58:41.
0000: 44 20 32 30 31 35 2d 30 35 2d 30 34 54 31 36 3a D 2015-05-04T16:
0010: 35 38 3a 34 31 2e 32 30 35 0a 4c 20 41 66 66 69 58:41.205.L Affi
0020: 6e 65 5c 73 54 72 61 6e 73 66 6f 72 6d 0a 50 20 ne\sTransform.P
0030: 31 36 33 63 33 33 32 31 61 36 32 31 61 63 39 64 163c3321a621ac9d
0040: 63 65 63 37 37 63 35 32 38 33 34 65 34 30 35 35 cec77c52834e4055
0050: 64 66 36 65 65 38 64 31 0a 55 20 73 61 6e 64 72 df6ee8d1.U sandr
0060: 6f 0a 57 20 33 36 39 32 33 0a 3c 61 20 68 72 65 o.W 36923.<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 66 69 74 ill widely befit
3820: 20 66 72 6f 6d 20 69 6e 63 72 65 61 73 65 64 20 from increased
3830: 65 78 63 68 61 6e 67 65 20 76 6f 6c 75 6d 65 73 exchange volumes
3840: 2c 20 62 75 74 20 53 69 63 69 6c 79 20 61 73 20 , but Sicily as
3850: 77 65 6c 6c 20 77 69 6c 6c 20 74 61 6b 65 20 70 well will take p
3860: 72 6f 66 69 74 20 66 72 6f 6d 20 66 6c 6f 75 72 rofit from flour
3870: 69 73 68 69 6e 67 20 6c 6f 67 69 73 74 69 63 20 ishing logistic
3880: 61 6e 64 20 62 79 20 6f 74 68 65 72 20 63 6f 6d and by other com
3890: 6d 65 72 63 69 61 6c 20 69 6e 74 65 72 6d 65 64 mercial intermed
38a0: 69 61 74 69 6f 6e 20 61 63 74 69 76 69 74 69 65 iation activitie
38b0: 73 2e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 3c 62 3e s.</li>..<li><b>
38c0: 50 72 61 63 74 69 63 61 6c 20 72 65 61 6c 69 7a Practical realiz
38d0: 61 74 69 6f 6e 3c 2f 62 3e 3a 20 74 68 65 20 70 ation</b>: the p
38e0: 72 65 73 65 6e 74 20 73 74 75 64 79 20 63 6c 65 resent study cle
38f0: 61 72 6c 79 20 64 65 6d 6f 6e 73 74 72 61 74 65 arly demonstrate
3900: 73 20 74 68 61 74 20 74 68 65 72 65 20 69 73 20 s that there is
3910: 6e 6f 74 68 69 6e 67 20 69 6e 20 4d 61 74 68 65 nothing in Mathe
3920: 6d 61 74 69 63 73 2c 20 47 65 6f 6d 65 74 72 79 matics, Geometry
3930: 20 6f 72 20 47 65 6f 67 72 61 70 68 79 20 66 6f or Geography fo
3940: 72 62 69 64 64 69 6e 67 20 74 68 65 20 70 72 61 rbidding the pra
3950: 63 74 69 63 61 6c 20 72 65 61 6c 69 7a 61 74 69 ctical realizati
3960: 6f 6e 20 6f 66 20 74 68 65 20 73 75 67 67 65 73 on of the sugges
3970: 74 65 64 20 69 64 65 61 2e 3c 62 72 3e 0d 0a 55 ted idea.<br>..U
3980: 6e 68 61 70 70 69 6c 79 20 74 68 65 20 63 75 72 nhappily the cur
3990: 72 65 6e 74 20 73 74 61 74 65 20 6f 66 20 74 68 rent state of th
39a0: 65 20 61 72 74 20 69 6e 20 47 65 6f 6c 6f 67 79 e art in Geology
39b0: 20 73 74 69 6c 6c 20 70 6f 73 65 73 20 6d 61 6e still poses man
39c0: 79 20 70 75 7a 7a 6c 69 6e 67 20 70 72 6f 62 6c y puzzling probl
39d0: 65 6d 73 20 6e 6f 74 20 79 65 74 20 66 75 6c 6c ems not yet full
39e0: 79 20 72 65 73 6f 6c 76 65 64 2e 3c 62 72 3e 0d y resolved.<br>.
39f0: 0a 41 6e 79 77 61 79 20 77 65 20 61 72 65 20 68 .Anyway we are h
3a00: 6f 70 65 66 75 6c 6c 79 20 65 78 70 65 63 74 69 opefully expecti
3a10: 6e 67 20 74 68 61 74 20 66 75 74 75 72 65 20 61 ng that future a
3a20: 64 76 61 6e 63 65 6d 65 6e 74 73 20 69 6e 20 54 dvancements in T
3a30: 65 63 74 6f 6e 69 63 73 20 77 69 6c 6c 20 70 6f ectonics will po
3a40: 73 73 69 62 6c 79 20 61 6c 6c 6f 77 20 74 6f 20 ssibly allow to
3a50: 6f 76 65 72 63 6f 6d 65 20 61 6e 79 20 72 65 6d overcome any rem
3a60: 61 69 6e 69 6e 67 20 69 73 73 75 65 2e 20 4d 6f aining issue. Mo
3a70: 72 65 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 re specifically
3a80: 61 20 62 65 74 74 65 72 20 6b 6e 6f 77 6c 65 64 a better knowled
3a90: 67 65 20 6f 66 20 69 6e 74 65 72 61 63 74 69 6f ge of interactio
3aa0: 6e 73 20 62 65 74 77 65 65 6e 20 74 68 65 20 63 ns between the c
3ab0: 72 75 73 74 20 61 6e 64 20 74 68 65 20 75 70 70 rust and the upp
3ac0: 65 72 20 6d 61 6e 74 6c 65 20 61 6c 6f 6e 67 20 er mantle along
3ad0: 74 68 65 20 4d 6f 68 6f 20 61 6e 64 20 61 20 64 the Moho and a d
3ae0: 65 65 70 65 72 20 63 6f 6d 70 72 65 68 65 6e 73 eeper comprehens
3af0: 69 6f 6e 20 6f 66 20 74 68 65 20 6d 69 63 72 6f ion of the micro
3b00: 2d 70 6c 61 71 75 65 73 20 6d 65 63 68 61 6e 69 -plaques mechani
3b10: 63 73 20 77 69 6c 6c 20 63 65 72 74 61 69 6e 6c cs will certainl
3b20: 79 20 68 65 6c 70 3b 20 77 65 20 61 72 65 20 72 y help; we are r
3b30: 61 74 68 65 72 20 63 6f 6e 66 69 64 65 6e 74 20 ather confident
3b40: 69 6e 20 66 75 74 75 72 65 20 72 65 73 65 61 72 in future resear
3b50: 63 68 20 61 63 68 69 65 76 65 6d 65 6e 74 73 20 ch achievements
3b60: 6f 6e 20 74 68 65 73 65 20 66 69 65 6c 64 73 2e on these fields.
3b70: 0d 0a 3c 2f 6f 6c 3e 0d 0a 3c 2f 74 64 3e 3c 74 ..</ol>..</td><t
3b80: 64 3e 0d 0a 3c 69 6d 67 20 73 72 63 3d 22 68 74 d>..<img src="ht
3b90: 74 70 73 3a 2f 2f 77 77 77 2e 67 61 69 61 2d 67 tps://www.gaia-g
3ba0: 69 73 2e 69 74 2f 67 61 69 61 2d 73 69 6e 73 2f is.it/gaia-sins/
3bb0: 61 66 66 69 6e 65 2d 70 69 63 73 2f 69 74 61 6c affine-pics/ital
3bc0: 79 2d 32 2e 30 2e 70 6e 67 22 20 61 6c 74 3d 22 y-2.0.png" alt="
3bd0: 69 74 61 6c 79 2d 32 2e 30 22 20 62 6f 72 64 65 italy-2.0" borde
3be0: 72 3d 22 31 22 3e 0d 0a 3c 2f 74 64 3e 3c 2f 74 r="1">..</td></t
3bf0: 72 3e 0d 0a 3c 2f 74 61 62 6c 65 3e 3c 62 72 3e r>..</table><br>
3c00: 3c 68 72 3e 0d 0a 3c 68 32 3e 42 6f 72 69 6e 67 <hr>..<h2>Boring
3c10: 20 4d 61 74 68 3a 20 61 20 6d 6f 72 65 20 66 6f Math: a more fo
3c20: 72 6d 61 6c 20 70 72 65 73 65 6e 74 61 74 69 6f rmal presentatio
3c30: 6e 3c 2f 68 32 3e 0d 0a 50 6c 61 79 74 69 6d 65 n</h2>..Playtime
3c40: 27 73 20 6f 76 65 72 3a 20 77 65 27 6c 6c 20 6e 's over: we'll n
3c50: 6f 77 20 73 74 61 72 74 20 61 20 6d 6f 73 74 20 ow start a most
3c60: 73 65 72 69 6f 75 73 20 65 78 70 6c 61 6e 61 74 serious explanat
3c70: 69 6f 6e 2e 3c 62 72 3e 3c 62 72 3e 0d 0a 41 6e ion.<br><br>..An
3c80: 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 Affine Transfor
3c90: 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 72 65 mation can be re
3ca0: 70 72 65 73 65 6e 74 65 64 20 69 6e 20 74 68 65 presented in the
3cb0: 20 66 6f 72 6d 20 6f 66 20 61 20 73 71 75 61 72 form of a squar
3cc0: 65 20 6d 61 74 72 69 78 3b 20 74 68 65 20 73 69 e matrix; the si
3cd0: 6d 70 6c 65 72 20 3c 62 3e 32 44 3c 2f 62 3e 20 mpler <b>2D</b>
3ce0: 63 61 73 65 20 72 65 71 75 69 72 65 73 20 61 20 case requires a
3cf0: 3c 62 3e 33 20 78 20 33 3c 2f 62 3e 20 6d 61 74 <b>3 x 3</b> mat
3d00: 72 69 78 2c 20 61 6e 64 20 74 68 65 20 66 6f 6c rix, and the fol
3d10: 6c 6f 77 69 6e 67 73 20 61 72 65 20 74 68 65 20 lowings are the
3d20: 70 6f 73 73 69 62 6c 65 20 61 72 72 61 6e 67 65 possible arrange
3d30: 6d 65 6e 74 73 20 63 6f 72 72 65 73 70 6f 6e 64 ments correspond
3d40: 69 6e 67 20 74 6f 20 65 61 63 68 20 65 6c 65 6d ing to each elem
3d50: 65 6e 74 61 72 79 20 74 72 61 6e 73 66 6f 72 6d entary transform
3d60: 61 74 69 6f 6e 3a 3c 62 72 3e 3c 62 72 3e 0d 0a ation:<br><br>..
3d70: 3c 74 61 62 6c 65 3e 0d 0a 3c 74 72 3e 3c 74 64 <table>..<tr><td
3d80: 20 72 6f 77 73 70 61 6e 3d 22 34 22 20 76 61 6c rowspan="4" val
3d90: 69 67 6e 3d 22 6d 69 64 64 6c 65 22 3e 47 65 6e ign="middle">Gen
3da0: 65 72 61 6c 20 6c 61 79 6f 75 74 3c 2f 74 64 3e eral layout</td>
3db0: 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 ..<td>/</td><td
3dc0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c align="center"><
3dd0: 62 3e 61 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 b>a</b></td><td
3de0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c align="center"><
3df0: 62 3e 62 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 b>b</b></td><td
3e00: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c align="center"><
3e10: 62 3e 78 6f 66 66 3c 2f 62 3e 3c 2f 74 64 3e 3c b>xoff</b></td><
3e20: 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a td>\</td></tr>..
3e30: 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 <tr><td>|</td><t
3e40: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
3e50: 3e 3c 62 3e 64 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 ><b>d</b></td><t
3e60: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
3e70: 3e 3c 62 3e 65 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 ><b>e</b></td><t
3e80: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
3e90: 3e 3c 62 3e 79 6f 66 66 3c 2f 62 3e 3c 2f 74 64 ><b>yoff</b></td
3ea0: 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e ><td>|</td></tr>
3eb0: 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e ..<tr><td>\</td>
3ec0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
3ed0: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 r">0</td><td ali
3ee0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 gn="center">0</t
3ef0: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
3f00: 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f ter">1</td><td>/
3f10: 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e </td></tr>..<tr>
3f20: 3c 74 64 20 63 6f 6c 73 70 61 6e 3d 22 35 22 3e <td colspan="5">
3f30: 3c 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a <hr></td></tr>..
3f40: 3c 74 72 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d <tr><td rowspan=
3f50: 22 34 22 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 "4" valign="midd
3f60: 6c 65 22 3e 49 64 65 6e 74 69 74 79 3c 2f 74 64 le">Identity</td
3f70: 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 >..<td>/</td><td
3f80: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
3f90: 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 1</td><td align=
3fa0: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c "center">0</td><
3fb0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
3fc0: 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 5c 3c 2f 74 ">0</td><td>\</t
3fd0: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 d></tr>..<tr><td
3fe0: 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e >|</td><td align
3ff0: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e ="center">0</td>
4000: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
4010: 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 r">1</td><td ali
4020: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 gn="center">0</t
4030: 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 d><td>|</td></tr
4040: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 >..<tr><td>\</td
4050: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
4060: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c er">0</td><td al
4070: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f ign="center">0</
4080: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
4090: 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e nter">1</td><td>
40a0: 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 /</td></tr>..<tr
40b0: 3e 3c 74 64 20 63 6f 6c 73 70 61 6e 3d 22 35 22 ><td colspan="5"
40c0: 3e 3c 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d ><hr></td></tr>.
40d0: 0a 3c 74 72 3e 3c 74 64 20 72 6f 77 73 70 61 6e .<tr><td rowspan
40e0: 3d 22 34 22 20 76 61 6c 69 67 6e 3d 22 6d 69 64 ="4" valign="mid
40f0: 64 6c 65 22 3e 54 72 61 6e 73 6c 61 74 65 28 3c dle">Translate(<
4100: 62 3e 74 78 3c 2f 62 3e 2c 20 3c 62 3e 74 79 3c b>tx</b>, <b>ty<
4110: 2f 62 3e 29 26 6e 62 73 70 3b 26 6e 62 73 70 3b /b>)
4120: 26 6e 62 73 70 3b 3c 2f 74 64 3e 0d 0a 3c 74 64 </td>..<td
4130: 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e >/</td><td align
4140: 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e ="center">1</td>
4150: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
4160: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 r">0</td><td ali
4170: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 74 gn="center"><b>t
4180: 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 5c 3c x</b></td><td>\<
4190: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
41a0: 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 td>|</td><td ali
41b0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 gn="center">0</t
41c0: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
41d0: 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 ter">1</td><td a
41e0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 lign="center"><b
41f0: 3e 74 79 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e >ty</b></td><td>
4200: 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 |</td></tr>..<tr
4210: 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 ><td>\</td><td a
4220: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c lign="center">0<
4230: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
4240: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 enter">0</td><td
4250: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
4260: 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 1</td><td>/</td>
4270: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 20 63 </tr>..<tr><td c
4280: 6f 6c 73 70 61 6e 3d 22 35 22 3e 3c 68 72 3e 3c olspan="5"><hr><
4290: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
42a0: 74 64 20 72 6f 77 73 70 61 6e 3d 22 34 22 20 76 td rowspan="4" v
42b0: 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 22 3e 53 align="middle">S
42c0: 63 61 6c 65 28 3c 62 3e 73 78 3c 2f 62 3e 2c 20 cale(<b>sx</b>,
42d0: 3c 62 3e 73 79 3c 2f 62 3e 29 3c 2f 74 64 3e 0d <b>sy</b>)</td>.
42e0: 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 .<td>/</td><td a
42f0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 lign="center"><b
4300: 3e 73 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 >sx</b></td><td
4310: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 align="center">0
4320: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
4330: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 center">0</td><t
4340: 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c d>\</td></tr>..<
4350: 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 tr><td>|</td><td
4360: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
4370: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 0</td><td align=
4380: 22 63 65 6e 74 65 72 22 3e 3c 62 3e 73 79 3c 2f "center"><b>sy</
4390: 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e b></td><td align
43a0: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e ="center">0</td>
43b0: 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d <td>|</td></tr>.
43c0: 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c .<tr><td>\</td><
43d0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
43e0: 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 ">0</td><td alig
43f0: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 n="center">0</td
4400: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
4410: 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c er">1</td><td>/<
4420: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
4430: 74 64 20 63 6f 6c 73 70 61 6e 3d 22 35 22 3e 3c td colspan="5"><
4440: 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c hr></td></tr>..<
4450: 74 72 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22 tr><td rowspan="
4460: 34 22 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 4" valign="middl
4470: 65 22 3e 52 6f 74 61 74 65 28 3c 62 3e 26 74 68 e">Rotate(<b>&th
4480: 65 74 61 3b 3c 2f 62 3e 29 3c 2f 74 64 3e 0d 0a eta;</b>)</td>..
4490: 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 6c <td>/</td><td al
44a0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e ign="center"><b>
44b0: 63 6f 73 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e cos(θ)</b>
44c0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
44d0: 63 65 6e 74 65 72 22 3e 3c 62 3e 2d 73 69 6e 28 center"><b>-sin(
44e0: 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64 θ)</b></td
44f0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
4500: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 5c 3c er">0</td><td>\<
4510: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
4520: 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 td>|</td><td ali
4530: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 73 gn="center"><b>s
4540: 69 6e 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c in(θ)</b><
4550: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
4560: 65 6e 74 65 72 22 3e 3c 62 3e 63 6f 73 28 26 74 enter"><b>cos(&t
4570: 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c heta;)</b></td><
4580: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
4590: 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 ">0</td><td>|</t
45a0: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 d></tr>..<tr><td
45b0: 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e >\</td><td align
45c0: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e ="center">0</td>
45d0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
45e0: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 r">0</td><td ali
45f0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 gn="center">1</t
4600: 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 72 d><td>/</td></tr
4610: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 2f 74 64 3e >..<tr><td></td>
4620: 3c 2f 74 72 3e 0d 0a 3c 2f 74 61 62 6c 65 3e 3c </tr>..</table><
4630: 62 72 3e 0d 0a 41 20 3c 62 3e 33 44 3c 2f 62 3e br>..A <b>3D</b>
4640: 20 61 66 66 69 6e 65 20 74 72 61 6e 73 66 6f 72 affine transfor
4650: 6d 61 74 69 6f 6e 20 72 65 71 75 69 72 65 73 20 mation requires
4660: 61 20 3c 62 3e 34 20 78 20 34 3c 2f 62 3e 20 6d a <b>4 x 4</b> m
4670: 61 74 72 69 78 2e 3c 62 72 3e 0d 0a 41 73 20 79 atrix.<br>..As y
4680: 6f 75 20 63 61 6e 20 65 61 73 69 6c 79 20 6e 6f ou can easily no
4690: 74 69 63 65 20 74 68 65 72 65 20 69 73 20 61 6e tice there is an
46a0: 20 6f 62 76 69 6f 75 73 20 64 69 72 65 63 74 20 obvious direct
46b0: 72 65 6c 61 74 69 6f 6e 20 62 65 74 77 65 65 6e relation between
46c0: 20 61 20 33 44 20 6d 61 74 72 69 78 20 61 6e 64 a 3D matrix and
46d0: 20 61 20 32 44 20 6d 61 74 72 69 78 3b 20 6e 6f a 2D matrix; no
46e0: 74 69 63 65 20 74 68 65 20 63 65 6c 6c 73 20 73 tice the cells s
46f0: 68 6f 77 69 6e 67 20 61 20 67 72 61 79 20 62 61 howing a gray ba
4700: 63 6b 67 72 6f 75 6e 64 2e 3c 62 72 3e 3c 62 72 ckground.<br><br
4710: 3e 0d 0a 3c 74 61 62 6c 65 3e 0d 0a 3c 74 72 3e >..<table>..<tr>
4720: 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22 35 22 20 <td rowspan="5"
4730: 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 22 3e valign="middle">
4740: 47 65 6e 65 72 61 6c 20 6c 61 79 6f 75 74 26 6e General layout&n
4750: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
4760: 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 </td>..<td>/</td
4770: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
4780: 65 72 22 3e 3c 62 3e 61 3c 2f 62 3e 3c 2f 74 64 er"><b>a</b></td
4790: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
47a0: 65 72 22 3e 3c 62 3e 62 3c 2f 62 3e 3c 2f 74 64 er"><b>b</b></td
47b0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
47c0: 65 72 22 20 62 67 63 6f 6c 6f 72 3d 22 23 64 30 er" bgcolor="#d0
47d0: 64 30 64 30 22 3e 3c 62 3e 63 3c 2f 62 3e 3c 2f d0d0"><b>c</b></
47e0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
47f0: 6e 74 65 72 22 3e 3c 62 3e 78 6f 66 66 3c 2f 62 nter"><b>xoff</b
4800: 3e 3c 2f 74 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e ></td><td>\</td>
4810: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c </tr>..<tr><td>|
4820: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
4830: 63 65 6e 74 65 72 22 3e 3c 62 3e 64 3c 2f 62 3e center"><b>d</b>
4840: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
4850: 63 65 6e 74 65 72 22 3e 3c 62 3e 65 3c 2f 62 3e center"><b>e</b>
4860: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
4870: 63 65 6e 74 65 72 22 20 62 67 63 6f 6c 6f 72 3d center" bgcolor=
4880: 22 23 64 30 64 30 64 30 22 3e 3c 62 3e 66 3c 2f "#d0d0d0"><b>f</
4890: 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e b></td><td align
48a0: 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 79 6f 66 ="center"><b>yof
48b0: 66 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 7c 3c f</b></td><td>|<
48c0: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
48d0: 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 td>|</td><td ali
48e0: 67 6e 3d 22 63 65 6e 74 65 72 22 20 62 67 63 6f gn="center" bgco
48f0: 6c 6f 72 3d 22 23 64 30 64 30 64 30 22 3e 3c 62 lor="#d0d0d0"><b
4900: 3e 67 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 >g</b></td><td a
4910: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 62 67 lign="center" bg
4920: 63 6f 6c 6f 72 3d 22 23 64 30 64 30 64 30 22 3e color="#d0d0d0">
4930: 3c 62 3e 68 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 <b>h</b></td><td
4940: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 20 align="center"
4950: 62 67 63 6f 6c 6f 72 3d 22 23 64 30 64 30 64 30 bgcolor="#d0d0d0
4960: 22 3e 3c 62 3e 69 3c 2f 62 3e 3c 2f 74 64 3e 3c "><b>i</b></td><
4970: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
4980: 22 20 62 67 63 6f 6c 6f 72 3d 22 23 64 30 64 30 " bgcolor="#d0d0
4990: 64 30 22 3e 3c 62 3e 7a 6f 66 66 3c 2f 62 3e 3c d0"><b>zoff</b><
49a0: 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f /td><td>|</td></
49b0: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f tr>..<tr><td>\</
49c0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
49d0: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 nter">0</td><td
49e0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 align="center">0
49f0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
4a00: 63 65 6e 74 65 72 22 20 62 67 63 6f 6c 6f 72 3d center" bgcolor=
4a10: 22 23 64 30 64 30 64 30 22 3e 30 3c 2f 74 64 3e "#d0d0d0">0</td>
4a20: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
4a30: 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f r">1</td><td>/</
4a40: 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 td></tr>..<tr><t
4a50: 64 20 63 6f 6c 73 70 61 6e 3d 22 35 22 3e 3c 68 d colspan="5"><h
4a60: 72 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 r></td></tr>..<t
4a70: 72 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22 35 r><td rowspan="5
4a80: 22 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 " valign="middle
4a90: 22 3e 49 64 65 6e 74 69 74 79 3c 2f 74 64 3e 0d ">Identity</td>.
4aa0: 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 .<td>/</td><td a
4ab0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c lign="center">1<
4ac0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
4ad0: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 enter">0</td><td
4ae0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
4af0: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 0</td><td align=
4b00: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c "center">0</td><
4b10: 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a td>\</td></tr>..
4b20: 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 <tr><td>|</td><t
4b30: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
4b40: 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e >0</td><td align
4b50: 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e ="center">1</td>
4b60: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
4b70: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 r">0</td><td ali
4b80: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 gn="center">0</t
4b90: 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 d><td>|</td></tr
4ba0: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 >..<tr><td>\</td
4bb0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
4bc0: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c er">0</td><td al
4bd0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f ign="center">0</
4be0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
4bf0: 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 nter">1</td><td
4c00: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 align="center">0
4c10: 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c </td><td>/</td><
4c20: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c /tr>..<tr><td>\<
4c30: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
4c40: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 enter">0</td><td
4c50: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
4c60: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 0</td><td align=
4c70: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c "center">0</td><
4c80: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
4c90: 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 ">1</td><td>/</t
4ca0: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 d></tr>..<tr><td
4cb0: 20 63 6f 6c 73 70 61 6e 3d 22 35 22 3e 3c 68 72 colspan="5"><hr
4cc0: 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 ></td></tr>..<tr
4cd0: 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22 35 22 ><td rowspan="5"
4ce0: 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 22 valign="middle"
4cf0: 3e 54 72 61 6e 73 6c 61 74 65 28 3c 62 3e 74 78 >Translate(<b>tx
4d00: 3c 2f 62 3e 2c 20 3c 62 3e 74 79 3c 2f 62 3e 2c </b>, <b>ty</b>,
4d10: 20 3c 62 3e 74 7a 3c 2f 62 3e 29 26 6e 62 73 70 <b>tz</b>) 
4d20: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 3c 2f 74 ; </t
4d30: 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 d>..<td>/</td><t
4d40: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
4d50: 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e >1</td><td align
4d60: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e ="center">0</td>
4d70: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
4d80: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 r">0</td><td ali
4d90: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 74 gn="center"><b>t
4da0: 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 5c 3c x</b></td><td>\<
4db0: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
4dc0: 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 td>|</td><td ali
4dd0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 gn="center">0</t
4de0: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
4df0: 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 ter">1</td><td a
4e00: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c lign="center">0<
4e10: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
4e20: 65 6e 74 65 72 22 3e 3c 62 3e 74 79 3c 2f 62 3e enter"><b>ty</b>
4e30: 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c </td><td>|</td><
4e40: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c /tr>..<tr><td>|<
4e50: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
4e60: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 enter">0</td><td
4e70: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
4e80: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 0</td><td align=
4e90: 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c "center">1</td><
4ea0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
4eb0: 22 3e 3c 62 3e 74 7a 3c 2f 62 3e 3c 2f 74 64 3e "><b>tz</b></td>
4ec0: 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d <td>|</td></tr>.
4ed0: 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c .<tr><td>\</td><
4ee0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
4ef0: 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 ">0</td><td alig
4f00: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 n="center">0</td
4f10: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
4f20: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c er">0</td><td al
4f30: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f ign="center">1</
4f40: 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 td><td>/</td></t
4f50: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 20 63 6f 6c 73 r>..<tr><td cols
4f60: 70 61 6e 3d 22 35 22 3e 3c 68 72 3e 3c 2f 74 64 pan="5"><hr></td
4f70: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 20 ></tr>..<tr><td
4f80: 72 6f 77 73 70 61 6e 3d 22 35 22 20 76 61 6c 69 rowspan="5" vali
4f90: 67 6e 3d 22 6d 69 64 64 6c 65 22 3e 53 63 61 6c gn="middle">Scal
4fa0: 65 28 3c 62 3e 73 78 3c 2f 62 3e 2c 20 3c 62 3e e(<b>sx</b>, <b>
4fb0: 73 79 3c 2f 62 3e 2c 20 3c 62 3e 73 7a 3c 2f 62 sy</b>, <b>sz</b
4fc0: 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f >)</td>..<td>/</
4fd0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
4fe0: 6e 74 65 72 22 3e 3c 62 3e 73 78 3c 2f 62 3e 3c nter"><b>sx</b><
4ff0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
5000: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 enter">0</td><td
5010: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
5020: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 0</td><td align=
5030: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c "center">0</td><
5040: 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a td>\</td></tr>..
5050: 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 <tr><td>|</td><t
5060: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
5070: 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e >0</td><td align
5080: 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 73 79 3c ="center"><b>sy<
5090: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 /b></td><td alig
50a0: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 n="center">0</td
50b0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
50c0: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c er">0</td><td>|<
50d0: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
50e0: 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 td>|</td><td ali
50f0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 gn="center">0</t
5100: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
5110: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 ter">0</td><td a
5120: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 lign="center"><b
5130: 3e 73 7a 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 >sz</b></td><td
5140: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 align="center">0
5150: 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c </td><td>|</td><
5160: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c /tr>..<tr><td>\<
5170: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
5180: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 enter">0</td><td
5190: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
51a0: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 0</td><td align=
51b0: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c "center">0</td><
51c0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
51d0: 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 ">1</td><td>/</t
51e0: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 d></tr>..<tr><td
51f0: 20 63 6f 6c 73 70 61 6e 3d 22 35 22 3e 3c 68 72 colspan="5"><hr
5200: 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 ></td></tr>..<tr
5210: 3e 3c 74 64 20 72 6f 77 73 70 61 6e 3d 22 35 22 ><td rowspan="5"
5220: 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 22 valign="middle"
5230: 3e 58 20 52 6f 6c 6c 28 3c 62 3e 26 74 68 65 74 >X Roll(<b>&thet
5240: 61 3b 3c 2f 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 a;</b>)</td>..<t
5250: 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 d>/</td><td alig
5260: 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 n="center">1</td
5270: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
5280: 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c er">0</td><td al
5290: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f ign="center">0</
52a0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
52b0: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e nter">0</td><td>
52c0: 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 \</td></tr>..<tr
52d0: 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 ><td>|</td><td a
52e0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c lign="center">0<
52f0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
5300: 65 6e 74 65 72 22 3e 3c 62 3e 63 6f 73 28 26 74 enter"><b>cos(&t
5310: 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c heta;)</b></td><
5320: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
5330: 22 3e 3c 62 3e 2d 73 69 6e 28 26 74 68 65 74 61 "><b>-sin(&theta
5340: 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 ;)</b></td><td a
5350: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c lign="center">0<
5360: 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f /td><td>|</td></
5370: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f tr>..<tr><td>|</
5380: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
5390: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 nter">0</td><td
53a0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c align="center"><
53b0: 62 3e 73 69 6e 28 26 74 68 65 74 61 3b 29 3c 2f b>sin(θ)</
53c0: 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e b></td><td align
53d0: 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 63 6f 73 ="center"><b>cos
53e0: 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 (θ)</b></t
53f0: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
5400: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c ter">0</td><td>|
5410: 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e </td></tr>..<tr>
5420: 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c <td>\</td><td al
5430: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f ign="center">0</
5440: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
5450: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 nter">0</td><td
5460: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 align="center">0
5470: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
5480: 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 center">1</td><t
5490: 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c d>/</td></tr>..<
54a0: 74 72 3e 3c 74 64 20 63 6f 6c 73 70 61 6e 3d 22 tr><td colspan="
54b0: 35 22 3e 3c 68 72 3e 3c 2f 74 64 3e 3c 2f 74 72 5"><hr></td></tr
54c0: 3e 0d 0a 3c 74 72 3e 3c 74 64 20 72 6f 77 73 70 >..<tr><td rowsp
54d0: 61 6e 3d 22 35 22 20 76 61 6c 69 67 6e 3d 22 6d an="5" valign="m
54e0: 69 64 64 6c 65 22 3e 59 20 52 6f 6c 6c 28 3c 62 iddle">Y Roll(<b
54f0: 3e 26 74 68 65 74 61 3b 3c 2f 62 3e 29 3c 2f 74 >θ</b>)</t
5500: 64 3e 0d 0a 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 d>..<td>/</td><t
5510: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
5520: 3e 3c 62 3e 63 6f 73 28 26 74 68 65 74 61 3b 29 ><b>cos(θ)
5530: 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 </b></td><td ali
5540: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 gn="center">0</t
5550: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
5560: 74 65 72 22 3e 3c 62 3e 73 69 6e 28 26 74 68 65 ter"><b>sin(&the
5570: 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 ta;)</b></td><td
5580: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
5590: 30 3c 2f 74 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 0</td><td>\</td>
55a0: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c </tr>..<tr><td>|
55b0: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
55c0: 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 center">0</td><t
55d0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
55e0: 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e >1</td><td align
55f0: 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e ="center">0</td>
5600: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
5610: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f r">0</td><td>|</
5620: 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 td></tr>..<tr><t
5630: 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 d>|</td><td alig
5640: 6e 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 2d 73 n="center"><b>-s
5650: 69 6e 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c in(θ)</b><
5660: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
5670: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 enter">0</td><td
5680: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
5690: 3c 62 3e 63 6f 73 28 26 74 68 65 74 61 3b 29 3c <b>cos(θ)<
56a0: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 /b></td><td alig
56b0: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 n="center">0</td
56c0: 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e ><td>|</td></tr>
56d0: 0d 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e ..<tr><td>\</td>
56e0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
56f0: 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 r">0</td><td ali
5700: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 gn="center">0</t
5710: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
5720: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 ter">0</td><td a
5730: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c lign="center">1<
5740: 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 2f /td><td>/</td></
5750: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 20 63 6f 6c tr>..<tr><td col
5760: 73 70 61 6e 3d 22 35 22 3e 3c 68 72 3e 3c 2f 74 span="5"><hr></t
5770: 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 d></tr>..<tr><td
5780: 20 72 6f 77 73 70 61 6e 3d 22 35 22 20 76 61 6c rowspan="5" val
5790: 69 67 6e 3d 22 6d 69 64 64 6c 65 22 3e 5a 20 52 ign="middle">Z R
57a0: 6f 6c 6c 28 3c 62 3e 26 74 68 65 74 61 3b 3c 2f oll(<b>θ</
57b0: 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 2f 3c b>)</td>..<td>/<
57c0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
57d0: 65 6e 74 65 72 22 3e 3c 62 3e 63 6f 73 28 26 74 enter"><b>cos(&t
57e0: 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c heta;)</b></td><
57f0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
5800: 22 3e 3c 62 3e 2d 73 69 6e 28 26 74 68 65 74 61 "><b>-sin(&theta
5810: 3b 29 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 ;)</b></td><td a
5820: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c lign="center">0<
5830: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
5840: 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 enter">0</td><td
5850: 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 >\</td></tr>..<t
5860: 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 r><td>|</td><td
5870: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c align="center"><
5880: 62 3e 73 69 6e 28 26 74 68 65 74 61 3b 29 3c 2f b>sin(θ)</
5890: 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e b></td><td align
58a0: 3d 22 63 65 6e 74 65 72 22 3e 3c 62 3e 63 6f 73 ="center"><b>cos
58b0: 28 26 74 68 65 74 61 3b 29 3c 2f 62 3e 3c 2f 74 (θ)</b></t
58c0: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
58d0: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 ter">0</td><td a
58e0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c lign="center">0<
58f0: 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f /td><td>|</td></
5900: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f tr>..<tr><td>|</
5910: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
5920: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 nter">0</td><td
5930: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 align="center">0
5940: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
5950: 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 center">1</td><t
5960: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
5970: 3e 30 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 >0</td><td>|</td
5980: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e ></tr>..<tr><td>
5990: 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d \</td><td align=
59a0: 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c "center">0</td><
59b0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
59c0: 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 ">0</td><td alig
59d0: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64 n="center">0</td
59e0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
59f0: 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 3e 2f 3c er">1</td><td>/<
5a00: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
5a10: 74 64 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c td></td></tr>..<
5a20: 2f 74 61 62 6c 65 3e 0d 0a 3c 62 72 3e 3c 68 72 /table>..<br><hr
5a30: 3e 0d 0a 3c 68 33 3e 61 70 70 6c 79 69 6e 67 20 >..<h3>applying
5a40: 61 6e 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 an Affine Transf
5a50: 6f 72 6d 61 74 69 6f 6e 3c 2f 68 33 3e 0d 0a 49 ormation</h3>..I
5a60: 6e 20 6f 72 64 65 72 20 74 6f 20 6d 61 74 65 72 n order to mater
5a70: 69 61 6c 69 7a 65 20 61 6e 20 61 66 66 69 6e 65 ialize an affine
5a80: 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 transformation
5a90: 77 65 20 73 69 6d 70 6c 79 20 68 61 76 65 20 74 we simply have t
5aa0: 6f 20 63 6f 6d 70 75 74 65 20 20 3c 62 3e 28 78 o compute <b>(x
5ab0: 27 2c 20 79 27 2c 20 7a 27 29 3c 2f 62 3e 20 63 ', y', z')</b> c
5ac0: 6f 6f 72 64 69 6e 61 74 65 73 20 73 74 61 72 74 oordinates start
5ad0: 69 6e 67 20 66 72 6f 6d 20 3c 62 3e 28 78 2c 20 ing from <b>(x,
5ae0: 79 2c 20 7a 29 3c 2f 62 3e 20 66 6f 72 20 65 76 y, z)</b> for ev
5af0: 65 72 79 20 70 6f 69 6e 74 20 6f 72 20 76 65 72 ery point or ver
5b00: 74 65 78 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 tex found in the
5b10: 20 69 6e 70 75 74 20 47 65 6f 6d 65 74 72 79 20 input Geometry
5b20: 61 63 63 6f 72 64 69 6e 67 6c 79 20 74 6f 20 74 accordingly to t
5b30: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6f 72 he following for
5b40: 6d 75 6c 61 65 3a 0d 0a 3c 75 6c 3e 0d 0a 3c 6c mulae:..<ul>..<l
5b50: 69 3e 3c 62 3e 78 27 20 3d 20 61 2a 78 20 2b 20 i><b>x' = a*x +
5b60: 62 2a 79 20 2b 20 63 2a 7a 20 2b 20 78 6f 66 66 b*y + c*z + xoff
5b70: 3c 2f 62 3e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 3c </b></li>..<li><
5b80: 62 3e 79 27 20 3d 20 64 2a 78 20 2b 20 65 2a 79 b>y' = d*x + e*y
5b90: 20 2b 20 66 2a 7a 20 2b 20 79 6f 66 66 3c 2f 62 + f*z + yoff</b
5ba0: 3e 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 3c 62 3e 7a ></li>..<li><b>z
5bb0: 27 20 3d 20 67 2a 78 20 2b 20 68 2a 79 20 2b 20 ' = g*x + h*y +
5bc0: 69 2a 7a 20 2b 20 7a 6f 66 66 3c 2f 62 3e 3c 2f i*z + zoff</b></
5bd0: 6c 69 3e 0d 0a 3c 2f 75 6c 3e 3c 62 72 3e 0d 0a li>..</ul><br>..
5be0: 69 6e 20 74 68 65 20 73 69 6d 70 6c 65 72 20 3c in the simpler <
5bf0: 62 3e 32 44 3c 2f 62 3e 20 63 61 73 65 20 74 68 b>2D</b> case th
5c00: 69 73 20 77 69 6c 6c 20 61 73 73 75 6d 65 20 74 is will assume t
5c10: 68 65 20 72 65 64 75 63 65 64 20 66 6f 72 6d 3a he reduced form:
5c20: 0d 0a 3c 75 6c 3e 0d 0a 3c 6c 69 3e 3c 62 3e 78 ..<ul>..<li><b>x
5c30: 27 20 3d 20 61 2a 78 20 2b 20 62 2a 79 20 2b 20 ' = a*x + b*y +
5c40: 78 6f 66 66 3c 2f 62 3e 3c 2f 6c 69 3e 0d 0a 3c xoff</b></li>..<
5c50: 6c 69 3e 3c 62 3e 79 27 20 3d 20 64 2a 78 20 2b li><b>y' = d*x +
5c60: 20 65 2a 79 20 2b 20 79 6f 66 66 3c 2f 62 3e 3c e*y + yoff</b><
5c70: 2f 6c 69 3e 0d 0a 3c 2f 75 6c 3e 3c 62 72 3e 0d /li>..</ul><br>.
5c80: 0a 41 73 20 79 6f 75 20 63 61 6e 20 6e 6f 74 69 .As you can noti
5c90: 63 65 2c 20 61 70 70 6c 79 69 6e 67 20 61 6e 20 ce, applying an
5ca0: 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d Affine Transform
5cb0: 61 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 72 ation does not r
5cc0: 65 71 75 69 72 65 73 20 63 6f 6d 70 75 74 69 6e equires computin
5cd0: 67 20 61 6e 79 20 74 72 69 67 6f 6e 6f 6d 65 74 g any trigonomet
5ce0: 72 69 63 20 66 75 6e 63 74 69 6f 6e 2e 3c 62 72 ric function.<br
5cf0: 3e 0d 0a 54 72 69 67 6f 6e 6f 6d 65 74 72 69 63 >..Trigonometric
5d00: 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 76 functions are v
5d10: 65 72 79 20 63 6f 73 74 6c 79 20 69 6e 20 63 6f ery costly in co
5d20: 6d 70 75 74 61 74 69 6f 6e 61 6c 20 74 65 72 6d mputational term
5d30: 73 2c 20 73 6f 20 61 70 70 6c 79 69 6e 67 20 61 s, so applying a
5d40: 6e 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f n Affine Transfo
5d50: 72 6d 61 74 69 6f 6e 20 69 73 20 61 6e 20 69 6e rmation is an in
5d60: 74 72 69 6e 73 69 63 61 6c 6c 79 20 65 66 66 69 trinsically effi
5d70: 63 69 65 6e 74 20 6d 65 63 68 61 6e 69 73 6d 20 cient mechanism
5d80: 62 65 63 61 75 73 65 20 73 69 6d 70 6c 79 20 64 because simply d
5d90: 65 70 65 6e 64 73 20 6f 6e 20 6d 75 6c 74 69 70 epends on multip
5da0: 6c 69 63 61 74 69 6f 6e 73 20 61 6e 64 20 61 64 lications and ad
5db0: 64 69 74 69 6f 6e 73 2e 3c 62 72 3e 0d 0a 3c 62 ditions.<br>..<b
5dc0: 72 3e 3c 68 72 3e 0d 0a 3c 68 33 3e 63 68 61 69 r><hr>..<h3>chai
5dd0: 6e 69 6e 67 20 74 77 6f 20 28 6f 72 20 65 76 65 ning two (or eve
5de0: 6e 20 6d 6f 72 65 29 20 41 66 66 69 6e 65 20 54 n more) Affine T
5df0: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 69 ransformations i
5e00: 6e 20 61 20 73 69 6e 67 6c 65 20 6f 70 65 72 61 n a single opera
5e10: 74 69 6f 6e 3c 2f 68 33 3e 0d 0a 41 66 66 69 6e tion</h3>..Affin
5e20: 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e e transformation
5e30: 20 6d 61 74 72 69 63 65 73 20 68 61 76 65 20 61 matrices have a
5e40: 6e 6f 74 68 65 72 20 61 73 74 6f 6e 69 73 68 69 nother astonishi
5e50: 6e 67 20 70 72 6f 70 65 72 74 79 2e 3c 62 72 3e ng property.<br>
5e60: 0d 0a 57 65 20 63 61 6e 20 3c 61 20 68 72 65 66 ..We can <a href
5e70: 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 ="http://en.wiki
5e80: 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4d pedia.org/wiki/M
5e90: 61 74 72 69 78 5f 6d 75 6c 74 69 70 6c 69 63 61 atrix_multiplica
5ea0: 74 69 6f 6e 22 3e 6d 75 6c 74 69 70 6c 79 3c 2f tion">multiply</
5eb0: 61 3e 20 74 77 6f 20 64 69 66 66 65 72 65 6e 74 a> two different
5ec0: 20 61 66 66 69 6e 65 20 74 72 61 6e 73 66 6f 72 affine transfor
5ed0: 6d 61 74 69 6f 6e 20 6d 61 74 72 69 63 65 73 20 mation matrices
5ee0: 74 68 75 73 20 6f 62 74 61 69 6e 69 6e 67 20 61 thus obtaining a
5ef0: 20 74 68 69 72 64 20 6d 61 74 72 69 78 2c 20 61 third matrix, a
5f00: 6e 64 20 74 68 69 73 20 6c 61 74 65 73 74 20 6f nd this latest o
5f10: 6e 63 65 20 61 70 70 6c 69 65 64 20 77 69 6c 6c nce applied will
5f20: 20 63 6f 6e 74 61 69 6e 20 62 6f 74 68 20 74 72 contain both tr
5f30: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 61 6e ansformations an
5f40: 64 20 69 6e 20 74 68 65 20 72 69 67 68 74 20 73 d in the right s
5f50: 65 71 75 65 6e 63 65 2e 3c 62 72 3e 0d 0a 54 68 equence.<br>..Th
5f60: 65 72 65 20 69 73 20 6e 6f 20 6c 69 6d 69 74 3b ere is no limit;
5f70: 20 77 65 20 63 61 6e 20 69 6e 66 69 6e 69 74 69 we can infiniti
5f80: 76 65 6c 79 20 63 68 61 69 6e 20 61 73 20 6d 61 vely chain as ma
5f90: 6e 79 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f ny transformatio
5fa0: 6e 73 20 61 73 20 72 65 71 75 69 72 65 64 2c 20 ns as required,
5fb0: 77 65 27 6c 6c 20 73 69 6d 70 6c 79 20 68 61 76 we'll simply hav
5fc0: 65 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 6d 75 e to continue mu
5fd0: 6c 74 69 70 6c 79 69 6e 67 20 61 6c 6c 20 6d 61 ltiplying all ma
5fe0: 74 72 69 63 65 73 20 6f 6e 65 20 61 66 74 65 72 trices one after
5ff0: 20 74 68 65 20 6f 74 68 65 72 20 63 61 72 65 66 the other caref
6000: 75 6c 6c 79 20 72 65 73 70 65 63 74 69 6e 67 20 ully respecting
6010: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 the appropriate
6020: 73 65 71 75 65 6e 63 65 2e 3c 62 72 3e 0d 0a 41 sequence.<br>..A
6030: 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 t the end of the
6040: 20 70 72 6f 63 65 73 73 20 77 65 27 6c 6c 20 61 process we'll a
6050: 6c 77 61 79 73 20 67 65 74 20 6a 75 73 74 20 61 lways get just a
6060: 20 73 69 6e 67 6c 65 20 61 66 66 69 6e 65 20 74 single affine t
6070: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 ransformation ma
6080: 74 72 69 78 20 66 61 69 74 68 66 75 6c 6c 79 20 trix faithfully
6090: 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 6e 79 representing any
60a0: 20 69 6e 64 69 76 69 64 75 61 6c 20 74 72 61 6e individual tran
60b0: 73 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 sformation in th
60c0: 65 20 63 68 61 69 6e 2e 0d 0a 3c 74 61 62 6c 65 e chain...<table
60d0: 20 62 67 63 6f 6c 6f 72 3d 22 23 66 66 63 30 30 bgcolor="#ffc00
60e0: 30 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 0" cellpadding="
60f0: 31 30 22 3e 3c 74 72 3e 3c 74 64 3e 0d 0a 54 68 10"><tr><td>..Th
6100: 65 20 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e e multiplication
6110: 20 62 65 74 77 65 65 6e 20 74 77 6f 20 6d 61 74 between two mat
6120: 72 69 63 65 73 20 3c 75 3e 69 73 20 6e 6f 74 20 rices <u>is not
6130: 61 20 63 6f 6d 6d 75 74 61 74 69 76 65 20 6f 70 a commutative op
6140: 65 72 61 74 69 6f 6e 3c 2f 75 3e 3a 20 74 68 65 eration</u>: the
6150: 20 72 65 6c 61 74 69 76 65 20 6f 72 64 65 72 20 relative order
6160: 6f 66 20 6f 70 65 72 61 6e 64 73 20 69 73 20 61 of operands is a
6170: 62 73 6f 6c 75 74 65 6c 79 20 72 65 6c 65 76 61 bsolutely releva
6180: 6e 74 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 nt.</td></tr></t
6190: 61 62 6c 65 3e 0d 0a 3c 68 33 3e 6d 75 6c 74 69 able>..<h3>multi
61a0: 70 6c 79 69 6e 67 20 74 77 6f 20 6d 61 74 72 69 plying two matri
61b0: 63 65 73 3c 2f 68 33 3e 0d 0a 4d 75 6c 74 69 70 ces</h3>..Multip
61c0: 6c 69 63 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 lication is not
61d0: 72 65 61 6c 6c 79 20 61 20 73 69 6d 70 6c 65 20 really a simple
61e0: 6f 70 65 72 61 74 69 6f 6e 20 77 68 65 6e 20 6d operation when m
61f0: 61 74 72 69 63 65 73 20 61 72 65 20 69 6e 76 6f atrices are invo
6200: 6c 76 65 64 20 61 6e 64 20 72 65 71 75 69 72 65 lved and require
6210: 73 20 61 20 72 61 74 68 65 72 20 63 6f 6d 70 6c s a rather compl
6220: 65 78 20 70 72 6f 63 65 64 75 72 65 3b 20 74 68 ex procedure; th
6230: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 78 61 6d e following exam
6240: 70 6c 65 20 73 68 6f 77 73 20 68 6f 77 20 74 6f ple shows how to
6250: 20 6d 75 6c 74 69 70 6c 79 20 74 77 6f 20 3c 62 multiply two <b
6260: 3e 34 20 78 20 34 3c 2f 62 3e 20 6d 61 74 72 69 >4 x 4</b> matri
6270: 63 65 73 2e 3c 62 72 3e 0d 0a 3c 74 61 62 6c 65 ces.<br>..<table
6280: 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22 34 22 cellspacing="4"
6290: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 34 22 cellpadding="4"
62a0: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 0d 0a 3c 74 61 >..<tr><td>..<ta
62b0: 62 6c 65 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 2f 3c ble>..<tr><td>/<
62c0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
62d0: 65 6e 74 65 72 22 3e 61 3c 73 75 62 3e 31 31 3c enter">a<sub>11<
62e0: 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c /sub></td><td al
62f0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c 73 ign="center">a<s
6300: 75 62 3e 31 32 3c 2f 73 75 62 3e 3c 2f 74 64 3e ub>12</sub></td>
6310: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
6320: 72 22 3e 61 3c 73 75 62 3e 31 33 3c 2f 73 75 62 r">a<sub>13</sub
6330: 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d ></td><td align=
6340: 22 63 65 6e 74 65 72 22 3e 61 3c 73 75 62 3e 31 "center">a<sub>1
6350: 34 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 3e 4</sub></td><td>
6360: 5c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 \</td></tr>..<tr
6370: 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 ><td>|</td><td a
6380: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c lign="center">a<
6390: 73 75 62 3e 32 31 3c 2f 73 75 62 3e 3c 2f 74 64 sub>21</sub></td
63a0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
63b0: 65 72 22 3e 61 3c 73 75 62 3e 32 32 3c 2f 73 75 er">a<sub>22</su
63c0: 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e b></td><td align
63d0: 3d 22 63 65 6e 74 65 72 22 3e 61 3c 73 75 62 3e ="center">a<sub>
63e0: 32 33 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 23</sub></td><td
63f0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
6400: 61 3c 73 75 62 3e 32 34 3c 2f 73 75 62 3e 3c 2f a<sub>24</sub></
6410: 74 64 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 td><td>|</td></t
6420: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 r>..<tr><td>|</t
6430: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
6440: 74 65 72 22 3e 61 3c 73 75 62 3e 33 31 3c 2f 73 ter">a<sub>31</s
6450: 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 ub></td><td alig
6460: 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c 73 75 62 n="center">a<sub
6470: 3e 33 32 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 >32</sub></td><t
6480: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
6490: 3e 61 3c 73 75 62 3e 33 33 3c 2f 73 75 62 3e 3c >a<sub>33</sub><
64a0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
64b0: 65 6e 74 65 72 22 3e 61 3c 73 75 62 3e 33 34 3c enter">a<sub>34<
64c0: 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 3e 7c 3c /sub></td><td>|<
64d0: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
64e0: 74 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 td>\</td><td ali
64f0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c 73 75 gn="center">a<su
6500: 62 3e 34 31 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c b>41</sub></td><
6510: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
6520: 22 3e 61 3c 73 75 62 3e 34 32 3c 2f 73 75 62 3e ">a<sub>42</sub>
6530: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
6540: 63 65 6e 74 65 72 22 3e 61 3c 73 75 62 3e 34 33 center">a<sub>43
6550: 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 </sub></td><td a
6560: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 61 3c lign="center">a<
6570: 73 75 62 3e 34 34 3c 2f 73 75 62 3e 3c 2f 74 64 sub>44</sub></td
6580: 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 2f 74 72 3e ><td>/</td></tr>
6590: 0d 0a 3c 2f 74 61 62 6c 65 3e 0d 0a 3c 2f 74 64 ..</table>..</td
65a0: 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 6d 69 64 ><td valign="mid
65b0: 64 6c 65 22 3e 2a 3c 2f 74 64 3e 0d 0a 3c 74 64 dle">*</td>..<td
65c0: 3e 0d 0a 3c 74 61 62 6c 65 3e 0d 0a 3c 74 72 3e >..<table>..<tr>
65d0: 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 6c <td>/</td><td al
65e0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 62 3c 73 ign="center">b<s
65f0: 75 62 3e 31 31 3c 2f 73 75 62 3e 3c 2f 74 64 3e ub>11</sub></td>
6600: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
6610: 72 22 3e 62 3c 73 75 62 3e 31 32 3c 2f 73 75 62 r">b<sub>12</sub
6620: 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d ></td><td align=
6630: 22 63 65 6e 74 65 72 22 3e 62 3c 73 75 62 3e 31 "center">b<sub>1
6640: 33 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 3</sub></td><td
6650: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 62 align="center">b
6660: 3c 73 75 62 3e 31 34 3c 2f 73 75 62 3e 3c 2f 74 <sub>14</sub></t
6670: 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 72 d><td>\</td></tr
6680: 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 >..<tr><td>|</td
6690: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
66a0: 65 72 22 3e 62 3c 73 75 62 3e 32 31 3c 2f 73 75 er">b<sub>21</su
66b0: 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e b></td><td align
66c0: 3d 22 63 65 6e 74 65 72 22 3e 62 3c 73 75 62 3e ="center">b<sub>
66d0: 32 32 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 22</sub></td><td
66e0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
66f0: 62 3c 73 75 62 3e 32 33 3c 2f 73 75 62 3e 3c 2f b<sub>23</sub></
6700: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
6710: 6e 74 65 72 22 3e 62 3c 73 75 62 3e 32 34 3c 2f nter">b<sub>24</
6720: 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f sub></td><td>|</
6730: 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 td></tr>..<tr><t
6740: 64 3e 7c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 d>|</td><td alig
6750: 6e 3d 22 63 65 6e 74 65 72 22 3e 62 3c 73 75 62 n="center">b<sub
6760: 3e 33 31 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 >31</sub></td><t
6770: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 d align="center"
6780: 3e 62 3c 73 75 62 3e 33 32 3c 2f 73 75 62 3e 3c >b<sub>32</sub><
6790: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
67a0: 65 6e 74 65 72 22 3e 62 3c 73 75 62 3e 33 33 3c enter">b<sub>33<
67b0: 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c /sub></td><td al
67c0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 62 3c 73 ign="center">b<s
67d0: 75 62 3e 33 34 3c 2f 73 75 62 3e 3c 2f 74 64 3e ub>34</sub></td>
67e0: 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d <td>|</td></tr>.
67f0: 0a 3c 74 72 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c .<tr><td>\</td><
6800: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 td align="center
6810: 22 3e 62 3c 73 75 62 3e 34 31 3c 2f 73 75 62 3e ">b<sub>41</sub>
6820: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 </td><td align="
6830: 63 65 6e 74 65 72 22 3e 62 3c 73 75 62 3e 34 32 center">b<sub>42
6840: 3c 2f 73 75 62 3e 3c 2f 74 64 3e 3c 74 64 20 61 </sub></td><td a
6850: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 62 3c lign="center">b<
6860: 73 75 62 3e 34 33 3c 2f 73 75 62 3e 3c 2f 74 64 sub>43</sub></td
6870: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 ><td align="cent
6880: 65 72 22 3e 62 3c 73 75 62 3e 34 34 3c 2f 73 75 er">b<sub>44</su
6890: 62 3e 3c 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64 b></td><td>/</td
68a0: 3e 3c 2f 74 72 3e 0d 0a 3c 2f 74 61 62 6c 65 3e ></tr>..</table>
68b0: 0d 0a 3c 2f 74 64 3e 0d 0a 3c 2f 74 64 3e 3c 74 ..</td>..</td><t
68c0: 64 20 76 61 6c 69 67 6e 3d 22 6d 69 64 64 6c 65 d valign="middle
68d0: 22 3e 3d 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 0d 0a ">=</td>..<td>..
68e0: 3c 74 61 62 6c 65 3e 0d 0a 3c 74 72 3e 3c 74 64 <table>..<tr><td
68f0: 3e 2f 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e >/</td><td align
6900: 3d 22 63 65 6e 74 65 72 22 3e 0d 0a 28 61 3c 73 ="center">..(a<s
6910: 75 62 3e 31 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 ub>11</sub>*b<su
6920: 62 3e 31 31 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 b>11</sub> + ..a
6930: 3c 73 75 62 3e 31 32 3c 2f 73 75 62 3e 2a 62 3c <sub>12</sub>*b<
6940: 73 75 62 3e 32 31 3c 2f 73 75 62 3e 20 2b 20 0d sub>21</sub> + .
6950: 0a 61 3c 73 75 62 3e 31 33 3c 2f 73 75 62 3e 2a .a<sub>13</sub>*
6960: 62 3c 73 75 62 3e 33 31 3c 2f 73 75 62 3e 20 2b b<sub>31</sub> +
6970: 20 0d 0a 61 3c 73 75 62 3e 31 34 3c 2f 73 75 62 ..a<sub>14</sub
6980: 3e 2a 62 3c 73 75 62 3e 34 31 3c 2f 73 75 62 3e >*b<sub>41</sub>
6990: 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c 73 )</td>..<td>(a<s
69a0: 75 62 3e 31 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 ub>11</sub>*b<su
69b0: 62 3e 31 32 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 b>12</sub> + ..a
69c0: 3c 73 75 62 3e 31 32 3c 2f 73 75 62 3e 2a 62 3c <sub>12</sub>*b<
69d0: 73 75 62 3e 32 32 3c 2f 73 75 62 3e 20 2b 20 0d sub>22</sub> + .
69e0: 0a 61 3c 73 75 62 3e 31 33 3c 2f 73 75 62 3e 2a .a<sub>13</sub>*
69f0: 62 3c 73 75 62 3e 33 32 3c 2f 73 75 62 3e 20 2b b<sub>32</sub> +
6a00: 0d 0a 61 3c 73 75 62 3e 31 34 3c 2f 73 75 62 3e ..a<sub>14</sub>
6a10: 2a 62 3c 73 75 62 3e 34 32 3c 2f 73 75 62 3e 29 *b<sub>42</sub>)
6a20: 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c 73 75 </td>..<td>(a<su
6a30: 62 3e 31 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 b>11</sub>*b<sub
6a40: 3e 31 33 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c >13</sub> + ..a<
6a50: 73 75 62 3e 31 32 3c 2f 73 75 62 3e 2a 62 3c 73 sub>12</sub>*b<s
6a60: 75 62 3e 32 33 3c 2f 73 75 62 3e 20 2b 20 0d 0a ub>23</sub> + ..
6a70: 61 3c 73 75 62 3e 31 33 3c 2f 73 75 62 3e 2a 62 a<sub>13</sub>*b
6a80: 3c 73 75 62 3e 33 33 3c 2f 73 75 62 3e 20 2b 0d <sub>33</sub> +.
6a90: 0a 61 3c 73 75 62 3e 31 34 3c 2f 73 75 62 3e 2a .a<sub>14</sub>*
6aa0: 62 3c 73 75 62 3e 34 33 3c 2f 73 75 62 3e 29 3c b<sub>43</sub>)<
6ab0: 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c 73 75 62 /td>..<td>(a<sub
6ac0: 3e 31 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e >11</sub>*b<sub>
6ad0: 31 34 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 14</sub> + ..a<s
6ae0: 75 62 3e 31 32 3c 2f 73 75 62 3e 2a 62 3c 73 75 ub>12</sub>*b<su
6af0: 62 3e 32 34 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 b>24</sub> + ..a
6b00: 3c 73 75 62 3e 31 33 3c 2f 73 75 62 3e 2a 62 3c <sub>13</sub>*b<
6b10: 73 75 62 3e 33 34 3c 2f 73 75 62 3e 20 2b 0d 0a sub>34</sub> +..
6b20: 61 3c 73 75 62 3e 31 34 3c 2f 73 75 62 3e 2a 62 a<sub>14</sub>*b
6b30: 3c 73 75 62 3e 34 34 3c 2f 73 75 62 3e 29 3c 2f <sub>44</sub>)</
6b40: 74 64 3e 3c 74 64 3e 5c 3c 2f 74 64 3e 3c 2f 74 td><td>\</td></t
6b50: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 7c 3c 2f 74 r>..<tr><td>|</t
6b60: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
6b70: 74 65 72 22 3e 0d 0a 28 61 3c 73 75 62 3e 32 31 ter">..(a<sub>21
6b80: 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 31 31 3c </sub>*b<sub>11<
6b90: 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e /sub> + ..a<sub>
6ba0: 32 32 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 32 22</sub>*b<sub>2
6bb0: 31 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 1</sub> + ..a<su
6bc0: 62 3e 32 33 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 b>23</sub>*b<sub
6bd0: 3e 33 31 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c >31</sub> + ..a<
6be0: 73 75 62 3e 32 34 3c 2f 73 75 62 3e 2a 62 3c 73 sub>24</sub>*b<s
6bf0: 75 62 3e 34 31 3c 2f 73 75 62 3e 29 3c 2f 74 64 ub>41</sub>)</td
6c00: 3e 0d 0a 3c 74 64 3e 28 61 3c 73 75 62 3e 32 31 >..<td>(a<sub>21
6c10: 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 31 32 3c </sub>*b<sub>12<
6c20: 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e /sub> + ..a<sub>
6c30: 32 32 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 32 22</sub>*b<sub>2
6c40: 32 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 2</sub> + ..a<su
6c50: 62 3e 32 33 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 b>23</sub>*b<sub
6c60: 3e 33 32 3c 2f 73 75 62 3e 20 2b 0d 0a 61 3c 73 >32</sub> +..a<s
6c70: 75 62 3e 32 34 3c 2f 73 75 62 3e 2a 62 3c 73 75 ub>24</sub>*b<su
6c80: 62 3e 34 32 3c 2f 73 75 62 3e 29 3c 2f 74 64 3e b>42</sub>)</td>
6c90: 0d 0a 3c 74 64 3e 28 61 3c 73 75 62 3e 32 31 3c ..<td>(a<sub>21<
6ca0: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 31 33 3c 2f /sub>*b<sub>13</
6cb0: 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 32 sub> + ..a<sub>2
6cc0: 32 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 32 33 2</sub>*b<sub>23
6cd0: 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 </sub> + ..a<sub
6ce0: 3e 32 33 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e >23</sub>*b<sub>
6cf0: 33 33 3c 2f 73 75 62 3e 20 2b 0d 0a 61 3c 73 75 33</sub> +..a<su
6d00: 62 3e 32 34 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 b>24</sub>*b<sub
6d10: 3e 34 33 3c 2f 73 75 62 3e 29 3c 2f 74 64 3e 0d >43</sub>)</td>.
6d20: 0a 3c 74 64 3e 28 61 3c 73 75 62 3e 32 31 3c 2f .<td>(a<sub>21</
6d30: 73 75 62 3e 2a 62 3c 73 75 62 3e 31 34 3c 2f 73 sub>*b<sub>14</s
6d40: 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 32 32 ub> + ..a<sub>22
6d50: 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 32 34 3c </sub>*b<sub>24<
6d60: 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e /sub> + ..a<sub>
6d70: 32 33 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 33 23</sub>*b<sub>3
6d80: 34 3c 2f 73 75 62 3e 20 2b 0d 0a 61 3c 73 75 62 4</sub> +..a<sub
6d90: 3e 32 34 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e >24</sub>*b<sub>
6da0: 34 34 3c 2f 73 75 62 3e 29 3c 2f 74 64 3e 3c 74 44</sub>)</td><t
6db0: 64 3e 7c 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c d>|</td></tr>..<
6dc0: 74 72 3e 3c 74 64 3e 7c 3c 2f 74 64 3e 3c 74 64 tr><td>|</td><td
6dd0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
6de0: 0d 0a 28 61 3c 73 75 62 3e 33 31 3c 2f 73 75 62 ..(a<sub>31</sub
6df0: 3e 2a 62 3c 73 75 62 3e 31 31 3c 2f 73 75 62 3e >*b<sub>11</sub>
6e00: 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 32 3c 2f 73 + ..a<sub>32</s
6e10: 75 62 3e 2a 62 3c 73 75 62 3e 32 31 3c 2f 73 75 ub>*b<sub>21</su
6e20: 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 33 3c b> + ..a<sub>33<
6e30: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 33 31 3c 2f /sub>*b<sub>31</
6e40: 73 75 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 sub> + ..a<sub>3
6e50: 34 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 34 31 4</sub>*b<sub>41
6e60: 3c 2f 73 75 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 </sub>)</td>..<t
6e70: 64 3e 28 61 3c 73 75 62 3e 33 31 3c 2f 73 75 62 d>(a<sub>31</sub
6e80: 3e 2a 62 3c 73 75 62 3e 31 32 3c 2f 73 75 62 3e >*b<sub>12</sub>
6e90: 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 32 3c 2f 73 + ..a<sub>32</s
6ea0: 75 62 3e 2a 62 3c 73 75 62 3e 32 32 3c 2f 73 75 ub>*b<sub>22</su
6eb0: 62 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 33 3c b> + ..a<sub>33<
6ec0: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 33 32 3c 2f /sub>*b<sub>32</
6ed0: 73 75 62 3e 20 2b 0d 0a 61 3c 73 75 62 3e 33 34 sub> +..a<sub>34
6ee0: 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 34 32 3c </sub>*b<sub>42<
6ef0: 2f 73 75 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 /sub>)</td>..<td
6f00: 3e 28 61 3c 73 75 62 3e 33 31 3c 2f 73 75 62 3e >(a<sub>31</sub>
6f10: 2a 62 3c 73 75 62 3e 31 33 3c 2f 73 75 62 3e 20 *b<sub>13</sub>
6f20: 2b 20 0d 0a 61 3c 73 75 62 3e 33 32 3c 2f 73 75 + ..a<sub>32</su
6f30: 62 3e 2a 62 3c 73 75 62 3e 32 33 3c 2f 73 75 62 b>*b<sub>23</sub
6f40: 3e 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 33 3c 2f > + ..a<sub>33</
6f50: 73 75 62 3e 2a 62 3c 73 75 62 3e 33 33 3c 2f 73 sub>*b<sub>33</s
6f60: 75 62 3e 20 2b 0d 0a 61 3c 73 75 62 3e 33 34 3c ub> +..a<sub>34<
6f70: 2f 73 75 62 3e 2a 62 3c 73 75 62 3e 34 33 3c 2f /sub>*b<sub>43</
6f80: 73 75 62 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e sub>)</td>..<td>
6f90: 28 61 3c 73 75 62 3e 33 31 3c 2f 73 75 62 3e 2a (a<sub>31</sub>*
6fa0: 62 3c 73 75 62 3e 31 34 3c 2f 73 75 62 3e 20 2b b<sub>14</sub> +
6fb0: 20 0d 0a 61 3c 73 75 62 3e 33 32 3c 2f 73 75 62 ..a<sub>32</sub
6fc0: 3e 2a 62 3c 73 75 62 3e 32 34 3c 2f 73 75 62 3e >*b<sub>24</sub>
6fd0: 20 2b 20 0d 0a 61 3c 73 75 62 3e 33 33 3c 2f 73 + ..a<sub>33</s
6fe0: 75 62 3e 2a 62 3c 73 75 62 3e 33 34 3c 2f 73 75 ub>*b<sub>34</su
6ff0: 62 3e 20 2b 0d 0a 61 3c 73 75 62 3e 33 34 3c 2f b> +..a<sub>34</
7000: 73 75 62 3e 2a 62 3c 73 75 62 3e 34 34 3c 2f 73 sub>*b<sub>44</s
7010: 75 62 3e 29 3c 2f 74 64 3e 3c 74 64 3e 7c 3c 2f ub>)</td><td>|</
7020: 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 td></tr>..<tr><t
7030: 64 3e 5c 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 d>\</td><td alig
7040: 6e 3d 22 63 65 6e 74 65 72 22 3e 0d 0a 28 61 3c n="center">..(a<
7050: 73 75 62 3e 34 31 3c 2f 73 75 62 3e 2a 62 3c 73 sub>41</sub>*b<s
7060: 75 62 3e 31 31 3c 2f 73 75 62 3e 20 2b 20 0d 0a ub>11</sub> + ..
7070: 61 3c 73 75 62 3e 34 32 3c 2f 73 75 62 3e 2a 62 a<sub>42</sub>*b
7080: 3c 73 75 62 3e 32 31 3c 2f 73 75 62 3e 20 2b 20 <sub>21</sub> +
7090: 0d 0a 61 3c 73 75 62 3e 34 33 3c 2f 73 75 62 3e ..a<sub>43</sub>
70a0: 2a 62 3c 73 75 62 3e 33 31 3c 2f 73 75 62 3e 20 *b<sub>31</sub>
70b0: 2b 20 0d 0a 61 3c 73 75 62 3e 34 34 3c 2f 73 75 + ..a<sub>44</su
70c0: 62 3e 2a 62 3c 73 75 62 3e 34 31 3c 2f 73 75 62 b>*b<sub>41</sub
70d0: 3e 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c >)</td>..<td>(a<
70e0: 73 75 62 3e 34 31 3c 2f 73 75 62 3e 2a 62 3c 73 sub>41</sub>*b<s
70f0: 75 62 3e 31 32 3c 2f 73 75 62 3e 20 2b 20 0d 0a ub>12</sub> + ..
7100: 61 3c 73 75 62 3e 34 32 3c 2f 73 75 62 3e 2a 62 a<sub>42</sub>*b
7110: 3c 73 75 62 3e 32 32 3c 2f 73 75 62 3e 20 2b 20 <sub>22</sub> +
7120: 0d 0a 61 3c 73 75 62 3e 34 33 3c 2f 73 75 62 3e ..a<sub>43</sub>
7130: 2a 62 3c 73 75 62 3e 33 32 3c 2f 73 75 62 3e 20 *b<sub>32</sub>
7140: 2b 0d 0a 61 3c 73 75 62 3e 34 34 3c 2f 73 75 62 +..a<sub>44</sub
7150: 3e 2a 62 3c 73 75 62 3e 34 32 3c 2f 73 75 62 3e >*b<sub>42</sub>
7160: 29 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c 73 )</td>..<td>(a<s
7170: 75 62 3e 34 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 ub>41</sub>*b<su
7180: 62 3e 31 33 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 b>13</sub> + ..a
7190: 3c 73 75 62 3e 34 32 3c 2f 73 75 62 3e 2a 62 3c <sub>42</sub>*b<
71a0: 73 75 62 3e 32 33 3c 2f 73 75 62 3e 20 2b 20 0d sub>23</sub> + .
71b0: 0a 61 3c 73 75 62 3e 34 33 3c 2f 73 75 62 3e 2a .a<sub>43</sub>*
71c0: 62 3c 73 75 62 3e 33 33 3c 2f 73 75 62 3e 20 2b b<sub>33</sub> +
71d0: 0d 0a 61 3c 73 75 62 3e 34 34 3c 2f 73 75 62 3e ..a<sub>44</sub>
71e0: 2a 62 3c 73 75 62 3e 34 33 3c 2f 73 75 62 3e 29 *b<sub>43</sub>)
71f0: 3c 2f 74 64 3e 0d 0a 3c 74 64 3e 28 61 3c 73 75 </td>..<td>(a<su
7200: 62 3e 34 31 3c 2f 73 75 62 3e 2a 62 3c 73 75 62 b>41</sub>*b<sub
7210: 3e 31 34 3c 2f 73 75 62 3e 20 2b 20 0d 0a 61 3c >14</sub> + ..a<
7220: 73 75 62 3e 34 32 3c 2f 73 75 62 3e 2a 62 3c 73 sub>42</sub>*b<s
7230: 75 62 3e 32 34 3c 2f 73 75 62 3e 20 2b 20 0d 0a ub>24</sub> + ..
7240: 61 3c 73 75 62 3e 34 33 3c 2f 73 75 62 3e 2a 62 a<sub>43</sub>*b
7250: 3c 73 75 62 3e 33 34 3c 2f 73 75 62 3e 20 2b 0d <sub>34</sub> +.
7260: 0a 61 3c 73 75 62 3e 34 34 3c 2f 73 75 62 3e 2a .a<sub>44</sub>*
7270: 62 3c 73 75 62 3e 34 34 3c 2f 73 75 62 3e 29 3c b<sub>44</sub>)<
7280: 2f 74 64 3e 3c 74 64 3e 2f 3c 2f 74 64 3e 3c 2f /td><td>/</td></
7290: 74 72 3e 0d 0a 3c 2f 74 61 62 6c 65 3e 0d 0a 3c tr>..</table>..<
72a0: 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 /td></tr></table
72b0: 3e 0d 0a 3c 68 33 3e 69 64 65 6e 74 69 74 79 20 >..<h3>identity
72c0: 6d 61 74 72 69 78 3c 2f 68 33 3e 0d 0a 41 6e 20 matrix</h3>..An
72d0: 69 64 65 6e 74 69 74 79 20 6d 61 74 72 69 78 20 identity matrix
72e0: 73 69 6d 70 6c 79 20 63 6f 72 72 65 73 70 6f 6e simply correspon
72f0: 64 73 20 74 6f 20 61 6e 20 61 66 66 69 6e 65 20 ds to an affine
7300: 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6c transformation l
7310: 61 63 6b 69 6e 67 20 61 6e 79 20 61 63 74 75 61 acking any actua
7320: 6c 20 65 66 66 65 63 74 3a 20 61 74 20 74 68 65 l effect: at the
7330: 20 65 6e 64 20 6f 66 20 74 68 65 20 70 72 6f 63 end of the proc
7340: 65 73 73 20 74 68 65 20 74 72 61 6e 73 66 6f 72 ess the transfor
7350: 6d 65 64 20 67 65 6f 6d 65 74 72 79 20 77 69 6c med geometry wil
7360: 6c 20 62 65 20 65 78 61 63 74 6c 79 20 74 68 65 l be exactly the
7370: 20 73 61 6d 65 20 61 73 20 62 65 66 6f 72 65 2e same as before.
7380: 3c 62 72 3e 0d 0a 4d 6f 72 65 6f 76 65 72 20 61 <br>..Moreover a
7390: 6e 20 69 64 65 6e 74 69 74 79 20 6d 61 74 72 69 n identity matri
73a0: 78 20 70 6c 61 79 73 20 61 20 73 70 65 63 69 61 x plays a specia
73b0: 6c 20 72 6f 6c 65 20 69 6e 20 6d 75 6c 74 69 70 l role in multip
73c0: 6c 69 63 61 74 69 6f 6e 3a 20 74 68 65 20 72 65 lication: the re
73d0: 73 75 6c 74 69 6e 67 20 6d 61 74 72 69 78 20 77 sulting matrix w
73e0: 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 65 78 ill always be ex
73f0: 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 6f actly the same o
7400: 66 20 74 68 65 20 6f 74 68 65 72 20 6d 61 74 72 f the other matr
7410: 69 78 2e 3c 62 72 3e 0d 0a 28 3c 69 3e 69 74 27 ix.<br>..(<i>it'
7420: 73 20 6d 6f 72 65 20 6f 72 20 6c 65 73 73 20 74 s more or less t
7430: 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20 6f 66 he equivalent of
7440: 20 6d 75 6c 74 69 70 6c 79 69 6e 67 20 65 2e 67 multiplying e.g
7450: 2e 20 3c 62 3e 38 2a 31 3d 38 3c 2f 62 3e 20 69 . <b>8*1=8</b> i
7460: 6e 20 61 6e 20 6f 72 64 69 6e 61 72 79 20 73 63 n an ordinary sc
7470: 61 6c 61 72 20 6d 75 6c 74 69 70 6c 69 63 61 74 alar multiplicat
7480: 69 6f 6e 3c 2f 69 3e 29 2e 3c 62 72 3e 3c 62 72 ion</i>).<br><br
7490: 3e 0d 0a 3c 68 72 3e 0d 0a 3c 68 33 3e 42 6f 72 >..<hr>..<h3>Bor
74a0: 69 6e 67 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e ing SQL function
74b0: 73 3a 20 61 20 66 6f 72 6d 61 6c 20 65 78 70 6c s: a formal expl
74c0: 61 6e 61 74 69 6f 6e 3c 2f 68 33 3e 0d 0a 3c 74 anation</h3>..<t
74d0: 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 31 22 20 able border="1"
74e0: 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22 34 22 20 cellspacing="4"
74f0: 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 38 22 20 cellpadding="8"
7500: 62 67 63 6f 6c 6f 72 3d 22 23 66 66 66 30 64 30 bgcolor="#fff0d0
7510: 22 3e 0d 0a 3c 74 72 3e 3c 74 68 20 62 67 63 6f ">..<tr><th bgco
7520: 6c 6f 72 3d 22 23 43 33 42 30 39 31 22 3e 53 51 lor="#C3B091">SQ
7530: 4c 20 46 75 6e 63 74 69 6f 6e 3c 2f 74 68 3e 3c L Function</th><
7540: 74 68 20 62 67 63 6f 6c 6f 72 3d 22 23 43 33 42 th bgcolor="#C3B
7550: 30 39 31 22 3e 44 65 73 63 72 69 70 74 69 6f 6e 091">Description
7560: 3c 2f 74 68 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e </th></tr>..<tr>
7570: 3c 74 64 3e 3c 62 3e 41 54 4d 5f 54 72 61 6e 73 <td><b>ATM_Trans
7580: 66 6f 72 6d 20 28 20 42 4c 4f 42 20 47 65 6f 6d form ( BLOB Geom
7590: 65 74 72 79 20 2c 20 42 4c 4f 42 20 41 54 2d 6d etry , BLOB AT-m
75a0: 61 74 72 69 78 20 29 20 3a 20 42 4c 4f 42 20 47 atrix ) : BLOB G
75b0: 65 6f 6d 65 74 72 79 3c 2f 74 64 3e 3c 74 64 3e eometry</td><td>
75c0: 57 69 6c 6c 20 72 65 74 75 72 6e 20 61 20 6e 65 Will return a ne
75d0: 77 20 47 65 6f 6d 65 74 72 79 20 62 79 20 61 70 w Geometry by ap
75e0: 70 6c 79 69 6e 67 20 61 6e 20 41 66 66 69 6e 65 plying an Affine
75f0: 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 Transformation
7600: 74 6f 20 74 68 65 20 69 6e 70 75 74 20 47 65 6f to the input Geo
7610: 6d 65 74 72 79 2e 3c 62 72 3e 0d 0a 54 68 65 20 metry.<br>..The
7620: 6f 75 74 70 75 74 20 47 65 6f 6d 65 74 72 79 20 output Geometry
7630: 77 69 6c 6c 20 70 72 65 73 65 72 76 65 20 74 68 will preserve th
7640: 65 20 6f 72 69 67 69 6e 61 6c 20 53 52 49 44 2c e original SRID,
7650: 20 64 69 6d 65 6e 73 69 6f 6e 73 20 61 6e 64 20 dimensions and
7660: 74 79 70 65 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 type.<br>..NULL
7670: 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 will be returned
7680: 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 67 75 on invalid argu
7690: 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f 74 72 3e ments.</td></tr>
76a0: 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d ..<tr><td><b>ATM
76b0: 5f 49 73 56 61 6c 69 64 20 28 20 42 4c 4f 42 20 _IsValid ( BLOB
76c0: 41 54 2d 6d 61 74 72 69 78 20 29 20 3a 20 42 4f AT-matrix ) : BO
76d0: 4f 4c 45 41 4e 3c 2f 74 64 3e 3c 74 64 3e 57 69 OLEAN</td><td>Wi
76e0: 6c 6c 20 63 68 65 63 6b 20 69 66 20 61 20 42 4c ll check if a BL
76f0: 4f 42 20 64 6f 20 72 65 61 6c 6c 79 20 63 6f 72 OB do really cor
7700: 72 65 73 70 6f 6e 64 20 74 6f 20 61 6e 20 65 6e respond to an en
7710: 63 6f 64 65 64 20 41 66 66 69 6e 65 20 54 72 61 coded Affine Tra
7720: 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 72 nsformation Matr
7730: 69 78 20 74 68 65 6e 20 72 65 74 75 72 6e 69 6e ix then returnin
7740: 67 20 54 52 55 45 20 6f 72 20 46 41 4c 53 45 2e g TRUE or FALSE.
7750: 3c 62 72 3e 0d 0a 2d 31 20 77 69 6c 6c 20 62 65 <br>..-1 will be
7760: 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 returned if the
7770: 20 61 72 67 75 6d 65 6e 74 20 69 73 6e 27 74 20 argument isn't
7780: 6f 66 20 74 68 65 20 42 4c 4f 42 20 74 79 70 65 of the BLOB type
7790: 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 .</td></tr>..<tr
77a0: 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 41 73 54 65 ><td><b>ATM_AsTe
77b0: 78 74 20 28 20 42 4c 4f 42 20 41 54 2d 6d 61 74 xt ( BLOB AT-mat
77c0: 72 69 78 20 29 20 3a 20 54 45 58 54 3c 2f 74 64 rix ) : TEXT</td
77d0: 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 75 72 6e ><td>Will return
77e0: 20 61 20 74 65 78 74 20 73 65 72 69 61 6c 69 7a a text serializ
77f0: 65 64 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f ed representatio
7800: 6e 20 6f 66 20 74 68 65 20 4d 61 74 72 69 78 2e n of the Matrix.
7810: 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 77 69 6c 6c 20 <br>..NULL will
7820: 62 65 20 72 65 74 75 72 6e 65 64 20 6f 6e 20 69 be returned on i
7830: 6e 76 61 6c 69 64 20 61 72 67 75 6d 65 6e 74 73 nvalid arguments
7840: 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 .</td></tr>..<tr
7850: 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 4d 75 6c 74 ><td><b>ATM_Mult
7860: 69 70 6c 79 20 28 20 42 4c 4f 42 20 41 54 2d 6d iply ( BLOB AT-m
7870: 61 74 72 69 78 2d 41 20 2c 20 42 4c 4f 42 20 41 atrix-A , BLOB A
7880: 54 2d 6d 61 74 72 69 78 2d 42 20 29 20 3a 20 42 T-matrix-B ) : B
7890: 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 74 LOB AT-matrix</t
78a0: 64 3e 3c 74 64 3e 57 69 6c 6c 20 6d 75 6c 74 69 d><td>Will multi
78b0: 70 6c 79 20 4d 61 74 72 69 78 2d 42 20 62 79 20 ply Matrix-B by
78c0: 4d 61 74 72 69 78 2d 41 20 74 68 65 6e 20 72 65 Matrix-A then re
78d0: 74 75 72 6e 69 6e 67 20 74 68 65 20 72 65 73 75 turning the resu
78e0: 6c 74 69 6e 67 20 4d 61 74 72 69 78 2e 3c 62 72 lting Matrix.<br
78f0: 3e 0d 0a 4e 55 4c 4c 20 77 69 6c 6c 20 62 65 20 >..NULL will be
7900: 72 65 74 75 72 6e 65 64 20 6f 6e 20 69 6e 76 61 returned on inva
7910: 6c 69 64 20 61 72 67 75 6d 65 6e 74 73 2e 3c 68 lid arguments.<h
7920: 72 3e 0d 0a 3c 75 3e 4e 6f 74 65 3c 2f 75 3e 3a r>..<u>Note</u>:
7930: 20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 the transformat
7940: 69 6f 6e 20 64 65 66 69 6e 65 64 20 62 79 20 4d ion defined by M
7950: 61 74 72 69 78 2d 41 20 28 6c 65 66 74 20 6f 70 atrix-A (left op
7960: 65 72 61 6e 64 29 20 77 69 6c 6c 20 61 6c 77 61 erand) will alwa
7970: 79 73 20 68 61 70 70 65 6e 20 3c 75 3e 61 66 74 ys happen <u>aft
7980: 65 72 3c 2f 75 3e 20 61 70 70 6c 79 69 6e 67 20 er</u> applying
7990: 61 6c 6c 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 all transformati
79a0: 6f 6e 73 20 64 65 66 69 6e 65 64 20 62 79 20 4d ons defined by M
79b0: 61 74 72 69 78 2d 42 20 28 72 69 67 68 74 20 6f atrix-B (right o
79c0: 70 65 72 61 6e 64 29 2e 3c 2f 74 64 3e 3c 2f 74 perand).</td></t
79d0: 72 3e 0d 0a 3c 74 72 3e 3c 74 68 20 63 6f 6c 73 r>..<tr><th cols
79e0: 70 61 6e 3d 22 32 22 20 62 67 63 6f 6c 6f 72 3d pan="2" bgcolor=
79f0: 22 23 46 30 45 36 38 43 22 20 61 6c 69 67 6e 3d "#F0E68C" align=
7a00: 22 63 65 6e 74 65 72 22 3e 53 51 4c 20 66 75 6e "center">SQL fun
7a10: 63 74 69 6f 6e 73 20 63 72 65 61 74 69 6e 67 20 ctions creating
7a20: 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 69 6e 67 and initializing
7a30: 20 61 20 6e 65 77 20 41 66 66 69 6e 65 20 54 72 a new Affine Tr
7a40: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 ansformation Mat
7a50: 72 69 78 3c 2f 74 68 3e 3c 2f 74 72 3e 0d 0a 3c rix</th></tr>..<
7a60: 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 43 72 tr><td><b>ATM_Cr
7a70: 65 61 74 65 20 28 20 76 6f 69 64 20 29 20 3a 20 eate ( void ) :
7a80: 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f BLOB AT-matrix</
7a90: 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 b></td><td>Will
7aa0: 72 65 74 75 72 6e 20 61 6e 20 49 64 65 6e 74 69 return an Identi
7ab0: 74 79 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 ty Affine Transf
7ac0: 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 72 69 78 2e ormation Matrix.
7ad0: 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 61 6e <br>..NULL if an
7ae0: 79 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 3c y error occurs.<
7af0: 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c /td></tr>..<tr><
7b00: 74 64 3e 3c 62 3e 41 54 4d 5f 43 72 65 61 74 65 td><b>ATM_Create
7b10: 20 28 20 64 6f 75 62 6c 65 20 61 20 2c 20 64 6f ( double a , do
7b20: 75 62 6c 65 20 62 20 2c 20 64 6f 75 62 6c 65 20 uble b , double
7b30: 64 20 2c 20 64 6f 75 62 6c 65 20 65 20 2c 20 64 d , double e , d
7b40: 6f 75 62 6c 65 20 78 6f 66 66 20 2c 20 64 6f 75 ouble xoff , dou
7b50: 62 6c 65 20 79 6f 66 66 20 29 20 3a 20 42 4c 4f ble yoff ) : BLO
7b60: 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c B AT-matrix</b><
7b70: 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 /td><td>Will ret
7b80: 75 72 6e 20 61 20 32 44 20 41 66 66 69 6e 65 20 urn a 2D Affine
7b90: 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d Transformation M
7ba0: 61 74 72 69 78 20 69 6e 69 74 69 61 6c 69 7a 65 atrix initialize
7bb0: 64 20 77 69 74 68 20 65 78 70 6c 69 63 69 74 20 d with explicit
7bc0: 76 61 6c 75 65 73 2e 3c 62 72 3e 0d 0a 4e 55 4c values.<br>..NUL
7bd0: 4c 20 69 66 20 61 6e 79 20 65 72 72 6f 72 20 6f L if any error o
7be0: 63 63 75 72 73 20 6f 72 20 6f 6e 20 69 6e 76 61 ccurs or on inva
7bf0: 6c 69 64 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f lid arguments.</
7c00: 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 td></tr>..<tr><t
7c10: 64 3e 3c 62 3e 41 54 4d 5f 43 72 65 61 74 65 20 d><b>ATM_Create
7c20: 28 20 64 6f 75 62 6c 65 20 61 20 2c 20 64 6f 75 ( double a , dou
7c30: 62 6c 65 20 62 20 2c 20 64 6f 75 62 6c 65 20 63 ble b , double c
7c40: 20 2c 20 64 6f 75 62 6c 65 20 64 20 2c 20 64 6f , double d , do
7c50: 75 62 6c 65 20 65 20 2c 20 64 6f 75 62 6c 65 20 uble e , double
7c60: 66 20 2c 20 64 6f 75 62 6c 65 20 67 20 2c 20 64 f , double g , d
7c70: 6f 75 62 6c 65 20 68 20 2c 20 64 6f 75 62 6c 65 ouble h , double
7c80: 20 69 20 2c 20 64 6f 75 62 6c 65 20 78 6f 66 66 i , double xoff
7c90: 20 2c 20 64 6f 75 62 6c 65 20 79 6f 66 66 20 2c , double yoff ,
7ca0: 20 64 6f 75 62 6c 65 20 64 6f 75 62 6c 65 20 7a double double z
7cb0: 6f 66 66 20 29 20 3a 20 42 4c 4f 42 20 41 54 2d off ) : BLOB AT-
7cc0: 6d 61 74 72 69 78 3c 2f 62 3e 3c 2f 74 64 3e 3c matrix</b></td><
7cd0: 74 64 3e 57 69 6c 6c 20 72 65 74 75 72 6e 20 61 td>Will return a
7ce0: 20 33 44 20 41 66 66 69 6e 65 20 54 72 61 6e 73 3D Affine Trans
7cf0: 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 72 69 78 formation Matrix
7d00: 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 77 69 74 initialized wit
7d10: 68 20 65 78 70 6c 69 63 69 74 20 76 61 6c 75 65 h explicit value
7d20: 73 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 s.<br>..NULL if
7d30: 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 75 72 73 any error occurs
7d40: 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61 or on invalid a
7d50: 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f rguments.</td></
7d60: 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e tr>..<tr><td><b>
7d70: 41 54 4d 5f 43 72 65 61 74 65 54 72 61 6e 73 6c ATM_CreateTransl
7d80: 61 74 65 20 28 20 64 6f 75 62 6c 65 20 74 78 20 ate ( double tx
7d90: 2c 20 64 6f 75 62 6c 65 20 74 79 20 29 20 3a 20 , double ty ) :
7da0: 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f BLOB AT-matrix</
7db0: 62 3e 3c 62 72 3e 0d 0a 3c 62 3e 41 54 4d 5f 43 b><br>..<b>ATM_C
7dc0: 72 65 61 74 65 54 72 61 6e 73 6c 61 74 65 20 28 reateTranslate (
7dd0: 20 64 6f 75 62 6c 65 20 74 78 20 2c 20 64 6f 75 double tx , dou
7de0: 62 6c 65 20 74 79 20 2c 20 64 6f 75 62 6c 65 20 ble ty , double
7df0: 74 7a 20 29 20 3a 20 42 4c 4f 42 20 41 54 2d 6d tz ) : BLOB AT-m
7e00: 61 74 72 69 78 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 atrix</b></td><t
7e10: 64 3e 57 69 6c 6c 20 72 65 74 75 72 6e 20 61 6e d>Will return an
7e20: 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 Affine Transfor
7e30: 6d 61 74 69 6f 6e 20 4d 61 74 72 69 78 20 69 6e mation Matrix in
7e40: 69 74 69 61 6c 69 7a 65 64 20 72 65 73 70 65 63 itialized respec
7e50: 74 69 76 65 6c 79 20 61 73 20 61 20 32 44 20 6f tively as a 2D o
7e60: 72 20 33 44 20 54 72 61 6e 73 6c 61 74 65 2e 3c r 3D Translate.<
7e70: 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 61 6e 79 br>..NULL if any
7e80: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f 72 error occurs or
7e90: 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 67 75 on invalid argu
7ea0: 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f 74 72 3e ments.</td></tr>
7eb0: 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d ..<tr><td><b>ATM
7ec0: 5f 43 72 65 61 74 65 53 63 61 6c 65 20 28 20 64 _CreateScale ( d
7ed0: 6f 75 62 6c 65 20 73 78 20 2c 20 64 6f 75 62 6c ouble sx , doubl
7ee0: 65 20 73 79 20 29 20 3a 20 42 4c 4f 42 20 41 54 e sy ) : BLOB AT
7ef0: 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 62 72 3e 0d -matrix</b><br>.
7f00: 0a 3c 62 3e 41 54 4d 5f 43 72 65 61 74 65 53 63 .<b>ATM_CreateSc
7f10: 61 6c 65 20 28 20 64 6f 75 62 6c 65 20 73 78 20 ale ( double sx
7f20: 2c 20 64 6f 75 62 6c 65 20 73 79 20 2c 20 64 6f , double sy , do
7f30: 75 62 6c 65 20 73 7a 20 29 20 3a 20 42 4c 4f 42 uble sz ) : BLOB
7f40: 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 2f AT-matrix</b></
7f50: 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 75 td><td>Will retu
7f60: 72 6e 20 61 6e 20 41 66 66 69 6e 65 20 54 72 61 rn an Affine Tra
7f70: 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 72 nsformation Matr
7f80: 69 78 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 72 ix initialized r
7f90: 65 73 70 65 63 74 69 76 65 6c 79 20 61 73 20 61 espectively as a
7fa0: 20 32 44 20 6f 72 20 33 44 20 53 63 61 6c 65 2e 2D or 3D Scale.
7fb0: 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 61 6e <br>..NULL if an
7fc0: 79 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f y error occurs o
7fd0: 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 67 r on invalid arg
7fe0: 75 6d 65 6e 74 73 2e 2e 3c 2f 74 64 3e 3c 2f 74 uments..</td></t
7ff0: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 r>..<tr><td><b>A
8000: 54 4d 5f 43 72 65 61 74 65 52 6f 74 61 74 65 20 TM_CreateRotate
8010: 28 20 64 6f 75 62 6c 65 20 61 6e 67 6c 65 20 29 ( double angle )
8020: 20 3a 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 : BLOB AT-matri
8030: 78 3c 2f 62 3e 3c 62 72 3e 0d 0a 3c 62 3e 41 54 x</b><br>..<b>AT
8040: 4d 5f 43 72 65 61 74 65 5a 52 6f 6c 6c 20 28 20 M_CreateZRoll (
8050: 64 6f 75 62 6c 65 20 61 6e 67 6c 65 20 29 20 3a double angle ) :
8060: 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c BLOB AT-matrix<
8070: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c /b></td><td>Will
8080: 20 72 65 74 75 72 6e 20 61 6e 20 41 66 66 69 6e return an Affin
8090: 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e e Transformation
80a0: 20 4d 61 74 72 69 78 20 69 6e 69 74 69 61 6c 69 Matrix initiali
80b0: 7a 65 64 20 61 73 20 52 6f 74 61 74 69 6f 6e 20 zed as Rotation
80c0: 61 72 6f 75 6e 64 20 74 68 65 20 5a 20 61 78 69 around the Z axi
80d0: 73 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 s.<br>..NULL if
80e0: 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 75 72 73 any error occurs
80f0: 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61 or on invalid a
8100: 72 67 75 6d 65 6e 74 73 2e 3c 68 72 3e 0d 0a 54 rguments.<hr>..T
8110: 68 65 20 61 6e 67 6c 65 20 69 73 20 61 6c 77 61 he angle is alwa
8120: 79 73 20 65 78 70 65 63 74 65 64 20 74 6f 20 62 ys expected to b
8130: 65 20 6d 65 61 73 75 72 65 64 20 69 6e 20 64 65 e measured in de
8140: 63 69 6d 61 6c 20 64 65 67 72 65 65 73 2e 20 54 cimal degrees. T
8150: 68 65 20 64 69 72 65 63 74 69 6f 6e 20 6f 66 20 he direction of
8160: 72 6f 74 61 74 69 6f 6e 20 69 73 20 64 65 66 69 rotation is defi
8170: 6e 65 64 20 73 75 63 68 20 74 68 61 74 20 70 6f ned such that po
8180: 73 69 74 69 76 65 20 61 6e 67 6c 65 73 20 72 6f sitive angles ro
8190: 74 61 74 65 20 69 6e 20 74 68 65 20 64 69 72 65 tate in the dire
81a0: 63 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 70 ction from the p
81b0: 6f 73 69 74 69 76 65 20 58 20 61 78 69 73 20 74 ositive X axis t
81c0: 6f 77 61 72 64 20 74 68 65 20 70 6f 73 69 74 69 oward the positi
81d0: 76 65 20 59 20 61 78 69 73 2e 20 57 69 74 68 20 ve Y axis. With
81e0: 74 68 65 20 64 65 66 61 75 6c 74 20 61 78 69 73 the default axis
81f0: 20 6f 72 69 65 6e 74 61 74 69 6f 6e 20 20 70 6f orientation po
8200: 73 69 74 69 76 65 20 61 6e 67 6c 65 73 20 72 6f sitive angles ro
8210: 74 61 74 65 20 69 6e 20 61 20 63 6f 75 6e 74 65 tate in a counte
8220: 72 63 6c 6f 63 6b 77 69 73 65 20 64 69 72 65 63 rclockwise direc
8230: 74 69 6f 6e 2e 3c 68 72 3e 0d 0a 3c 75 3e 4e 6f tion.<hr>..<u>No
8240: 74 65 3c 2f 75 3e 3a 20 74 68 69 73 20 69 73 20 te</u>: this is
8250: 74 68 65 20 75 6e 69 71 75 65 20 72 6f 74 61 74 the unique rotat
8260: 69 6f 6e 20 61 6c 6c 6f 77 65 64 20 6f 6e 20 61 ion allowed on a
8270: 20 70 75 72 65 6c 79 20 32 44 20 70 6c 61 6e 65 purely 2D plane
8280: 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 .</td></tr>..<tr
8290: 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 43 72 65 61 ><td><b>ATM_Crea
82a0: 74 65 58 52 6f 6c 6c 20 28 20 64 6f 75 62 6c 65 teXRoll ( double
82b0: 20 61 6e 67 6c 65 20 29 20 3a 20 42 4c 4f 42 20 angle ) : BLOB
82c0: 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 2f 74 AT-matrix</b></t
82d0: 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 75 72 d><td>Will retur
82e0: 6e 20 61 6e 20 41 66 66 69 6e 65 20 54 72 61 6e n an Affine Tran
82f0: 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 72 69 sformation Matri
8300: 78 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 61 73 x initialized as
8310: 20 52 6f 74 61 74 69 6f 6e 20 61 72 6f 75 6e 64 Rotation around
8320: 20 74 68 65 20 58 20 61 78 69 73 2e 3c 62 72 3e the X axis.<br>
8330: 0d 0a 4e 55 4c 4c 20 69 66 20 61 6e 79 20 65 72 ..NULL if any er
8340: 72 6f 72 20 6f 63 63 75 72 73 20 6f 72 20 6f 6e ror occurs or on
8350: 20 69 6e 76 61 6c 69 64 20 61 72 67 75 6d 65 6e invalid argumen
8360: 74 73 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c ts.</td></tr>..<
8370: 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 43 72 tr><td><b>ATM_Cr
8380: 65 61 74 65 59 52 6f 6c 6c 20 28 20 64 6f 75 62 eateYRoll ( doub
8390: 6c 65 20 61 6e 67 6c 65 20 29 20 3a 20 42 4c 4f le angle ) : BLO
83a0: 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c B AT-matrix</b><
83b0: 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 /td><td>Will ret
83c0: 75 72 6e 20 61 6e 20 41 66 66 69 6e 65 20 54 72 urn an Affine Tr
83d0: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 ansformation Mat
83e0: 72 69 78 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 rix initialized
83f0: 61 73 20 52 6f 74 61 74 69 6f 6e 20 61 72 6f 75 as Rotation arou
8400: 6e 64 20 74 68 65 20 59 20 61 78 69 73 2e 3c 62 nd the Y axis.<b
8410: 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 61 6e 79 20 r>..NULL if any
8420: 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f 72 20 error occurs or
8430: 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 67 75 6d on invalid argum
8440: 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d ents.</td></tr>.
8450: 0a 3c 74 72 3e 3c 74 68 20 63 6f 6c 73 70 61 6e .<tr><th colspan
8460: 3d 22 32 22 20 62 67 63 6f 6c 6f 72 3d 22 23 46 ="2" bgcolor="#F
8470: 30 45 36 38 43 22 20 61 6c 69 67 6e 3d 22 63 65 0E68C" align="ce
8480: 6e 74 65 72 22 3e 53 51 4c 20 66 75 6e 63 74 69 nter">SQL functi
8490: 6f 6e 73 20 73 75 70 70 6f 72 74 69 6e 67 20 63 ons supporting c
84a0: 68 61 69 6e 69 6e 67 20 74 77 6f 20 41 66 66 69 haining two Affi
84b0: 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f ne Transformatio
84c0: 6e 20 4d 61 74 72 69 63 65 73 3c 2f 74 68 3e 3c n Matrices</th><
84d0: 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 /tr>..<tr><td><b
84e0: 3e 41 54 4d 5f 54 72 61 6e 73 6c 61 74 65 20 28 >ATM_Translate (
84f0: 20 64 6f 75 62 6c 65 20 74 78 20 2c 20 64 6f 75 double tx , dou
8500: 62 6c 65 20 74 79 20 2c 20 42 4c 4f 42 20 41 54 ble ty , BLOB AT
8510: 2d 6d 61 74 72 69 78 20 29 20 3a 20 42 4c 4f 42 -matrix ) : BLOB
8520: 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 62 AT-matrix</b><b
8530: 72 3e 0d 0a 3c 62 3e 41 54 4d 5f 54 72 61 6e 73 r>..<b>ATM_Trans
8540: 6c 61 74 65 20 28 20 64 6f 75 62 6c 65 20 74 78 late ( double tx
8550: 20 2c 20 64 6f 75 62 6c 65 20 74 79 20 2c 20 64 , double ty , d
8560: 6f 75 62 6c 65 20 74 7a 20 2c 20 42 4c 4f 42 20 ouble tz , BLOB
8570: 41 54 2d 6d 61 74 72 69 78 20 29 20 3a 20 42 4c AT-matrix ) : BL
8580: 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e OB AT-matrix</b>
8590: 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 </td><td>Will re
85a0: 74 75 72 6e 20 61 6e 20 41 66 66 69 6e 65 20 54 turn an Affine T
85b0: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 ransformation Ma
85c0: 74 72 69 78 20 62 79 20 63 68 61 69 6e 69 6e 67 trix by chaining
85d0: 20 72 65 73 70 65 63 74 69 76 65 6c 79 20 61 20 respectively a
85e0: 32 44 20 6f 72 20 33 44 20 54 72 61 6e 73 6c 61 2D or 3D Transla
85f0: 74 65 20 61 6e 64 20 61 6e 6f 74 68 65 72 20 41 te and another A
8600: 66 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 ffine Transforma
8610: 74 69 6f 6e 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 tion.<br>..NULL
8620: 69 66 20 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 if any error occ
8630: 75 72 73 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 urs or on invali
8640: 64 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 d arguments.</td
8650: 3e 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e ></tr>..<tr><td>
8660: 3c 62 3e 41 54 4d 5f 53 63 61 6c 65 20 28 20 64 <b>ATM_Scale ( d
8670: 6f 75 62 6c 65 20 73 78 20 2c 20 64 6f 75 62 6c ouble sx , doubl
8680: 65 20 73 79 20 2c 20 42 4c 4f 42 20 41 54 2d 6d e sy , BLOB AT-m
8690: 61 74 72 69 78 20 29 20 3a 20 42 4c 4f 42 20 41 atrix ) : BLOB A
86a0: 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 62 72 3e T-matrix</b><br>
86b0: 0d 0a 3c 62 3e 41 54 4d 5f 53 63 61 6c 65 20 28 ..<b>ATM_Scale (
86c0: 20 64 6f 75 62 6c 65 20 73 78 20 2c 20 64 6f 75 double sx , dou
86d0: 62 6c 65 20 73 79 20 2c 20 64 6f 75 62 6c 65 20 ble sy , double
86e0: 73 7a 20 2c 20 42 4c 4f 42 20 41 54 2d 6d 61 74 sz , BLOB AT-mat
86f0: 72 69 78 20 29 20 3a 20 42 4c 4f 42 20 41 54 2d rix ) : BLOB AT-
8700: 6d 61 74 72 69 78 3c 2f 62 3e 3c 2f 74 64 3e 3c matrix</b></td><
8710: 74 64 3e 57 69 6c 6c 20 72 65 74 75 72 6e 20 61 td>Will return a
8720: 6e 20 41 66 66 69 6e 65 20 54 72 61 6e 73 66 6f n Affine Transfo
8730: 72 6d 61 74 69 6f 6e 20 4d 61 74 72 69 78 20 62 rmation Matrix b
8740: 79 20 63 68 61 69 6e 69 6e 67 20 72 65 73 70 65 y chaining respe
8750: 63 74 69 76 65 6c 79 20 61 20 32 44 20 6f 72 20 ctively a 2D or
8760: 33 44 20 53 63 61 6c 65 20 61 6e 64 20 61 6e 6f 3D Scale and ano
8770: 74 68 65 72 20 41 66 66 69 6e 65 20 54 72 61 6e ther Affine Tran
8780: 73 66 6f 72 6d 61 74 69 6f 6e 2e 3c 62 72 3e 0d sformation.<br>.
8790: 0a 4e 55 4c 4c 20 69 66 20 61 6e 79 20 65 72 72 .NULL if any err
87a0: 6f 72 20 6f 63 63 75 72 73 20 6f 72 20 6f 6e 20 or occurs or on
87b0: 69 6e 76 61 6c 69 64 20 61 72 67 75 6d 65 6e 74 invalid argument
87c0: 73 2e 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d 0a 3c s..</td></tr>..<
87d0: 74 72 3e 3c 74 64 3e 3c 62 3e 41 54 4d 5f 52 6f tr><td><b>ATM_Ro
87e0: 74 61 74 65 20 28 20 64 6f 75 62 6c 65 20 61 6e tate ( double an
87f0: 67 6c 65 20 2c 20 42 4c 4f 42 20 41 54 2d 6d 61 gle , BLOB AT-ma
8800: 74 72 69 78 20 29 20 3a 20 42 4c 4f 42 20 41 54 trix ) : BLOB AT
8810: 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 62 72 3e 0d -matrix</b><br>.
8820: 0a 3c 62 3e 41 54 4d 5f 5a 52 6f 6c 6c 20 28 20 .<b>ATM_ZRoll (
8830: 64 6f 75 62 6c 65 20 61 6e 67 6c 65 20 2c 20 42 double angle , B
8840: 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 20 29 20 LOB AT-matrix )
8850: 3a 20 42 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 : BLOB AT-matrix
8860: 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c </b></td><td>Wil
8870: 6c 20 72 65 74 75 72 6e 20 61 6e 20 41 66 66 69 l return an Affi
8880: 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f ne Transformatio
8890: 6e 20 4d 61 74 72 69 78 20 62 79 20 63 68 61 69 n Matrix by chai
88a0: 6e 69 6e 67 20 61 20 52 6f 74 61 74 69 6f 6e 20 ning a Rotation
88b0: 61 72 6f 75 6e 64 20 74 68 65 20 5a 20 61 78 69 around the Z axi
88c0: 73 20 61 6e 64 20 61 6e 6f 74 68 65 72 20 41 66 s and another Af
88d0: 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 fine Transformat
88e0: 69 6f 6e 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 ion.<br>..NULL i
88f0: 66 20 61 6e 79 20 65 72 72 6f 72 20 6f 63 63 75 f any error occu
8900: 72 73 20 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64 rs or on invalid
8910: 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e arguments.</td>
8920: 3c 2f 74 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c </tr>..<tr><td><
8930: 62 3e 41 54 4d 5f 58 52 6f 6c 6c 20 28 20 64 6f b>ATM_XRoll ( do
8940: 75 62 6c 65 20 61 6e 67 6c 65 20 29 20 3a 20 42 uble angle ) : B
8950: 4c 4f 42 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 LOB AT-matrix</b
8960: 3e 3c 2f 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 ></td><td>Will r
8970: 65 74 75 72 6e 20 61 6e 20 41 66 66 69 6e 65 20 eturn an Affine
8980: 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d Transformation M
8990: 61 74 72 69 78 20 62 79 20 63 68 61 69 6e 69 6e atrix by chainin
89a0: 67 20 61 20 52 6f 74 61 74 69 6f 6e 20 61 72 6f g a Rotation aro
89b0: 75 6e 64 20 74 68 65 20 58 20 61 78 69 73 20 61 und the X axis a
89c0: 6e 64 20 61 6e 6f 74 68 65 72 20 41 66 66 69 6e nd another Affin
89d0: 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e e Transformation
89e0: 2e 3c 62 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 61 .<br>..NULL if a
89f0: 6e 79 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 ny error occurs
8a00: 6f 72 20 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 or on invalid ar
8a10: 67 75 6d 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f 74 guments.</td></t
8a20: 72 3e 0d 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 41 r>..<tr><td><b>A
8a30: 54 4d 5f 59 52 6f 6c 6c 20 28 20 64 6f 75 62 6c TM_YRoll ( doubl
8a40: 65 20 61 6e 67 6c 65 20 29 20 3a 20 42 4c 4f 42 e angle ) : BLOB
8a50: 20 41 54 2d 6d 61 74 72 69 78 3c 2f 62 3e 3c 2f AT-matrix</b></
8a60: 74 64 3e 3c 74 64 3e 57 69 6c 6c 20 72 65 74 75 td><td>Will retu
8a70: 72 6e 20 61 6e 20 41 66 66 69 6e 65 20 54 72 61 rn an Affine Tra
8a80: 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 4d 61 74 72 nsformation Matr
8a90: 69 78 20 62 79 20 63 68 61 69 6e 69 6e 67 20 61 ix by chaining a
8aa0: 20 52 6f 74 61 74 69 6f 6e 20 61 72 6f 75 6e 64 Rotation around
8ab0: 20 74 68 65 20 59 20 61 78 69 73 20 61 6e 64 20 the Y axis and
8ac0: 61 6e 6f 74 68 65 72 20 41 66 66 69 6e 65 20 54 another Affine T
8ad0: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 3c 62 ransformation.<b
8ae0: 72 3e 0d 0a 4e 55 4c 4c 20 69 66 20 61 6e 79 20 r>..NULL if any
8af0: 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f 72 20 error occurs or
8b00: 6f 6e 20 69 6e 76 61 6c 69 64 20 61 72 67 75 6d on invalid argum
8b10: 65 6e 74 73 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0d ents.</td></tr>.
8b20: 0a 3c 74 72 3e 3c 74 64 3e 3c 2f 74 64 3e 3c 74 .<tr><td></td><t
8b30: 64 3e 0d 0a 3c 75 3e 4e 6f 74 65 3c 2f 75 3e 3a d>..<u>Note</u>:
8b40: 20 61 6c 6c 20 74 68 65 20 61 62 6f 76 65 20 66 all the above f
8b50: 75 6e 63 74 69 6f 6e 73 20 73 69 6d 70 6c 79 20 unctions simply
8b60: 61 72 65 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 are convenience
8b70: 6d 65 74 68 6f 64 73 20 69 6e 74 65 6e 64 65 64 methods intended
8b80: 20 74 6f 20 61 76 6f 69 64 20 61 6e 79 20 6e 65 to avoid any ne
8b90: 65 64 20 74 6f 20 72 65 70 65 61 74 65 64 6c 79 ed to repeatedly
8ba0: 20 63 61 6c 6c 20 3c 62 3e 41 54 4d 5f 4d 75 6c call <b>ATM_Mul
8bb0: 74 69 70 6c 79 28 29 3c 2f 62 3e 2e 0d 0a 3c 76 tiply()</b>...<v
8bc0: 65 72 62 61 74 69 6d 3e 0d 0a 53 45 4c 45 43 54 erbatim>..SELECT
8bd0: 20 41 54 4d 5f 4d 75 6c 74 69 70 6c 79 28 41 54 ATM_Multiply(AT
8be0: 4d 5f 43 72 65 61 74 65 52 6f 74 61 74 65 28 31 M_CreateRotate(1
8bf0: 35 29 2c 20 0d 0a 20 20 20 20 20 20 20 20 20 20 5), ..
8c00: 20 20 20 20 20 20 20 20 20 20 41 54 4d 5f 4d 75 ATM_Mu
8c10: 6c 74 69 70 6c 79 28 41 54 4d 5f 43 72 65 61 74 ltiply(ATM_Creat
8c20: 65 53 63 61 6c 65 28 31 2e 31 2c 20 31 2e 32 2c eScale(1.1, 1.2,
8c30: 20 31 2e 33 29 2c 20 0d 0a 20 20 20 20 20 20 20 1.3), ..
8c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8c50: 20 20 20 20 20 20 20 20 20 20 41 54 4d 5f 43 72 ATM_Cr
8c60: 65 61 74 65 54 72 61 6e 73 6c 61 74 65 28 31 30 eateTranslate(10
8c70: 2c 20 32 30 2c 20 33 30 29 29 29 3b 0d 0a 0d 0a , 20, 30)));....
8c80: 53 45 4c 45 43 54 20 41 54 4d 5f 52 6f 74 61 74 SELECT ATM_Rotat
8c90: 65 28 31 35 2c 20 0d 0a 20 20 20 20 20 20 20 20 e(15, ..
8ca0: 20 20 41 54 4d 5f 53 63 61 6c 65 28 31 2e 31 2c ATM_Scale(1.1,
8cb0: 20 31 2e 32 2c 20 31 2e 33 2c 0d 0a 20 20 20 20 1.2, 1.3,..
8cc0: 20 20 20 20 20 20 20 20 20 41 54 4d 5f 43 72 65 ATM_Cre
8cd0: 61 74 65 54 72 61 6e 73 6c 61 74 65 28 31 30 2c ateTranslate(10,
8ce0: 20 32 30 2c 20 33 30 29 29 29 3b 0d 0a 0d 0a 53 20, 30)));....S
8cf0: 45 4c 45 43 54 20 41 54 4d 5f 52 6f 74 61 74 65 ELECT ATM_Rotate
8d00: 28 31 35 2c 20 0d 0a 20 20 20 20 20 20 20 20 20 (15, ..
8d10: 20 41 54 4d 5f 53 63 61 6c 65 28 31 2e 31 2c 20 ATM_Scale(1.1,
8d20: 31 2e 32 2c 20 31 2e 33 2c 0d 0a 20 20 20 20 20 1.2, 1.3,..
8d30: 20 20 20 20 20 20 20 20 41 54 4d 5f 54 72 61 6e ATM_Tran
8d40: 73 6c 61 74 65 28 31 30 2c 20 32 30 2c 20 33 30 slate(10, 20, 30
8d50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
8d60: 20 20 20 41 54 4d 5f 43 72 65 61 74 65 28 29 29 ATM_Create())
8d70: 29 29 3b 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e ));..</verbatim>
8d80: 0d 0a 41 6c 6c 20 74 68 72 65 65 20 73 74 61 74 ..All three stat
8d90: 65 6d 65 6e 74 73 20 77 69 6c 6c 20 72 65 74 75 ements will retu
8da0: 72 6e 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 rn exactly the s
8db0: 61 6d 65 20 69 64 65 6e 74 69 63 61 6c 20 41 66 ame identical Af
8dc0: 66 69 6e 65 20 54 72 61 6e 73 66 6f 72 6d 61 74 fine Transformat
8dd0: 69 6f 6e 20 4d 61 74 72 69 78 3b 20 61 6e 79 77 ion Matrix; anyw
8de0: 61 79 20 74 68 65 20 73 65 63 6f 6e 64 20 6e 6f ay the second no
8df0: 74 61 74 69 6f 6e 20 69 73 20 6f 62 76 69 6f 75 tation is obviou
8e00: 73 6c 79 20 6d 6f 73 74 20 63 6f 6e 63 69 73 65 sly most concise
8e10: 20 61 6e 64 20 6d 6f 72 65 20 70 72 61 63 74 69 and more practi
8e20: 63 61 6c 20 74 68 61 6e 20 74 68 65 20 6f 74 68 cal than the oth
8e30: 65 72 20 74 77 6f 2e 0d 0a 3c 2f 74 64 3e 3c 2f er two...</td></
8e40: 74 72 3e 0d 0a 3c 74 61 62 6c 65 3e 3c 62 72 3e tr>..<table><br>
8e50: 3c 62 72 3e 0d 0a 3c 62 3e 4e 6f 74 65 3c 2f 62 <br>..<b>Note</b
8e60: 3e 3a 20 74 68 65 20 53 51 4c 20 69 6e 74 65 72 >: the SQL inter
8e70: 66 61 63 65 20 73 75 70 70 6f 72 74 69 6e 67 20 face supporting
8e80: 41 66 66 69 6e 65 20 54 72 61 73 66 6f 72 6d 61 Affine Trasforma
8e90: 74 69 6f 6e 73 20 69 73 20 64 65 73 69 67 6e 65 tions is designe
8ea0: 64 20 69 6e 20 73 75 63 68 20 61 20 77 61 79 20 d in such a way
8eb0: 74 68 61 74 20 61 6e 79 20 63 6f 6d 70 6c 65 78 that any complex
8ec0: 69 74 79 20 61 6e 64 20 64 69 66 66 69 63 75 6c ity and difficul
8ed0: 74 79 20 72 65 71 75 69 72 65 64 20 69 6e 20 6f ty required in o
8ee0: 72 64 65 72 20 74 6f 20 64 69 72 65 63 74 6c 79 rder to directly
8ef0: 20 68 61 6e 64 6c 65 20 63 6f 6d 70 6c 65 78 20 handle complex
8f00: 6d 61 74 72 69 63 69 61 6c 20 6f 70 65 72 61 74 matricial operat
8f10: 69 6f 6e 73 20 69 73 20 63 6f 6d 70 6c 65 74 65 ions is complete
8f20: 6c 79 20 68 69 64 64 65 6e 2e 3c 62 72 3e 0d 0a ly hidden.<br>..
8f30: 59 6f 75 20 61 72 65 20 73 69 6d 70 6c 79 20 72 You are simply r
8f40: 65 71 75 69 72 65 64 20 74 6f 20 63 68 61 69 6e equired to chain
8f50: 20 73 65 76 65 72 61 6c 20 65 6c 65 6d 65 6e 74 several element
8f60: 61 72 79 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 ary transformati
8f70: 6f 6e 73 2c 20 65 61 63 68 20 6f 6e 65 20 6f 66 ons, each one of
8f80: 20 74 68 65 6d 20 62 61 73 69 63 61 6c 6c 79 20 them basically
8f90: 73 69 6d 70 6c 65 2c 20 69 6e 20 74 68 65 20 63 simple, in the c
8fa0: 6f 72 72 65 63 74 20 73 65 71 75 65 6e 63 65 20 orrect sequence
8fb0: 61 6e 64 20 74 68 61 74 27 73 20 61 62 73 6f 6c and that's absol
8fc0: 75 74 65 6c 79 20 61 6c 6c 2e 3c 62 72 3e 0d 0a utely all.<br>..
8fd0: 3c 62 3e 41 54 4d 3c 2f 62 3e 20 53 51 4c 20 66 <b>ATM</b> SQL f
8fe0: 75 6e 63 74 69 6f 6e 73 20 77 69 6c 6c 20 3c 69 unctions will <i
8ff0: 3e 3c 75 3e 6d 61 67 69 63 61 6c 6c 79 20 61 6e ><u>magically an
9000: 64 20 73 69 6c 65 6e 74 6c 79 3c 2f 75 3e 3c 2f d silently</u></
9010: 69 3e 20 6b 65 65 70 20 63 61 72 65 20 6f 66 20 i> keep care of
9020: 61 6e 79 20 6d 61 74 68 65 6d 61 74 69 63 61 6c any mathematical
9030: 20 63 6f 6d 70 6c 65 78 69 74 79 2e 3c 62 72 3e complexity.<br>
9040: 3c 62 72 3e 20 20 0d 0a 3c 68 72 3e 3c 62 72 3e <br> ..<hr><br>
9050: 0d 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 ..<a href="https
9060: 3a 2f 2f 77 77 77 2e 67 61 69 61 2d 67 69 73 2e ://www.gaia-gis.
9070: 69 74 2f 66 6f 73 73 69 6c 2f 6c 69 62 73 70 61 it/fossil/libspa
9080: 74 69 61 6c 69 74 65 2f 77 69 6b 69 3f 6e 61 6d tialite/wiki?nam
9090: 65 3d 34 2e 32 2e 30 2d 64 6f 63 22 3e 62 61 63 e=4.2.0-doc">bac
90a0: 6b 3c 2f 61 3e 0a 5a 20 61 38 36 39 37 35 30 62 k</a>.Z a869750b
90b0: 64 35 63 63 35 63 66 35 35 63 35 32 63 32 39 65 d5cc5cf55c52c29e
90c0: 35 38 34 37 32 64 61 66 0a 58472daf.