-+-+-+-+-+-+-+-+ START OF PART 106 -+-+-+-+-+-+-+-+ X(atri)o(x)p 1864 1723 V 1373 1725 494 2 v 0 1799 a Fq(void)f XFp(ptk_multiplymatrix)e Fq(\()j(Pmatrix)g Fa(matrix1)p Fq(,)g(Pmatrix)g XFa(matrix2)p Fq(,)f(Pmatrix)h Fa(result)f Fq(\))25 1888 y(IN)91 Xb(Pmatrix)49 b Fa(matrix1)g Fq(3x3)10 b(matrix.)25 1938 y(IN)91 Xb(Pmatrix)49 b Fa(matrix2)g Fq(3x3)10 b(matrix.)25 1988 y(OUT)50 Xb(Pmatrix)f Fa(result)78 b Fq(3x3)10 b(matrix.)0 2057 y(This)g(function)f X(makes)j Fi(result)f Fq(the)f(product)g(of)g(the)g(3)d Fl(\264)g XFq(3)i(matrices)i Fi(matrix1)h Fq(and)e Fi(matrix2)p Fq(,)j(with)c XFi(result)19 b Fl(\254)f Fi(matrix1)0 2106 y(*)g(matrix2)p XFq(.)f(Note)11 b(that)g Fi(result)h Fq(can)g(also)g(be)f Fi(matrix1)i XFq(or)e Fi(matrix2)h Fq(since)g(a)g(copy)f(is)g(made.)p 1343 X2203 524 2 v 1343 2282 2 80 v 1357 2256 a Fb(ptk_multiplyma)o(tri)o(x3)p X1864 2282 V 1343 2284 524 2 v 0 2358 a Fq(void)f Fp(ptk_multiplymatrix3)e XFq(\()j(Pmatrix3)g Fa(matrix1)p Fq(,)f(Pmatrix3)h Fa(matrix2)p XFq(,)f(Pmatrix3)h Fa(result)f Fq(\))25 2447 y(IN)91 b(Pmatrix3)49 Xb Fa(matrix1)g Fq(4x4)10 b(matrix.)25 2496 y(IN)91 b(Pmatrix3)49 Xb Fa(matrix2)g Fq(4x4)10 b(matrix.)25 2546 y(OUT)50 b(Pmatrix3)f XFa(result)78 b Fq(4x4)10 b(matrix.)0 2615 y(This)g(function)f(makes)j XFi(result)f Fq(the)f(product)g(of)g(the)g(4)d Fl(\264)g Fq(4)i(matrices)i XFi(matrix1)h Fq(and)e Fi(matrix2)p Fq(,)j(with)c Fi(result)19 Xb Fl(\254)f Fi(matrix1)0 2665 y(*)g(matrix2)p Fq(.)f(Note)10 Xb(that)g Fi(result)i Fq(can)g(also)e(be)h Fi(matrix1)h Fq(or)f XFi(matrix2)h Fq(since)f(a)g(copy)g(is)f(made.)17 b(This)10 Xb(function)f(uses)j(W)n(ino-)0 2715 y(grad')n(s)f(method,)g(see)i("Handbook) Vd X(of)h(Algorithms)e(and)j(Data)g(Structures",)f(G.H.)h(Gonnet,)f(Addison)f(W) Vm X(esley)m(.)0 2956 y(13th)22 b(May)m(,)12 b(1992)636 b(73)839 Xb(2.01)p eop X%%Page: 74 75 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1609 -19 258 2 v 1609 60 2 80 v 1623 35 a Fb(ptk_nullv)p X1864 60 V 1609 62 258 2 v 0 136 a Fq(ptkboolean)10 b Fp(ptk_nullv)g XFq(\()h(Ppoint)f(*)p Fa(vec)g Fq(\))25 236 y(IN)50 b(Ppoint)9 Xb(*)50 b Fa(vec)f Fq(2D)11 b(vector)n(.)0 335 y(This)16 b(function)e(returns V) Xh Fi(TRUE)h Fq(if)f(the)h(modulus)f(of)g(the)g(2D)h(vector)f XFi(vec)i Fq(is)e(less)h(than)f(the)h(global)e(tolerance)i Fi(ptkpceps)p XFq(,)0 385 y(otherwise)11 b Fi(FALSE)p Fq(.)p 1579 482 288 X2 v 1579 561 2 80 v 1593 536 a Fb(ptk_nullv3)p 1864 561 V 1579 X563 288 2 v 0 637 a Fq(ptkboolean)f Fp(ptk_nullv3)g Fq(\()h(Ppoint3)f(*)p XFa(vec)g Fq(\))25 737 y(IN)50 b(Ppoint3)9 b(*)50 b Fa(vec)e XFq(3D)12 b(vector)n(.)0 837 y(This)17 b(function)e(returns)h XFi(TRUE)h Fq(if)f(the)g(modulus)g(of)g(the)h(3D)f(vector)p XFi(vec)h Fq(is)g(less)f(than)h(the)f(global)g(tolerance)g Fi(ptkpceps)p XFq(,)0 886 y(otherwise)11 b Fi(FALSE)p Fq(.)p 1579 984 V 1579 X1063 2 80 v 1593 1037 a Fb(ptk_oto3pt)p 1864 1063 V 1579 1065 X288 2 v 0 1139 a Fq(void)f Fp(ptk_oto3pt)g Fq(\()i(Ppoint3)e(*)p XFa(origin)p Fq(,)g(Ppoint3)g(*)p Fa(xdirn)p Fq(,)g(Ppoint3)g(*)p XFa(ydirn)p Fq(,)g(Pcomp-)290 1189 y(type)h Fa(operation)p Fq(,)e(Pmatrix3)i XFa(matrix)f Fq(\))25 1241 y(IN)91 b(Ppoint3)10 b(*)75 b Fa(origin)109 Xb Fq(origin)9 b(of)i(axes.)25 1290 y(IN)91 b(Ppoint3)10 b(*)75 Xb Fa(xdirn)119 b Fq(x)11 b(direction.)25 1340 y(IN)91 b(Ppoint3)10 Xb(*)75 b Fa(y)10 b(dirn)109 b Fq(y)11 b(direction.)25 1390 Xy(IN)91 b(Pcomptype)50 b Fa(operation)d Fq(concatenation)11 Xb(operation.)25 1440 y(OUT)50 b(Pmatrix3)84 b Fa(matrix)100 Xb Fq(4x4)10 b(matrix.)0 1509 y(This)j(function)f(performs)h(the)g(same)h X(operation)e(as)i Fi(ptk_0to3pt)p Fq(,)i(except)d(the)g(name)h(has)g(an)f XFi(o)g Fq(\(oh\))g(instead)g(of)f Fi(0)i Fq(\(zero\).)0 1559 Xy(This)d(function)f(is)h(provided)f(for)h(members)h(of)f(the)h(Fumbly)e X(Fingers)h(Club.)p 1393 1656 474 2 v 1393 1735 2 80 v 1407 X1710 a Fb(ptk_outputmatri)o(x3)p 1864 1735 V 1393 1737 474 X2 v 0 1811 a Fq(void)f Fp(ptk_outputmatrix3)g Fq(\()h(FILE)h(*)p XFa(\256leptr)p Fq(,)e(Pmatrix3)g Fa(matrix)p Fq(,)h(Pchar)h(*)p XFa(string)e Fq(\))25 1900 y(OUT)50 b(FILE)12 b(*)82 b Fa(\256leptr)58 Xb Fq(\256le)11 b(pointer)n(.)25 1950 y(IN)91 b(Pmatrix3)49 Xb Fa(matrix)g Fq(4x4)11 b(matrix.)25 1999 y(IN)91 b(Pchar)12 Xb(*)75 b Fa(string)58 b Fq(character)12 b(string.)0 2068 y(This)f(function)f X(outputs)g(the)h(3)e Fl(\264)g Fq(3)i(matrix)g Fi(matrix)h XFq(and)g(the)f(message)i Fi(string)f Fq(to)f(the)g(\256le)h(speci\256ed)g(by V) Xe Fi(fileptr)p Fq(.)p 1609 2165 258 2 v 1609 2245 2 80 v 1623 X2219 a Fb(ptk_point)p 1864 2245 V 1609 2247 258 2 v 0 2321 Xa Fq(Ppoint)g Fp(ptk_point)g Fq(\()i(P\257oat)f Fa(x)p Fq(,)g(P\257oat)h XFa(y)f Fq(\))25 2409 y(IN)50 b(P\257oat)f Fa(x)h Fq(x)11 b(coordinate.)25 X2459 y(IN)50 b(P\257oat)f Fa(y)h Fq(y)11 b(coordinate.)0 2534 Xy(This)g(function)f(returns)h(a)h(structure)e(representing)h(the)g(2D)g X(point)f Fi(\(x,y\))p Fq(.)0 2956 y(13th)22 b(May)m(,)12 b(1992)636 Xb(74)839 b(2.01)p eop X%%Page: 75 76 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1579 -19 288 2 v 1579 60 2 80 v 1593 35 a Fb(ptk_point3)p X1864 60 V 1579 62 288 2 v 0 136 a Fq(Ppoint3)10 b Fp(ptk_point3)g XFq(\()h(P\257oat)g Fa(x)p Fq(,)h(P\257oat)f Fa(y)p Fq(,)h(P\257oat)f XFa(z)g Fq(\))25 225 y(IN)50 b(P\257oat)f Fa(x)h Fq(x)11 b(coordinate.)25 X275 y(IN)50 b(P\257oat)f Fa(y)h Fq(y)11 b(coordinate.)25 324 Xy(IN)50 b(P\257oat)f Fa(z)h Fq(z)12 b(coordinate.)0 393 y(This)f(function)f X(returns)h(a)h(structure)e(representing)h(the)g(3D)g(point)f XFi(\(x,y,z\))p Fq(.)p 1532 491 334 2 v 1532 570 2 80 v 1546 X544 a Fb(ptk_pt3topt4)p 1864 570 V 1532 572 334 2 v 0 646 a XFq(Ppoint4)g Fp(ptk_pt3topt4)g Fq(\()h(Ppoint3)e(*)p Fa(point)h XFq(\))25 745 y(IN)50 b(Ppoint3)9 b(*)50 b Fa(point)e Fq(3D)11 Xb(point.)0 845 y(This)h(function)e(converts)h(the)h(3D)f(point)f XFi(point)j Fq(to)e(a)h(4D)g(point,)e(which)i(is)f(returned)g(as)i(the)e X(result)g(of)h(the)f(function.)k(The)d Fk(w)0 895 y Fq(coordinate)f(of)g(the V) Xg(4D)g(point)f(is)h(set)g(to)g(1)p Fk(.)p Fq(0.)p 1496 992 X371 2 v 1496 1071 2 80 v 1510 1046 a Fb(ptk_pt3tovec3)p 1864 X1071 V 1496 1073 371 2 v 0 1147 a Fq(Pvector3)g Fp(ptk_pt3tovec3)g XFq(\()g(Ppoint3)f(*)p Fa(pt)g Fq(\))25 1247 y(IN)50 b(Ppoint3)9 Xb(*)50 b Fa(pt)f Fq(3D)11 b(point.)0 1346 y(This)g(function)f(converts)h(the V) Xg(3D)g(point)f Fi(pt)i Fq(to)f(a)g(3D)h(vector)n(.)p 1532 1443 X334 2 v 1532 1523 2 80 v 1546 1497 a Fb(ptk_pt4topt3)p 1864 X1523 V 1532 1525 334 2 v 0 1599 a Fq(Ppoint3)e Fp(ptk_pt4topt3)g XFq(\()h(Ppoint4)e(*)p Fa(point)h Fq(\))25 1698 y(IN)50 b(Ppoint4)9 Xb(*)50 b Fa(point)e Fq(4D)11 b(point.)0 1798 y(This)j(function)f(converts)h X(the)g(4D)g(point)f Fi(point)i Fq(to)f(a)g(3D)h(point,)e(by)h(dividing)e(by) Vi XFk(w)p Fq(.)24 b(The)15 b(3D)f(point)f(is)h(returned)f(as)i(the)0 X1848 y(result)c(of)g(the)g(function.)p 1596 1945 271 2 v 1596 X2024 2 80 v 1610 1998 a Fb(ptk_rotate)p 1864 2024 V 1596 2026 X271 2 v 0 2100 a Fq(void)f Fp(ptk_r)o(otate)i Fq(\()g(P\257oat)h XFa(rotation)p Fq(,)f(ptkeaxistype)g Fa(axis)p Fq(,)g(Pcomptype)h XFa(operation)p Fq(,)283 2150 y(Pmatrix)e Fa(matrix)f Fq(\))25 X2200 y(IN)91 b(P\257oat)163 b Fa(rotation)77 b Fq(angle)11 Xb(in)g(degrees.)25 2250 y(IN)91 b(ptkeaxistype)49 b Fa(axis)133 Xb Fq(x,)11 b(y)g(or)g(z)h(axis.)25 2300 y(IN)91 b(Pcomptype)73 Xb Fa(operation)47 b Fq(concatenation)11 b(operation.)25 2350 Xy(OUT)50 b(Pmatrix)128 b Fa(matrix)100 b Fq(3x3)10 b(matrix.)0 X2419 y(This)h(function)f(computes)i(a)f(matrix)g(to)g(perform)g(the)g X(speci\256ed)h(2D)f(rotation)f(and)h(concatenates)i(this)d(matrix)h(with)f XFi(matrix)0 2468 y Fq(on)h(the)g(basis)h(of)e Fi(operation)p XFq(.)18 b Fi(rotation)12 b Fq(is)g(expressed)g(in)e(degrees.)0 X2956 y(13th)22 b(May)m(,)12 b(1992)636 b(75)839 b(2.01)p eop X%%Page: 76 77 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1566 -19 301 2 v 1566 60 2 80 v 1580 35 a Fb(ptk_rotate3)p X1864 60 V 1566 62 301 2 v 0 136 a Fq(void)10 b Fp(ptk_r)o(otate3)h XFq(\()i(P\257oat)g Fa(rotation)p Fq(,)f(ptkeaxistype)f Fa(axis)p XFq(,)i(Pcomptype)g Fa(operation)p Fq(,)303 186 y(Pmatrix3)e XFa(matrix)g Fq(\))25 236 y(IN)91 b(P\257oat)163 b Fa(rotation)77 Xb Fq(angle)11 b(in)g(degrees.)25 286 y(IN)91 b(ptkeaxistype)49 Xb Fa(axis)133 b Fq(x,)11 b(y)g(or)g(z)h(axis.)25 336 y(IN)91 Xb(Pcomptype)73 b Fa(operation)47 b Fq(concatenation)11 b(operation.)25 X386 y(OUT)50 b(Pmatrix3)107 b Fa(matrix)100 b Fq(4x4)10 b(matrix.)0 X455 y(This)h(function)f(computes)i(a)f(matrix)g(to)g(perform)g(the)g X(speci\256ed)h(3D)f(rotation)f(and)h(concatenates)i(this)d(matrix)h(with)f XFi(matrix)0 505 y Fq(on)h(the)g(basis)h(of)e Fi(operation)p XFq(.)18 b Fi(rotation)12 b Fq(is)g(expressed)g(in)e(degrees.)p X1546 600 321 2 v 1546 679 2 80 v 1560 654 a Fb(ptk_rotatecs)p X1864 679 V 1546 681 321 2 v 0 755 a Fq(void)g Fp(ptk_r)o(otatecs)i XFq(\()25 b(P\257oat)g Fa(costheta)p Fq(,)h(P\257oat)f Fa(sinetheta)p XFq(,)h(ptkeaxistype)e Fa(axis)p Fq(,)317 805 y(Pcomptype)11 Xb Fa(operation)p Fq(,)e(Pmatrix)i Fa(matrix)g Fq(\))25 857 Xy(IN)91 b(P\257oat)163 b Fa(costheta)61 b Fq(cosine)11 b(of)g(angle.)25 X907 y(IN)91 b(P\257oat)163 b Fa(sinetheta)51 b Fq(sine)11 b(of)g(angle.)25 X957 y(IN)91 b(ptkeaxistype)49 b Fa(axis)133 b Fq(x,)11 b(y)g(or)g(z)h(axis.) X25 1007 y(IN)91 b(Pcomptype)73 b Fa(operation)47 b Fq(concatenation)11 Xb(operation.)25 1057 y(OUT)50 b(Pmatrix)128 b Fa(matrix)100 Xb Fq(3x3)10 b(matrix.)0 1126 y(This)h(function)f(computes)i(a)f(matrix)g(to) Vg X(perform)g(the)g(speci\256ed)h(2D)f(rotation)f(and)h(concatenates)i(this)d X(matrix)h(with)f Fi(matrix)0 1175 y Fq(on)i(the)g(basis)h(of)f XFi(operation)p Fq(.)21 b(This)12 b(form)g(assumes)i(that)e(the)g(rotation)f X(is)h(speci\256ed)h(using)f(the)g(cos)p Fl(\()p Fk(theta)p XFl(\))g Fq(and)g(sin)o Fl(\()p Fk(theta)p Fl(\))0 1225 y Fq(terms.)k(Note)11 Xb(that)g(no)g(check)h(is)f(made)h(to)f(ensure)h(that)e(the)i(sum)f(of)g(the) Vg X(squares)h(of)f(these)h(terms)g(is)f(1.)p 1516 1321 351 2 v X1516 1400 2 80 v 1530 1375 a Fb(ptk_rotatecs3)p 1864 1400 V X1516 1402 351 2 v 0 1476 a Fq(void)f Fp(ptk_r)o(otatecs3)i XFq(\()25 b(P\257oat)g Fa(costheta)p Fq(,)h(P\257oat)f Fa(sinetheta)p XFq(,)h(ptkeaxistype)e Fa(axis)p Fq(,)338 1526 y(Pcomptype)11 Xb Fa(operation)p Fq(,)e(Pmatrix3)i Fa(matrix)f Fq(\))25 1578 Xy(IN)91 b(P\257oat)163 b Fa(costheta)61 b Fq(cosine)11 b(of)g(angle.)25 X1628 y(IN)91 b(P\257oat)163 b Fa(sinetheta)51 b Fq(sine)11 Xb(of)g(angle.)25 1678 y(IN)91 b(ptkeaxistype)49 b Fa(axis)133 Xb Fq(x,)11 b(y)g(or)g(z)h(axis.)25 1728 y(IN)91 b(Pcomptype)73 Xb Fa(operation)47 b Fq(concatenation)11 b(operation.)25 1777 Xy(OUT)50 b(Pmatrix3)107 b Fa(matrix)100 b Fq(4x4)10 b(matrix.)0 X1846 y(This)h(function)f(computes)i(a)f(matrix)g(to)g(perform)g(the)g X(speci\256ed)h(3D)f(rotation)f(and)h(concatenates)i(this)d(matrix)h(with)f XFi(matrix)0 1896 y Fq(on)i(the)g(basis)h(of)f Fi(operation)p XFq(.)21 b(This)12 b(form)g(assumes)i(that)e(the)g(rotation)f(is)h X(speci\256ed)h(using)f(the)g(cos)p Fl(\()p Fk(theta)p Fl(\))g XFq(and)g(sin)o Fl(\()p Fk(theta)p Fl(\))0 1946 y Fq(terms.)k(Note)11 Xb(that)g(no)g(check)h(is)f(made)h(to)f(ensure)h(that)e(the)i(sum)f(of)g(the) Vg X(squares)h(of)f(these)h(terms)g(is)f(1.)p 1506 2042 361 2 v X1506 2121 2 80 v 1520 2096 a Fb(ptk_rotatelin)o(e)p 1864 2121 XV 1506 2123 361 2 v 0 2197 a Fq(void)f Fp(ptk_r)o(otateline)h XFq(\()h(Ppoint)f(*)p Fa(p1)p Fq(,)h(Ppoint)f(*)p Fa(p2)p Fq(,)h(P\257oat)g XFa(theta)p Fq(,)f(Pcomptype)h Fa(opera-)347 2247 y(tion)p Fq(,)f(Pmatrix)g XFa(matrix)p Fq(,)g(Pint)f(*)p Fa(error)g Fq(\))25 2297 y(IN)91 Xb(Ppoint)10 b(*)96 b Fa(p1)157 b Fq(2D)11 b(point.)25 2347 Xy(IN)91 b(Ppoint)10 b(*)96 b Fa(p2)157 b Fq(2D)11 b(point.)25 X2397 y(IN)91 b(P\257oat)140 b Fa(theta)117 b Fq(angle)11 b(in)g(degrees.)25 X2447 y(IN)91 b(Pcomptype)50 b Fa(operation)d Fq(concatenation)11 Xb(operation.)25 2496 y(OUT)50 b(Pmatrix)105 b Fa(matrix)100 Xb Fq(3x3)10 b(matrix.)25 2546 y(OUT)50 b(Pint)10 b(*)138 b XFa(error)121 b Fq(error)11 b(code.)0 2615 y(This)k(function)f(computes)h(a)h X(matrix)e(to)h(perform)g(a)h(2D)f(rotation)e(of)i Fi(theta)h XFq(degrees)g(about)e(the)h(line)g(connecting)f Fi(p1)i Fq(to)0 X2665 y Fi(p2)p Fq(,)d(and)g(concatenates)g(this)f(matrix)g(with)f XFi(matrix)j Fq(on)e(the)g(basis)g(of)g Fi(operation)p Fq(.)21 Xb(If)12 b(the)g(parameters)i(are)f(invalid,)e Fi(error)0 2715 Xy Fq(is)g(set)h(to)e(-1.)16 b(Otherwise,)11 b(its)g(value)g(is)g XFi(ptkcpcok)p Fq(.)0 2956 y(13th)22 b(May)m(,)12 b(1992)636 Xb(76)839 b(2.01)p eop X%%Page: 77 78 Xbop 0 -137 a Fq(PHIGS)11 b(T)m(oolkit)f(User)i(Manual)1235 Xb(PTK/100)p 1476 -19 391 2 v 1476 60 2 80 v 1490 35 a Fb(ptk_rotateline)o(3) Vp X1864 60 V 1476 62 391 2 v 0 136 a Fq(void)10 b Fp(ptk_r)o(otateline3)h XFq(\()i(Ppoint3)f(*)p Fa(p1)p Fq(,)h(Ppoint3)f(*)p Fa(p2)p XFq(,)h(P\257oat)g Fa(theta)p Fq(,)g(Pcomptype)g Fa(op-)368 X186 y(eration)p Fq(,)d(Pmatrix3)g Fa(matrix)p Fq(,)h(Pint)f(*)p XFa(error)g Fq(\))25 236 y(IN)91 b(Ppoint3)10 b(*)75 b Fa(p1)157 Xb Fq(3D)11 b(point.)25 286 y(IN)91 b(Ppoint3)10 b(*)75 b Fa(p2)157 Xb Fq(3D)11 b(point.)25 336 y(IN)91 b(P\257oat)140 b Fa(theta)117 Xb Fq(angle)11 b(in)g(degrees.)25 386 y(IN)91 b(Pcomptype)50 Xb Fa(operation)d Fq(concatenation)11 b(operation.)25 436 y(OUT)50 Xb(Pmatrix3)84 b Fa(matrix)100 b Fq(4x4)10 b(matrix.)25 485 Xy(OUT)50 b(Pint)10 b(*)138 b Fa(error)121 b Fq(error)11 b(code.)0 X554 y(This)k(function)f(computes)h(a)h(matrix)e(to)h(perform)g(a)h(3D)f X(rotation)e(of)i Fi(theta)h Fq(degrees)g(about)e(the)h(line)g(connecting)f XFi(p1)i Fq(to)0 604 y Fi(p2)p Fq(,)c(and)f(concatenates)i(this)d(matrix)g X(with)h Fi(matrix)h Fq(on)f(the)g(basis)g(of)g Fi(operation)i XFq(\(`5B12)o(`5D,)e(pages)h(55\26159\).)i(If)d(the)g(parameters)0 X654 y(are)h(invalid,)e Fi(error)i Fq(is)g(set)f(to)g(-1.)k(Otherwise,)c(its) Vg X(value)g(is)g Fi(ptkcpcok)p Fq(.)p 1536 751 331 2 v 1536 830 X2 80 v 1550 805 a Fb(ptk_rotatevv)p 1864 830 V 1536 832 331 X2 v 0 906 a Fq(void)f Fp(ptk_r)o(otatevv)h Fq(\()j(Ppoint)f(*)p XFa(v1)p Fq(,)h(Ppoint)f(*)p Fa(v2)p Fq(,)h(Pcomptype)g Fa(operation)p XFq(,)f(Pmatrix)324 956 y Fa(matrix)p Fq(,)e(Pint)f(*)p Fa(error)g XFq(\))25 1007 y(IN)91 b(Ppoint)10 b(*)96 b Fa(v1)159 b Fq(2D)11 Xb(vector)n(.)25 1056 y(IN)91 b(Ppoint)10 b(*)96 b Fa(v2)159 Xb Fq(2D)11 b(vector)n(.)25 1106 y(IN)91 b(Pcomptype)50 b Fa(operation)d XFq(concatenation)11 b(operation.)25 1156 y(OUT)50 b(Pmatrix)105 Xb Fa(matrix)100 b Fq(3x3)10 b(matrix.)25 1206 y(OUT)50 b(Pint)10 Xb(*)138 b Fa(error)121 b Fq(error)11 b(code.)0 1275 y(This)g(function)f X(computes)i(a)g(matrix)f(to)g(perform)h(the)f(rotation)f(\(about)g(the)i X(origin\))d(of)j(the)f(3D)g(vector)h Fi(v1)g Fq(to)f(the)g(3D)g(vector)0 X1325 y Fi(v2)p Fq(,)h(and)f(concatenates)i(this)d(matrix)g(with)h +-+-+-+-+-+-+-+- END OF PART 106 +-+-+-+-+-+-+-+-