Hex Artifact Content

Not logged in

Artifact 2818c66b17c430a299245e843a184aac21b757d9:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0d 0a 2a 20 20 20 20  ********\..*    
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0060: 20 20 20 20 20 20 20 20 20 20 64 33 64 78 31 30            d3dx10
0070: 6d 61 74 68 2e 64 20 20 20 20 20 20 20 20 20 20  math.d          
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20 20     *..*         
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0d                *.
00e0: 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .*              
00f0: 20 20 20 20 20 20 20 20 20 57 69 6e 64 6f 77 73           Windows
0100: 20 41 50 49 20 68 65 61 64 65 72 20 6d 6f 64 75   API header modu
0110: 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20  le              
0120: 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 20 20 20           *..*   
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20      *..*        
0180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
0190: 6c 61 63 65 64 20 69 6e 74 6f 20 70 75 62 6c 69  laced into publi
01a0: 63 20 64 6f 6d 61 69 6e 20 20 20 20 20 20 20 20  c domain        
01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a                 *
01c0: 0d 0a 5c 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ..\*************
01d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
01e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
01f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0200: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 6d 6f 64  **********/..mod
0210: 75 6c 65 20 77 69 6e 33 32 2e 64 69 72 65 63 74  ule win32.direct
0220: 78 2e 64 33 64 78 31 30 6d 61 74 68 3b 0d 0a 0d  x.d3dx10math;...
0230: 0a 76 65 72 73 69 6f 6e 28 54 61 6e 67 6f 29 20  .version(Tango) 
0240: 7b 0d 0a 20 20 20 20 69 6d 70 6f 72 74 20 74 61  {..    import ta
0250: 6e 67 6f 2e 6d 61 74 68 2e 4d 61 74 68 3b 0d 0a  ngo.math.Math;..
0260: 20 20 20 20 61 6c 69 61 73 20 73 71 72 74 20 73      alias sqrt s
0270: 71 72 74 66 3b 0d 0a 7d 20 65 6c 73 65 20 7b 0d  qrtf;..} else {.
0280: 0a 20 20 20 20 76 65 72 73 69 6f 6e 20 28 44 5f  .    version (D_
0290: 56 65 72 73 69 6f 6e 32 29 0d 0a 20 20 20 20 20  Version2)..     
02a0: 20 20 20 69 6d 70 6f 72 74 20 63 6f 72 65 2e 73     import core.s
02b0: 74 64 63 2e 6d 61 74 68 3b 0d 0a 20 20 20 20 65  tdc.math;..    e
02c0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 69 6d 70  lse..        imp
02d0: 6f 72 74 20 73 74 64 2e 63 2e 6d 61 74 68 3b 0d  ort std.c.math;.
02e0: 0a 7d 0d 0a 0d 0a 70 72 69 76 61 74 65 20 69 6d  .}....private im
02f0: 70 6f 72 74 20 77 69 6e 33 32 2e 77 69 6e 64 6f  port win32.windo
0300: 77 73 3b 0d 0a 70 72 69 76 61 74 65 20 69 6d 70  ws;..private imp
0310: 6f 72 74 20 77 69 6e 33 32 2e 64 69 72 65 63 74  ort win32.direct
0320: 78 2e 64 33 64 78 31 30 3b 0d 0a 0d 0a 73 74 72  x.d3dx10;....str
0330: 75 63 74 20 44 33 44 56 45 43 54 4f 52 20 7b 0d  uct D3DVECTOR {.
0340: 0a 09 66 6c 6f 61 74 20 78 3b 0d 0a 09 66 6c 6f  ..float x;...flo
0350: 61 74 20 79 3b 0d 0a 09 66 6c 6f 61 74 20 7a 3b  at y;...float z;
0360: 0d 0a 7d 0d 0a 0d 0a 73 74 72 75 63 74 20 44 33  ..}....struct D3
0370: 44 4d 41 54 52 49 58 20 7b 0d 0a 09 75 6e 69 6f  DMATRIX {...unio
0380: 6e 20 7b 0d 0a 09 09 73 74 72 75 63 74 20 7b 0d  n {....struct {.
0390: 0a 09 09 09 66 6c 6f 61 74 20 5f 31 31 2c 20 5f  ....float _11, _
03a0: 31 32 2c 20 5f 31 33 2c 20 5f 31 34 3b 0d 0a 09  12, _13, _14;...
03b0: 09 09 66 6c 6f 61 74 20 5f 32 31 2c 20 5f 32 32  ..float _21, _22
03c0: 2c 20 5f 32 33 2c 20 5f 32 34 3b 0d 0a 09 09 09  , _23, _24;.....
03d0: 66 6c 6f 61 74 20 5f 33 31 2c 20 5f 33 32 2c 20  float _31, _32, 
03e0: 5f 33 33 2c 20 5f 33 34 3b 0d 0a 09 09 09 66 6c  _33, _34;.....fl
03f0: 6f 61 74 20 5f 34 31 2c 20 5f 34 32 2c 20 5f 34  oat _41, _42, _4
0400: 33 2c 20 5f 34 34 3b 0d 0a 09 09 7d 0d 0a 09 09  3, _44;....}....
0410: 66 6c 6f 61 74 5b 34 5d 5b 34 5d 20 6d 3b 0d 0a  float[4][4] m;..
0420: 09 7d 0d 0a 7d 0d 0a 0d 0a 63 6f 6e 73 74 20 44  .}..}....const D
0430: 33 44 58 5f 50 49 20 3d 20 33 2e 31 34 31 35 39  3DX_PI = 3.14159
0440: 32 36 35 33 35 38 39 37 39 33 32 33 38 34 36 3b  265358979323846;
0450: 0d 0a 63 6f 6e 73 74 20 44 33 44 58 5f 31 42 59  ..const D3DX_1BY
0460: 50 49 20 3d 20 31 2e 30 20 2f 20 44 33 44 58 5f  PI = 1.0 / D3DX_
0470: 50 49 3b 0d 0a 0d 0a 66 6c 6f 61 74 20 44 33 44  PI;....float D3D
0480: 58 54 6f 52 61 64 69 61 6e 28 66 6c 6f 61 74 20  XToRadian(float 
0490: 64 65 67 72 65 65 29 20 7b 0d 0a 09 72 65 74 75  degree) {...retu
04a0: 72 6e 20 64 65 67 72 65 65 20 2a 20 28 44 33 44  rn degree * (D3D
04b0: 58 5f 50 49 20 2f 20 31 38 30 2e 30 29 3b 0d 0a  X_PI / 180.0);..
04c0: 7d 0d 0a 0d 0a 66 6c 6f 61 74 20 44 33 44 58 54  }....float D3DXT
04d0: 6f 44 65 67 72 65 65 28 66 6c 6f 61 74 20 72 61  oDegree(float ra
04e0: 64 69 61 6e 29 20 7b 0d 0a 09 72 65 74 75 72 6e  dian) {...return
04f0: 20 72 61 64 69 61 6e 20 2a 20 28 31 38 30 2e 30   radian * (180.0
0500: 20 2f 20 44 33 44 58 5f 50 49 29 3b 0d 0a 7d 0d   / D3DX_PI);..}.
0510: 0a 0d 0a 63 6f 6e 73 74 20 44 33 44 58 5f 31 36  ...const D3DX_16
0520: 46 5f 44 49 47 09 09 09 3d 20 33 3b 0d 0a 63 6f  F_DIG...= 3;..co
0530: 6e 73 74 20 44 33 44 58 5f 31 36 46 5f 45 50 53  nst D3DX_16F_EPS
0540: 49 4c 4f 4e 09 09 3d 20 34 2e 38 38 37 35 38 30  ILON..= 4.887580
0550: 39 65 2d 34 66 3b 0d 0a 63 6f 6e 73 74 20 44 33  9e-4f;..const D3
0560: 44 58 5f 31 36 46 5f 4d 41 4e 54 5f 44 49 47 09  DX_16F_MANT_DIG.
0570: 09 3d 20 31 31 3b 0d 0a 63 6f 6e 73 74 20 44 33  .= 11;..const D3
0580: 44 58 5f 31 36 46 5f 4d 41 58 09 09 09 3d 20 36  DX_16F_MAX...= 6
0590: 2e 35 35 30 34 30 30 65 2b 30 30 34 3b 0d 0a 63  .550400e+004;..c
05a0: 6f 6e 73 74 20 44 33 44 58 5f 31 36 46 5f 4d 41  onst D3DX_16F_MA
05b0: 58 5f 31 30 5f 45 58 50 09 3d 20 34 3b 0d 0a 63  X_10_EXP.= 4;..c
05c0: 6f 6e 73 74 20 44 33 44 58 5f 31 36 46 5f 4d 41  onst D3DX_16F_MA
05d0: 58 5f 45 58 50 09 09 3d 20 31 35 3b 0d 0a 63 6f  X_EXP..= 15;..co
05e0: 6e 73 74 20 44 33 44 58 5f 31 36 46 5f 4d 49 4e  nst D3DX_16F_MIN
05f0: 09 09 09 3d 20 36 2e 31 30 33 35 31 35 36 65 2d  ...= 6.1035156e-
0600: 35 66 3b 0d 0a 63 6f 6e 73 74 20 44 33 44 58 5f  5f;..const D3DX_
0610: 31 36 46 5f 4d 49 4e 5f 31 30 5f 45 58 50 09 3d  16F_MIN_10_EXP.=
0620: 20 2d 34 3b 0d 0a 63 6f 6e 73 74 20 44 33 44 58   -4;..const D3DX
0630: 5f 31 36 46 5f 4d 49 4e 5f 45 58 50 09 09 3d 20  _16F_MIN_EXP..= 
0640: 2d 31 34 3b 0d 0a 63 6f 6e 73 74 20 44 33 44 58  -14;..const D3DX
0650: 5f 31 36 46 5f 52 41 44 49 58 09 09 3d 20 32 3b  _16F_RADIX..= 2;
0660: 0d 0a 63 6f 6e 73 74 20 44 33 44 58 5f 31 36 46  ..const D3DX_16F
0670: 5f 52 4f 55 4e 44 53 09 09 3d 20 31 3b 0d 0a 63  _ROUNDS..= 1;..c
0680: 6f 6e 73 74 20 44 33 44 58 5f 31 36 46 5f 53 49  onst D3DX_16F_SI
0690: 47 4e 5f 4d 41 53 4b 09 3d 20 30 78 38 30 30 30  GN_MASK.= 0x8000
06a0: 3b 0d 0a 63 6f 6e 73 74 20 44 33 44 58 5f 31 36  ;..const D3DX_16
06b0: 46 5f 45 58 50 5f 4d 41 53 4b 09 09 3d 20 30 78  F_EXP_MASK..= 0x
06c0: 37 43 30 30 3b 0d 0a 63 6f 6e 73 74 20 44 33 44  7C00;..const D3D
06d0: 58 5f 31 36 46 5f 46 52 41 43 5f 4d 41 53 4b 09  X_16F_FRAC_MASK.
06e0: 3d 20 30 78 30 33 46 46 3b 0d 0a 0d 0a 73 74 72  = 0x03FF;....str
06f0: 75 63 74 20 44 33 44 58 46 4c 4f 41 54 31 36 20  uct D3DXFLOAT16 
0700: 7b 0d 0a 09 2f 2f 54 4f 44 4f 0d 0a 70 72 6f 74  {...//TODO..prot
0710: 65 63 74 65 64 3a 0d 0a 20 20 20 20 57 4f 52 44  ected:..    WORD
0720: 20 76 61 6c 75 65 3b 0d 0a 7d 0d 0a 0d 0a 73 74   value;..}....st
0730: 72 75 63 74 20 44 33 44 58 56 45 43 54 4f 52 32  ruct D3DXVECTOR2
0740: 20 7b 0d 0a 09 2f 2f 54 4f 44 4f 0d 0a 09 66 6c   {...//TODO...fl
0750: 6f 61 74 20 78 2c 20 79 3b 0d 0a 7d 0d 0a 0d 0a  oat x, y;..}....
0760: 73 74 72 75 63 74 20 44 33 44 58 56 45 43 54 4f  struct D3DXVECTO
0770: 52 32 5f 31 36 46 20 7b 0d 0a 09 2f 2f 54 4f 44  R2_16F {...//TOD
0780: 4f 0d 0a 09 44 33 44 58 46 4c 4f 41 54 31 36 20  O...D3DXFLOAT16 
0790: 78 2c 20 79 3b 0d 0a 7d 0d 0a 0d 0a 73 74 72 75  x, y;..}....stru
07a0: 63 74 20 44 33 44 58 56 45 43 54 4f 52 33 20 7b  ct D3DXVECTOR3 {
07b0: 0d 0a 09 2f 2f 54 4f 44 4f 0d 0a 09 66 6c 6f 61  ...//TODO...floa
07c0: 74 20 78 2c 20 79 2c 20 7a 3b 0d 0a 7d 0d 0a 0d  t x, y, z;..}...
07d0: 0a 73 74 72 75 63 74 20 44 33 44 58 56 45 43 54  .struct D3DXVECT
07e0: 4f 52 33 5f 31 36 46 20 7b 0d 0a 09 2f 2f 54 4f  OR3_16F {...//TO
07f0: 44 4f 0d 0a 09 44 33 44 58 46 4c 4f 41 54 31 36  DO...D3DXFLOAT16
0800: 20 78 2c 20 79 2c 20 7a 3b 0d 0a 7d 0d 0a 0d 0a   x, y, z;..}....
0810: 73 74 72 75 63 74 20 44 33 44 58 56 45 43 54 4f  struct D3DXVECTO
0820: 52 34 20 7b 0d 0a 09 2f 2f 54 4f 44 4f 0d 0a 09  R4 {...//TODO...
0830: 66 6c 6f 61 74 20 78 2c 20 79 2c 20 7a 2c 20 77  float x, y, z, w
0840: 3b 0d 0a 7d 0d 0a 0d 0a 73 74 72 75 63 74 20 44  ;..}....struct D
0850: 33 44 58 56 45 43 54 4f 52 34 5f 31 36 46 20 7b  3DXVECTOR4_16F {
0860: 0d 0a 09 2f 2f 54 4f 44 4f 0d 0a 09 44 33 44 58  ...//TODO...D3DX
0870: 46 4c 4f 41 54 31 36 20 78 2c 20 79 2c 20 7a 2c  FLOAT16 x, y, z,
0880: 20 77 3b 0d 0a 7d 0d 0a 0d 0a 73 74 72 75 63 74   w;..}....struct
0890: 20 44 33 44 58 4d 41 54 52 49 58 20 7b 0d 0a 09   D3DXMATRIX {...
08a0: 2f 2f 54 4f 44 4f 0d 0a 09 75 6e 69 6f 6e 20 7b  //TODO...union {
08b0: 0d 0a 09 09 73 74 72 75 63 74 20 7b 0d 0a 09 09  ....struct {....
08c0: 09 66 6c 6f 61 74 20 5f 31 31 2c 20 5f 31 32 2c  .float _11, _12,
08d0: 20 5f 31 33 2c 20 5f 31 34 3b 0d 0a 09 09 09 66   _13, _14;.....f
08e0: 6c 6f 61 74 20 5f 32 31 2c 20 5f 32 32 2c 20 5f  loat _21, _22, _
08f0: 32 33 2c 20 5f 32 34 3b 0d 0a 09 09 09 66 6c 6f  23, _24;.....flo
0900: 61 74 20 5f 33 31 2c 20 5f 33 32 2c 20 5f 33 33  at _31, _32, _33
0910: 2c 20 5f 33 34 3b 0d 0a 09 09 09 66 6c 6f 61 74  , _34;.....float
0920: 20 5f 34 31 2c 20 5f 34 32 2c 20 5f 34 33 2c 20   _41, _42, _43, 
0930: 5f 34 34 3b 0d 0a 09 09 7d 0d 0a 09 09 66 6c 6f  _44;....}....flo
0940: 61 74 5b 34 5d 5b 34 5d 20 6d 3b 0d 0a 09 7d 0d  at[4][4] m;...}.
0950: 0a 7d 0d 0a 0d 0a 2f 2f 54 4f 44 4f 20 73 74 72  .}....//TODO str
0960: 75 63 74 20 5f 44 33 44 58 4d 41 54 52 49 58 41  uct _D3DXMATRIXA
0970: 31 36 20 3a 20 44 33 44 58 4d 41 54 52 49 58 0d  16 : D3DXMATRIX.
0980: 0a 0d 0a 73 74 72 75 63 74 20 44 33 44 58 51 55  ...struct D3DXQU
0990: 41 54 45 52 4e 49 4f 4e 20 7b 0d 0a 09 2f 2f 54  ATERNION {...//T
09a0: 4f 44 4f 0d 0a 09 66 6c 6f 61 74 20 78 2c 20 79  ODO...float x, y
09b0: 2c 20 7a 2c 20 77 3b 0d 0a 7d 0d 0a 0d 0a 73 74  , z, w;..}....st
09c0: 72 75 63 74 20 44 33 44 58 50 4c 41 4e 45 20 7b  ruct D3DXPLANE {
09d0: 0d 0a 09 2f 2f 54 4f 44 4f 0d 0a 09 66 6c 6f 61  ...//TODO...floa
09e0: 74 20 61 2c 20 62 2c 20 63 2c 20 64 3b 0d 0a 7d  t a, b, c, d;..}
09f0: 0d 0a 0d 0a 73 74 72 75 63 74 20 44 33 44 58 43  ....struct D3DXC
0a00: 4f 4c 4f 52 20 7b 0d 0a 09 2f 2f 54 4f 44 4f 0d  OLOR {...//TODO.
0a10: 0a 09 66 6c 6f 61 74 20 72 2c 20 67 2c 20 62 2c  ..float r, g, b,
0a20: 20 61 3b 0d 0a 7d 0d 0a 0d 0a 65 78 74 65 72 6e   a;..}....extern
0a30: 28 57 69 6e 64 6f 77 73 29 20 7b 0d 0a 09 44 33  (Windows) {...D3
0a40: 44 58 46 4c 4f 41 54 31 36 2a 20 44 33 44 58 46  DXFLOAT16* D3DXF
0a50: 6c 6f 61 74 33 32 54 6f 31 36 41 72 72 61 79 28  loat32To16Array(
0a60: 44 33 44 58 46 4c 4f 41 54 31 36 2a 20 70 4f 75  D3DXFLOAT16* pOu
0a70: 74 2c 20 66 6c 6f 61 74 2a 20 70 49 6e 2c 20 55  t, float* pIn, U
0a80: 49 4e 54 20 6e 29 3b 0d 0a 09 66 6c 6f 61 74 2a  INT n);...float*
0a90: 20 44 33 44 58 46 6c 6f 61 74 31 36 54 6f 33 32   D3DXFloat16To32
0aa0: 41 72 72 61 79 28 66 6c 6f 61 74 2a 20 70 4f 75  Array(float* pOu
0ab0: 74 2c 20 44 33 44 58 46 4c 4f 41 54 31 36 2a 20  t, D3DXFLOAT16* 
0ac0: 70 49 6e 2c 20 55 49 4e 54 20 6e 29 3b 0d 0a 7d  pIn, UINT n);..}
0ad0: 0d 0a 0d 0a 66 6c 6f 61 74 20 44 33 44 58 56 65  ....float D3DXVe
0ae0: 63 32 4c 65 6e 67 74 68 28 44 33 44 58 56 45 43  c2Length(D3DXVEC
0af0: 54 4f 52 32 2a 20 70 56 29 20 7b 0d 0a 09 64 65  TOR2* pV) {...de
0b00: 62 75 67 28 44 33 44 58 31 30 5f 44 45 42 55 47  bug(D3DX10_DEBUG
0b10: 29 20 7b 0d 0a 09 09 69 66 20 28 70 56 20 69 73  ) {....if (pV is
0b20: 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 30 2e   null) return 0.
0b30: 30 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e 20  0;...}...return 
0b40: 73 71 72 74 66 28 28 70 56 2e 78 20 2a 20 70 56  sqrtf((pV.x * pV
0b50: 2e 78 29 20 2b 20 28 70 56 2e 79 20 2a 20 70 56  .x) + (pV.y * pV
0b60: 2e 79 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f 61  .y));..}....floa
0b70: 74 20 44 33 44 58 56 65 63 32 4c 65 6e 67 74 68  t D3DXVec2Length
0b80: 53 71 28 44 33 44 58 56 45 43 54 4f 52 32 2a 20  Sq(D3DXVECTOR2* 
0b90: 70 56 29 20 7b 0d 0a 09 64 65 62 75 67 28 44 33  pV) {...debug(D3
0ba0: 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09  DX10_DEBUG) {...
0bb0: 09 69 66 20 28 70 56 20 69 73 20 6e 75 6c 6c 29  .if (pV is null)
0bc0: 20 72 65 74 75 72 6e 20 30 2e 30 3b 0d 0a 09 7d   return 0.0;...}
0bd0: 0d 0a 09 72 65 74 75 72 6e 20 28 70 56 2e 78 20  ...return (pV.x 
0be0: 2a 20 70 56 2e 78 29 20 2b 20 28 70 56 2e 79 20  * pV.x) + (pV.y 
0bf0: 2a 20 70 56 2e 79 29 3b 0d 0a 7d 0d 0a 0d 0a 66  * pV.y);..}....f
0c00: 6c 6f 61 74 20 44 33 44 58 56 65 63 32 44 6f 74  loat D3DXVec2Dot
0c10: 28 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70 56  (D3DXVECTOR2* pV
0c20: 31 2c 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20  1, D3DXVECTOR2* 
0c30: 70 56 32 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  pV2) {...debug(D
0c40: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
0c50: 09 09 69 66 20 28 28 70 56 31 20 69 73 20 6e 75  ..if ((pV1 is nu
0c60: 6c 6c 29 20 7c 7c 20 28 70 56 32 20 69 73 20 6e  ll) || (pV2 is n
0c70: 75 6c 6c 29 29 20 72 65 74 75 72 6e 20 30 2e 30  ull)) return 0.0
0c80: 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e 20 28  ;...}...return (
0c90: 70 56 31 2e 78 20 2a 20 70 56 32 2e 78 29 20 2b  pV1.x * pV2.x) +
0ca0: 20 28 70 56 31 2e 79 20 2a 20 70 56 32 2e 79 29   (pV1.y * pV2.y)
0cb0: 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f 61 74 20 44 33  ;..}....float D3
0cc0: 44 58 56 65 63 32 43 43 57 28 44 33 44 58 56 45  DXVec2CCW(D3DXVE
0cd0: 43 54 4f 52 32 2a 20 70 56 31 2c 20 44 33 44 58  CTOR2* pV1, D3DX
0ce0: 56 45 43 54 4f 52 32 2a 20 70 56 32 29 20 7b 0d  VECTOR2* pV2) {.
0cf0: 0a 09 64 65 62 75 67 28 44 33 44 58 31 30 5f 44  ..debug(D3DX10_D
0d00: 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 20 28 28  EBUG) {....if ((
0d10: 70 56 31 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20  pV1 is null) || 
0d20: 28 70 56 32 20 69 73 20 6e 75 6c 6c 29 29 20 72  (pV2 is null)) r
0d30: 65 74 75 72 6e 20 30 2e 30 3b 0d 0a 09 7d 0d 0a  eturn 0.0;...}..
0d40: 09 72 65 74 75 72 6e 20 28 70 56 31 2e 78 20 2a  .return (pV1.x *
0d50: 20 70 56 32 2e 79 29 20 2b 20 28 70 56 31 2e 79   pV2.y) + (pV1.y
0d60: 20 2a 20 70 56 32 2e 78 29 3b 0d 0a 7d 0d 0a 0d   * pV2.x);..}...
0d70: 0a 44 33 44 58 56 45 43 54 4f 52 32 2a 20 44 33  .D3DXVECTOR2* D3
0d80: 44 58 56 65 63 32 41 64 64 28 44 33 44 58 56 45  DXVec2Add(D3DXVE
0d90: 43 54 4f 52 32 2a 20 70 4f 75 74 2c 20 44 33 44  CTOR2* pOut, D3D
0da0: 58 56 45 43 54 4f 52 32 2a 20 70 56 31 2c 20 44  XVECTOR2* pV1, D
0db0: 33 44 58 56 45 43 54 4f 52 32 2a 20 70 56 32 29  3DXVECTOR2* pV2)
0dc0: 20 7b 0d 0a 09 64 65 62 75 67 28 44 33 44 58 31   {...debug(D3DX1
0dd0: 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09 69 66  0_DEBUG) {....if
0de0: 20 28 28 70 4f 75 74 20 69 73 20 6e 75 6c 6c 29   ((pOut is null)
0df0: 20 7c 7c 20 28 70 56 31 20 69 73 20 6e 75 6c 6c   || (pV1 is null
0e00: 29 20 7c 7c 20 28 70 56 32 20 69 73 20 6e 75 6c  ) || (pV2 is nul
0e10: 6c 29 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b  l)) return null;
0e20: 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e 78 20 3d 20  ...}...pOut.x = 
0e30: 70 56 31 2e 78 20 2b 20 70 56 32 2e 78 3b 0d 0a  pV1.x + pV2.x;..
0e40: 09 70 4f 75 74 2e 79 20 3d 20 70 56 31 2e 79 20  .pOut.y = pV1.y 
0e50: 2b 20 70 56 32 2e 79 3b 0d 0a 09 72 65 74 75 72  + pV2.y;...retur
0e60: 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33  n pOut;..}....D3
0e70: 44 58 56 45 43 54 4f 52 32 2a 20 44 33 44 58 56  DXVECTOR2* D3DXV
0e80: 65 63 32 53 75 62 74 72 61 63 74 28 44 33 44 58  ec2Subtract(D3DX
0e90: 56 45 43 54 4f 52 32 2a 20 70 4f 75 74 2c 20 44  VECTOR2* pOut, D
0ea0: 33 44 58 56 45 43 54 4f 52 32 2a 20 70 56 31 2c  3DXVECTOR2* pV1,
0eb0: 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70 56   D3DXVECTOR2* pV
0ec0: 32 29 20 7b 0d 0a 09 64 65 62 75 67 28 44 33 44  2) {...debug(D3D
0ed0: 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09  X10_DEBUG) {....
0ee0: 69 66 20 28 28 70 4f 75 74 20 69 73 20 6e 75 6c  if ((pOut is nul
0ef0: 6c 29 20 7c 7c 20 28 70 56 31 20 69 73 20 6e 75  l) || (pV1 is nu
0f00: 6c 6c 29 20 7c 7c 20 28 70 56 32 20 69 73 20 6e  ll) || (pV2 is n
0f10: 75 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e 75 6c  ull)) return nul
0f20: 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e 78 20  l;...}...pOut.x 
0f30: 3d 20 70 56 31 2e 78 20 2d 20 70 56 32 2e 78 3b  = pV1.x - pV2.x;
0f40: 0d 0a 09 70 4f 75 74 2e 79 20 3d 20 70 56 31 2e  ...pOut.y = pV1.
0f50: 79 20 2d 20 70 56 32 2e 79 3b 0d 0a 09 72 65 74  y - pV2.y;...ret
0f60: 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a  urn pOut;..}....
0f70: 44 33 44 58 56 45 43 54 4f 52 32 2a 20 44 33 44  D3DXVECTOR2* D3D
0f80: 58 56 65 63 32 4d 69 6e 69 6d 69 7a 65 28 44 33  XVec2Minimize(D3
0f90: 44 58 56 45 43 54 4f 52 32 2a 20 70 4f 75 74 2c  DXVECTOR2* pOut,
0fa0: 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70 56   D3DXVECTOR2* pV
0fb0: 31 2c 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20  1, D3DXVECTOR2* 
0fc0: 70 56 32 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  pV2) {...debug(D
0fd0: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
0fe0: 09 09 69 66 20 28 28 70 4f 75 74 20 69 73 20 6e  ..if ((pOut is n
0ff0: 75 6c 6c 29 20 7c 7c 20 28 70 56 31 20 69 73 20  ull) || (pV1 is 
1000: 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 32 20 69 73  null) || (pV2 is
1010: 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e   null)) return n
1020: 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e  ull;...}...pOut.
1030: 78 20 3d 20 70 56 31 2e 78 20 3c 20 70 56 32 2e  x = pV1.x < pV2.
1040: 78 20 3f 20 70 56 31 2e 78 20 3a 20 70 56 32 2e  x ? pV1.x : pV2.
1050: 78 3b 0d 0a 09 70 4f 75 74 2e 79 20 3d 20 70 56  x;...pOut.y = pV
1060: 31 2e 79 20 3c 20 70 56 32 2e 79 20 3f 20 70 56  1.y < pV2.y ? pV
1070: 31 2e 79 20 3a 20 70 56 32 2e 79 3b 0d 0a 09 72  1.y : pV2.y;...r
1080: 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a  eturn pOut;..}..
1090: 0d 0a 44 33 44 58 56 45 43 54 4f 52 32 2a 20 44  ..D3DXVECTOR2* D
10a0: 33 44 58 56 65 63 32 4d 61 78 69 6d 69 7a 65 28  3DXVec2Maximize(
10b0: 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70 4f 75  D3DXVECTOR2* pOu
10c0: 74 2c 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20  t, D3DXVECTOR2* 
10d0: 70 56 31 2c 20 44 33 44 58 56 45 43 54 4f 52 32  pV1, D3DXVECTOR2
10e0: 2a 20 70 56 32 29 20 7b 0d 0a 09 64 65 62 75 67  * pV2) {...debug
10f0: 28 44 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b  (D3DX10_DEBUG) {
1100: 0d 0a 09 09 69 66 20 28 28 70 4f 75 74 20 69 73  ....if ((pOut is
1110: 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 31 20 69   null) || (pV1 i
1120: 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 32 20  s null) || (pV2 
1130: 69 73 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e  is null)) return
1140: 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75   null;...}...pOu
1150: 74 2e 78 20 3d 20 70 56 31 2e 78 20 3e 20 70 56  t.x = pV1.x > pV
1160: 32 2e 78 20 3f 20 70 56 31 2e 78 20 3a 20 70 56  2.x ? pV1.x : pV
1170: 32 2e 78 3b 0d 0a 09 70 4f 75 74 2e 79 20 3d 20  2.x;...pOut.y = 
1180: 70 56 31 2e 79 20 3e 20 70 56 32 2e 79 20 3f 20  pV1.y > pV2.y ? 
1190: 70 56 31 2e 79 20 3a 20 70 56 32 2e 79 3b 0d 0a  pV1.y : pV2.y;..
11a0: 09 72 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d  .return pOut;..}
11b0: 0d 0a 0d 0a 44 33 44 58 56 45 43 54 4f 52 32 2a  ....D3DXVECTOR2*
11c0: 20 44 33 44 58 56 65 63 32 53 63 61 6c 65 28 44   D3DXVec2Scale(D
11d0: 33 44 58 56 45 43 54 4f 52 32 2a 20 70 4f 75 74  3DXVECTOR2* pOut
11e0: 2c 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70  , D3DXVECTOR2* p
11f0: 56 2c 20 66 6c 6f 61 74 20 73 29 20 7b 0d 0a 09  V, float s) {...
1200: 64 65 62 75 67 28 44 33 44 58 31 30 5f 44 45 42  debug(D3DX10_DEB
1210: 55 47 29 20 7b 0d 0a 09 09 69 66 20 28 28 70 4f  UG) {....if ((pO
1220: 75 74 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28  ut is null) || (
1230: 70 56 20 69 73 20 6e 75 6c 6c 29 29 20 72 65 74  pV is null)) ret
1240: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09  urn null;...}...
1250: 70 4f 75 74 2e 78 20 3d 20 70 56 2e 78 20 2a 20  pOut.x = pV.x * 
1260: 73 3b 0d 0a 09 70 4f 75 74 2e 79 20 3d 20 70 56  s;...pOut.y = pV
1270: 2e 79 20 2a 20 73 3b 0d 0a 09 72 65 74 75 72 6e  .y * s;...return
1280: 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44   pOut;..}....D3D
1290: 58 56 45 43 54 4f 52 32 2a 20 44 33 44 58 56 65  XVECTOR2* D3DXVe
12a0: 63 32 4c 65 72 70 28 44 33 44 58 56 45 43 54 4f  c2Lerp(D3DXVECTO
12b0: 52 32 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45  R2* pOut, D3DXVE
12c0: 43 54 4f 52 32 2a 20 70 56 31 2c 20 44 33 44 58  CTOR2* pV1, D3DX
12d0: 56 45 43 54 4f 52 32 2a 20 70 56 32 2c 20 66 6c  VECTOR2* pV2, fl
12e0: 6f 61 74 20 73 29 20 7b 0d 0a 09 64 65 62 75 67  oat s) {...debug
12f0: 28 44 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b  (D3DX10_DEBUG) {
1300: 0d 0a 09 09 69 66 20 28 28 70 4f 75 74 20 69 73  ....if ((pOut is
1310: 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 31 20 69   null) || (pV1 i
1320: 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 32 20  s null) || (pV2 
1330: 69 73 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e  is null)) return
1340: 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75   null;...}...pOu
1350: 74 2e 78 20 3d 20 70 56 31 2e 78 20 2b 20 73 20  t.x = pV1.x + s 
1360: 2a 20 28 70 56 32 2e 78 20 2d 20 70 56 31 2e 78  * (pV2.x - pV1.x
1370: 29 3b 0d 0a 09 70 4f 75 74 2e 79 20 3d 20 70 56  );...pOut.y = pV
1380: 31 2e 79 20 2b 20 73 20 2a 20 28 70 56 32 2e 79  1.y + s * (pV2.y
1390: 20 2d 20 70 56 31 2e 79 29 3b 0d 0a 09 72 65 74   - pV1.y);...ret
13a0: 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a  urn pOut;..}....
13b0: 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20  extern(Windows) 
13c0: 7b 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 32 2a  {...D3DXVECTOR2*
13d0: 20 44 33 44 58 56 65 63 32 4e 6f 72 6d 61 6c 69   D3DXVec2Normali
13e0: 7a 65 28 44 33 44 58 56 45 43 54 4f 52 32 2a 20  ze(D3DXVECTOR2* 
13f0: 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52  pOut, D3DXVECTOR
1400: 32 2a 20 70 56 29 3b 0d 0a 09 44 33 44 58 56 45  2* pV);...D3DXVE
1410: 43 54 4f 52 32 2a 20 44 33 44 58 56 65 63 32 48  CTOR2* D3DXVec2H
1420: 65 72 6d 69 74 65 28 44 33 44 58 56 45 43 54 4f  ermite(D3DXVECTO
1430: 52 32 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45  R2* pOut, D3DXVE
1440: 43 54 4f 52 32 2a 20 70 56 31 2c 20 44 33 44 58  CTOR2* pV1, D3DX
1450: 56 45 43 54 4f 52 32 2a 20 70 54 31 2c 20 44 33  VECTOR2* pT1, D3
1460: 44 58 56 45 43 54 4f 52 32 2a 20 70 56 32 2c 20  DXVECTOR2* pV2, 
1470: 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70 54 32  D3DXVECTOR2* pT2
1480: 2c 20 66 6c 6f 61 74 20 73 29 3b 0d 0a 09 44 33  , float s);...D3
1490: 44 58 56 45 43 54 4f 52 32 2a 20 44 33 44 58 56  DXVECTOR2* D3DXV
14a0: 65 63 32 43 61 74 6d 75 6c 6c 52 6f 6d 28 44 33  ec2CatmullRom(D3
14b0: 44 58 56 45 43 54 4f 52 32 2a 20 70 4f 75 74 2c  DXVECTOR2* pOut,
14c0: 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70 56   D3DXVECTOR2* pV
14d0: 30 2c 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20  0, D3DXVECTOR2* 
14e0: 70 56 31 2c 20 44 33 44 58 56 45 43 54 4f 52 32  pV1, D3DXVECTOR2
14f0: 2a 20 70 56 32 2c 20 44 33 44 58 56 45 43 54 4f  * pV2, D3DXVECTO
1500: 52 32 2a 20 70 56 33 2c 20 66 6c 6f 61 74 20 73  R2* pV3, float s
1510: 29 3b 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 32  );...D3DXVECTOR2
1520: 2a 20 44 33 44 58 56 65 63 32 42 61 72 79 43 65  * D3DXVec2BaryCe
1530: 6e 74 72 69 63 28 44 33 44 58 56 45 43 54 4f 52  ntric(D3DXVECTOR
1540: 32 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45 43  2* pOut, D3DXVEC
1550: 54 4f 52 32 2a 20 70 56 31 2c 20 44 33 44 58 56  TOR2* pV1, D3DXV
1560: 45 43 54 4f 52 32 2a 20 70 56 32 2c 20 44 33 44  ECTOR2* pV2, D3D
1570: 58 56 45 43 54 4f 52 32 2a 20 70 56 33 2c 20 66  XVECTOR2* pV3, f
1580: 6c 6f 61 74 20 66 2c 20 66 6c 6f 61 74 20 67 29  loat f, float g)
1590: 3b 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 34 2a  ;...D3DXVECTOR4*
15a0: 20 44 33 44 58 56 65 63 32 54 72 61 6e 73 66 6f   D3DXVec2Transfo
15b0: 72 6d 28 44 33 44 58 56 45 43 54 4f 52 34 2a 20  rm(D3DXVECTOR4* 
15c0: 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52  pOut, D3DXVECTOR
15d0: 32 2a 20 70 56 2c 20 44 33 44 58 4d 41 54 52 49  2* pV, D3DXMATRI
15e0: 58 2a 20 70 4d 29 3b 0d 0a 09 44 33 44 58 56 45  X* pM);...D3DXVE
15f0: 43 54 4f 52 32 2a 20 44 33 44 58 56 65 63 32 54  CTOR2* D3DXVec2T
1600: 72 61 6e 73 66 6f 72 6d 43 6f 6f 72 64 28 44 33  ransformCoord(D3
1610: 44 58 56 45 43 54 4f 52 32 2a 20 70 4f 75 74 2c  DXVECTOR2* pOut,
1620: 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70 56   D3DXVECTOR2* pV
1630: 2c 20 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4d  , D3DXMATRIX* pM
1640: 29 3b 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 32  );...D3DXVECTOR2
1650: 2a 20 44 33 44 58 56 65 63 32 54 72 61 6e 73 66  * D3DXVec2Transf
1660: 6f 72 6d 4e 6f 72 6d 61 6c 28 44 33 44 58 56 45  ormNormal(D3DXVE
1670: 43 54 4f 52 32 2a 20 70 4f 75 74 2c 20 44 33 44  CTOR2* pOut, D3D
1680: 58 56 45 43 54 4f 52 32 2a 20 70 56 2c 20 44 33  XVECTOR2* pV, D3
1690: 44 58 4d 41 54 52 49 58 2a 20 70 4d 29 3b 0d 0a  DXMATRIX* pM);..
16a0: 09 44 33 44 58 56 45 43 54 4f 52 34 2a 20 44 33  .D3DXVECTOR4* D3
16b0: 44 58 56 65 63 32 54 72 61 6e 73 66 6f 72 6d 41  DXVec2TransformA
16c0: 72 72 61 79 28 44 33 44 58 56 45 43 54 4f 52 34  rray(D3DXVECTOR4
16d0: 2a 20 70 4f 75 74 2c 20 55 49 4e 54 20 4f 75 74  * pOut, UINT Out
16e0: 53 74 72 69 64 65 2c 20 44 33 44 58 56 45 43 54  Stride, D3DXVECT
16f0: 4f 52 32 2a 20 70 56 2c 20 55 49 4e 54 20 56 53  OR2* pV, UINT VS
1700: 74 72 69 64 65 2c 20 44 33 44 58 4d 41 54 52 49  tride, D3DXMATRI
1710: 58 2a 20 70 4d 2c 20 55 49 4e 54 20 6e 29 3b 0d  X* pM, UINT n);.
1720: 0a 09 44 33 44 58 56 45 43 54 4f 52 32 2a 20 44  ..D3DXVECTOR2* D
1730: 33 44 58 56 65 63 32 54 72 61 6e 73 66 6f 72 6d  3DXVec2Transform
1740: 43 6f 6f 72 64 41 72 72 61 79 28 44 33 44 58 56  CoordArray(D3DXV
1750: 45 43 54 4f 52 32 2a 20 70 4f 75 74 2c 20 55 49  ECTOR2* pOut, UI
1760: 4e 54 20 4f 75 74 53 74 72 69 64 65 2c 20 44 33  NT OutStride, D3
1770: 44 58 56 45 43 54 4f 52 32 2a 20 70 56 2c 20 55  DXVECTOR2* pV, U
1780: 49 4e 54 20 56 53 74 72 69 64 65 2c 20 44 33 44  INT VStride, D3D
1790: 58 4d 41 54 52 49 58 2a 20 70 4d 2c 20 55 49 4e  XMATRIX* pM, UIN
17a0: 54 20 6e 29 3b 0d 0a 09 44 33 44 58 56 45 43 54  T n);...D3DXVECT
17b0: 4f 52 32 2a 20 44 33 44 58 56 65 63 32 54 72 61  OR2* D3DXVec2Tra
17c0: 6e 73 66 6f 72 6d 4e 6f 72 6d 61 6c 41 72 72 61  nsformNormalArra
17d0: 79 28 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70  y(D3DXVECTOR2* p
17e0: 4f 75 74 2c 20 55 49 4e 54 20 4f 75 74 53 74 72  Out, UINT OutStr
17f0: 69 64 65 2c 20 44 33 44 58 56 45 43 54 4f 52 32  ide, D3DXVECTOR2
1800: 2a 20 70 56 2c 20 55 49 4e 54 20 56 53 74 72 69  * pV, UINT VStri
1810: 64 65 2c 20 44 33 44 58 4d 41 54 52 49 58 2a 20  de, D3DXMATRIX* 
1820: 70 4d 2c 20 55 49 4e 54 20 6e 29 3b 0d 0a 7d 0d  pM, UINT n);..}.
1830: 0a 0d 0a 66 6c 6f 61 74 20 44 33 44 58 56 65 63  ...float D3DXVec
1840: 33 4c 65 6e 67 74 68 28 44 33 44 58 56 45 43 54  3Length(D3DXVECT
1850: 4f 52 33 2a 20 70 56 29 20 7b 0d 0a 09 64 65 62  OR3* pV) {...deb
1860: 75 67 28 44 33 44 58 31 30 5f 44 45 42 55 47 29  ug(D3DX10_DEBUG)
1870: 20 7b 0d 0a 09 09 69 66 20 28 70 56 20 69 73 20   {....if (pV is 
1880: 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 30 2e 30  null) return 0.0
1890: 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e 20 73  ;...}...return s
18a0: 71 72 74 66 28 28 70 56 2e 78 20 2a 20 70 56 2e  qrtf((pV.x * pV.
18b0: 78 29 20 2b 20 28 70 56 2e 79 20 2a 20 70 56 2e  x) + (pV.y * pV.
18c0: 79 29 20 2b 20 28 70 56 2e 7a 20 2a 20 70 56 2e  y) + (pV.z * pV.
18d0: 7a 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f 61 74  z));..}....float
18e0: 20 44 33 44 58 56 65 63 33 4c 65 6e 67 74 68 53   D3DXVec3LengthS
18f0: 71 28 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70  q(D3DXVECTOR3* p
1900: 56 29 20 7b 0d 0a 09 64 65 62 75 67 28 44 33 44  V) {...debug(D3D
1910: 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09  X10_DEBUG) {....
1920: 69 66 20 28 70 56 20 69 73 20 6e 75 6c 6c 29 20  if (pV is null) 
1930: 72 65 74 75 72 6e 20 30 2e 30 3b 0d 0a 09 7d 0d  return 0.0;...}.
1940: 0a 09 72 65 74 75 72 6e 20 28 70 56 2e 78 20 2a  ..return (pV.x *
1950: 20 70 56 2e 78 29 20 2b 20 28 70 56 2e 79 20 2a   pV.x) + (pV.y *
1960: 20 70 56 2e 79 29 20 2b 20 28 70 56 2e 7a 20 2a   pV.y) + (pV.z *
1970: 20 70 56 2e 7a 29 3b 0d 0a 7d 0d 0a 0d 0a 66 6c   pV.z);..}....fl
1980: 6f 61 74 20 44 33 44 58 56 65 63 33 44 6f 74 28  oat D3DXVec3Dot(
1990: 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 56 31  D3DXVECTOR3* pV1
19a0: 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70  , D3DXVECTOR3* p
19b0: 56 32 29 20 7b 0d 0a 09 64 65 62 75 67 28 44 33  V2) {...debug(D3
19c0: 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09  DX10_DEBUG) {...
19d0: 09 69 66 20 28 28 70 56 31 20 69 73 20 6e 75 6c  .if ((pV1 is nul
19e0: 6c 29 20 7c 7c 20 28 70 56 32 20 69 73 20 6e 75  l) || (pV2 is nu
19f0: 6c 6c 29 29 20 72 65 74 75 72 6e 20 30 2e 30 3b  ll)) return 0.0;
1a00: 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e 20 28 70  ...}...return (p
1a10: 56 31 2e 78 20 2a 20 70 56 32 2e 78 29 20 2b 20  V1.x * pV2.x) + 
1a20: 28 70 56 31 2e 79 20 2a 20 70 56 32 2e 79 29 20  (pV1.y * pV2.y) 
1a30: 2b 20 28 70 56 31 2e 7a 20 2a 20 70 56 32 2e 7a  + (pV1.z * pV2.z
1a40: 29 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44 58 56 45 43  );..}....D3DXVEC
1a50: 54 4f 52 33 2a 20 44 33 44 58 56 65 63 33 43 72  TOR3* D3DXVec3Cr
1a60: 6f 73 73 28 44 33 44 58 56 45 43 54 4f 52 33 2a  oss(D3DXVECTOR3*
1a70: 20 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f   pOut, D3DXVECTO
1a80: 52 33 2a 20 70 56 31 2c 20 44 33 44 58 56 45 43  R3* pV1, D3DXVEC
1a90: 54 4f 52 33 2a 20 70 56 32 29 20 7b 0d 0a 09 64  TOR3* pV2) {...d
1aa0: 65 62 75 67 28 44 33 44 58 31 30 5f 44 45 42 55  ebug(D3DX10_DEBU
1ab0: 47 29 20 7b 0d 0a 09 09 69 66 20 28 28 70 4f 75  G) {....if ((pOu
1ac0: 74 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70  t is null) || (p
1ad0: 56 31 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28  V1 is null) || (
1ae0: 70 56 32 20 69 73 20 6e 75 6c 6c 29 29 20 72 65  pV2 is null)) re
1af0: 74 75 72 6e 20 30 2e 30 3b 0d 0a 09 7d 0d 0a 09  turn 0.0;...}...
1b00: 44 33 44 58 56 45 43 54 4f 52 33 20 76 3b 0d 0a  D3DXVECTOR3 v;..
1b10: 09 76 2e 78 20 3d 20 28 70 56 31 2e 79 20 2a 20  .v.x = (pV1.y * 
1b20: 70 56 32 2e 7a 29 20 2d 20 28 70 56 31 2e 7a 20  pV2.z) - (pV1.z 
1b30: 2a 20 70 56 32 2e 79 29 3b 0d 0a 09 76 2e 79 20  * pV2.y);...v.y 
1b40: 3d 20 28 70 56 31 2e 7a 20 2a 20 70 56 32 2e 78  = (pV1.z * pV2.x
1b50: 29 20 2d 20 28 70 56 31 2e 78 20 2a 20 70 56 32  ) - (pV1.x * pV2
1b60: 2e 7a 29 3b 0d 0a 09 76 2e 7a 20 3d 20 28 70 56  .z);...v.z = (pV
1b70: 31 2e 78 20 2a 20 70 56 32 2e 79 29 20 2d 20 28  1.x * pV2.y) - (
1b80: 70 56 31 2e 79 20 2a 20 70 56 32 2e 78 29 3b 0d  pV1.y * pV2.x);.
1b90: 0a 09 2a 70 4f 75 74 20 3d 20 76 3b 0d 0a 09 72  ..*pOut = v;...r
1ba0: 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a  eturn pOut;..}..
1bb0: 0d 0a 44 33 44 58 56 45 43 54 4f 52 33 2a 20 44  ..D3DXVECTOR3* D
1bc0: 33 44 58 56 65 63 33 41 64 64 28 44 33 44 58 56  3DXVec3Add(D3DXV
1bd0: 45 43 54 4f 52 33 2a 20 70 4f 75 74 2c 20 44 33  ECTOR3* pOut, D3
1be0: 44 58 56 45 43 54 4f 52 33 2a 20 70 56 31 2c 20  DXVECTOR3* pV1, 
1bf0: 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 56 32  D3DXVECTOR3* pV2
1c00: 29 20 7b 0d 0a 09 64 65 62 75 67 28 44 33 44 58  ) {...debug(D3DX
1c10: 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09 69  10_DEBUG) {....i
1c20: 66 20 28 28 70 4f 75 74 20 69 73 20 6e 75 6c 6c  f ((pOut is null
1c30: 29 20 7c 7c 20 28 70 56 31 20 69 73 20 6e 75 6c  ) || (pV1 is nul
1c40: 6c 29 20 7c 7c 20 28 70 56 32 20 69 73 20 6e 75  l) || (pV2 is nu
1c50: 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c  ll)) return null
1c60: 3b 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e 78 20 3d  ;...}...pOut.x =
1c70: 20 70 56 31 2e 78 20 2b 20 70 56 32 2e 78 3b 0d   pV1.x + pV2.x;.
1c80: 0a 09 70 4f 75 74 2e 79 20 3d 20 70 56 31 2e 79  ..pOut.y = pV1.y
1c90: 20 2b 20 70 56 32 2e 79 3b 0d 0a 09 70 4f 75 74   + pV2.y;...pOut
1ca0: 2e 7a 20 3d 20 70 56 31 2e 7a 20 2b 20 70 56 32  .z = pV1.z + pV2
1cb0: 2e 7a 3b 0d 0a 09 72 65 74 75 72 6e 20 70 4f 75  .z;...return pOu
1cc0: 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44 58 56 45 43  t;..}....D3DXVEC
1cd0: 54 4f 52 33 2a 20 44 33 44 58 56 65 63 33 53 75  TOR3* D3DXVec3Su
1ce0: 62 74 72 61 63 74 28 44 33 44 58 56 45 43 54 4f  btract(D3DXVECTO
1cf0: 52 33 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45  R3* pOut, D3DXVE
1d00: 43 54 4f 52 33 2a 20 70 56 31 2c 20 44 33 44 58  CTOR3* pV1, D3DX
1d10: 56 45 43 54 4f 52 33 2a 20 70 56 32 29 20 7b 0d  VECTOR3* pV2) {.
1d20: 0a 09 64 65 62 75 67 28 44 33 44 58 31 30 5f 44  ..debug(D3DX10_D
1d30: 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 20 28 28  EBUG) {....if ((
1d40: 70 4f 75 74 20 69 73 20 6e 75 6c 6c 29 20 7c 7c  pOut is null) ||
1d50: 20 28 70 56 31 20 69 73 20 6e 75 6c 6c 29 20 7c   (pV1 is null) |
1d60: 7c 20 28 70 56 32 20 69 73 20 6e 75 6c 6c 29 29  | (pV2 is null))
1d70: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09   return null;...
1d80: 7d 0d 0a 09 70 4f 75 74 2e 78 20 3d 20 70 56 31  }...pOut.x = pV1
1d90: 2e 78 20 2d 20 70 56 32 2e 78 3b 0d 0a 09 70 4f  .x - pV2.x;...pO
1da0: 75 74 2e 79 20 3d 20 70 56 31 2e 79 20 2d 20 70  ut.y = pV1.y - p
1db0: 56 32 2e 79 3b 0d 0a 09 70 4f 75 74 2e 7a 20 3d  V2.y;...pOut.z =
1dc0: 20 70 56 31 2e 7a 20 2d 20 70 56 32 2e 7a 3b 0d   pV1.z - pV2.z;.
1dd0: 0a 09 72 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a  ..return pOut;..
1de0: 7d 0d 0a 0d 0a 44 33 44 58 56 45 43 54 4f 52 33  }....D3DXVECTOR3
1df0: 2a 20 44 33 44 58 56 65 63 33 4d 69 6e 69 6d 69  * D3DXVec3Minimi
1e00: 7a 65 28 44 33 44 58 56 45 43 54 4f 52 33 2a 20  ze(D3DXVECTOR3* 
1e10: 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52  pOut, D3DXVECTOR
1e20: 33 2a 20 70 56 31 2c 20 44 33 44 58 56 45 43 54  3* pV1, D3DXVECT
1e30: 4f 52 33 2a 20 70 56 32 29 20 7b 0d 0a 09 64 65  OR3* pV2) {...de
1e40: 62 75 67 28 44 33 44 58 31 30 5f 44 45 42 55 47  bug(D3DX10_DEBUG
1e50: 29 20 7b 0d 0a 09 09 69 66 20 28 28 70 4f 75 74  ) {....if ((pOut
1e60: 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 56   is null) || (pV
1e70: 31 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70  1 is null) || (p
1e80: 56 32 20 69 73 20 6e 75 6c 6c 29 29 20 72 65 74  V2 is null)) ret
1e90: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09  urn null;...}...
1ea0: 70 4f 75 74 2e 78 20 3d 20 70 56 31 2e 78 20 3c  pOut.x = pV1.x <
1eb0: 20 70 56 32 2e 78 20 3f 20 70 56 31 2e 78 20 3a   pV2.x ? pV1.x :
1ec0: 20 70 56 32 2e 78 3b 0d 0a 09 70 4f 75 74 2e 79   pV2.x;...pOut.y
1ed0: 20 3d 20 70 56 31 2e 79 20 3c 20 70 56 32 2e 79   = pV1.y < pV2.y
1ee0: 20 3f 20 70 56 31 2e 79 20 3a 20 70 56 32 2e 79   ? pV1.y : pV2.y
1ef0: 3b 0d 0a 09 70 4f 75 74 2e 7a 20 3d 20 70 56 31  ;...pOut.z = pV1
1f00: 2e 7a 20 3c 20 70 56 32 2e 7a 20 3f 20 70 56 31  .z < pV2.z ? pV1
1f10: 2e 7a 20 3a 20 70 56 32 2e 7a 3b 0d 0a 09 72 65  .z : pV2.z;...re
1f20: 74 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d  turn pOut;..}...
1f30: 0a 44 33 44 58 56 45 43 54 4f 52 33 2a 20 44 33  .D3DXVECTOR3* D3
1f40: 44 58 56 65 63 33 4d 61 78 69 6d 69 7a 65 28 44  DXVec3Maximize(D
1f50: 33 44 58 56 45 43 54 4f 52 33 2a 20 70 4f 75 74  3DXVECTOR3* pOut
1f60: 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70  , D3DXVECTOR3* p
1f70: 56 31 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a  V1, D3DXVECTOR3*
1f80: 20 70 56 32 29 20 7b 0d 0a 09 64 65 62 75 67 28   pV2) {...debug(
1f90: 44 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d  D3DX10_DEBUG) {.
1fa0: 0a 09 09 69 66 20 28 28 70 4f 75 74 20 69 73 20  ...if ((pOut is 
1fb0: 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 31 20 69 73  null) || (pV1 is
1fc0: 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 32 20 69   null) || (pV2 i
1fd0: 73 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e 20  s null)) return 
1fe0: 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75 74  null;...}...pOut
1ff0: 2e 78 20 3d 20 70 56 31 2e 78 20 3e 20 70 56 32  .x = pV1.x > pV2
2000: 2e 78 20 3f 20 70 56 31 2e 78 20 3a 20 70 56 32  .x ? pV1.x : pV2
2010: 2e 78 3b 0d 0a 09 70 4f 75 74 2e 79 20 3d 20 70  .x;...pOut.y = p
2020: 56 31 2e 79 20 3e 20 70 56 32 2e 79 20 3f 20 70  V1.y > pV2.y ? p
2030: 56 31 2e 79 20 3a 20 70 56 32 2e 79 3b 0d 0a 09  V1.y : pV2.y;...
2040: 70 4f 75 74 2e 7a 20 3d 20 70 56 31 2e 7a 20 3e  pOut.z = pV1.z >
2050: 20 70 56 32 2e 7a 20 3f 20 70 56 31 2e 7a 20 3a   pV2.z ? pV1.z :
2060: 20 70 56 32 2e 7a 3b 0d 0a 09 72 65 74 75 72 6e   pV2.z;...return
2070: 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44   pOut;..}....D3D
2080: 58 56 45 43 54 4f 52 33 2a 20 44 33 44 58 56 65  XVECTOR3* D3DXVe
2090: 63 33 53 63 61 6c 65 28 44 33 44 58 56 45 43 54  c3Scale(D3DXVECT
20a0: 4f 52 33 2a 20 70 4f 75 74 2c 20 44 33 44 58 56  OR3* pOut, D3DXV
20b0: 45 43 54 4f 52 33 2a 20 70 56 2c 20 66 6c 6f 61  ECTOR3* pV, floa
20c0: 74 20 73 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  t s) {...debug(D
20d0: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
20e0: 09 09 69 66 20 28 28 70 4f 75 74 20 69 73 20 6e  ..if ((pOut is n
20f0: 75 6c 6c 29 20 7c 7c 20 28 70 56 20 69 73 20 6e  ull) || (pV is n
2100: 75 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e 75 6c  ull)) return nul
2110: 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e 78 20  l;...}...pOut.x 
2120: 3d 20 70 56 2e 78 20 2a 20 73 3b 0d 0a 09 70 4f  = pV.x * s;...pO
2130: 75 74 2e 79 20 3d 20 70 56 2e 79 20 2a 20 73 3b  ut.y = pV.y * s;
2140: 0d 0a 09 70 4f 75 74 2e 7a 20 3d 20 70 56 2e 7a  ...pOut.z = pV.z
2150: 20 2a 20 73 3b 0d 0a 09 72 65 74 75 72 6e 20 70   * s;...return p
2160: 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44 58 56  Out;..}....D3DXV
2170: 45 43 54 4f 52 33 2a 20 44 33 44 58 56 65 63 33  ECTOR3* D3DXVec3
2180: 4c 65 72 70 28 44 33 44 58 56 45 43 54 4f 52 33  Lerp(D3DXVECTOR3
2190: 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54  * pOut, D3DXVECT
21a0: 4f 52 33 2a 20 70 56 31 2c 20 44 33 44 58 56 45  OR3* pV1, D3DXVE
21b0: 43 54 4f 52 33 2a 20 70 56 32 2c 20 66 6c 6f 61  CTOR3* pV2, floa
21c0: 74 20 73 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  t s) {...debug(D
21d0: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
21e0: 09 09 69 66 20 28 28 70 4f 75 74 20 69 73 20 6e  ..if ((pOut is n
21f0: 75 6c 6c 29 20 7c 7c 20 28 70 56 31 20 69 73 20  ull) || (pV1 is 
2200: 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 32 20 69 73  null) || (pV2 is
2210: 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e   null)) return n
2220: 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e  ull;...}...pOut.
2230: 78 20 3d 20 70 56 31 2e 78 20 2b 20 73 20 2a 20  x = pV1.x + s * 
2240: 28 70 56 32 2e 78 20 2d 20 70 56 31 2e 78 29 3b  (pV2.x - pV1.x);
2250: 0d 0a 09 70 4f 75 74 2e 79 20 3d 20 70 56 31 2e  ...pOut.y = pV1.
2260: 79 20 2b 20 73 20 2a 20 28 70 56 32 2e 79 20 2d  y + s * (pV2.y -
2270: 20 70 56 31 2e 79 29 3b 0d 0a 09 70 4f 75 74 2e   pV1.y);...pOut.
2280: 7a 20 3d 20 70 56 31 2e 7a 20 2b 20 73 20 2a 20  z = pV1.z + s * 
2290: 28 70 56 32 2e 7a 20 2d 20 70 56 31 2e 7a 29 3b  (pV2.z - pV1.z);
22a0: 0d 0a 09 72 65 74 75 72 6e 20 70 4f 75 74 3b 0d  ...return pOut;.
22b0: 0a 7d 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e  .}....extern(Win
22c0: 64 6f 77 73 29 20 7b 0d 0a 09 44 33 44 58 56 45  dows) {...D3DXVE
22d0: 43 54 4f 52 33 2a 20 44 33 44 58 56 65 63 33 4e  CTOR3* D3DXVec3N
22e0: 6f 72 6d 61 6c 69 7a 65 28 44 33 44 58 56 45 43  ormalize(D3DXVEC
22f0: 54 4f 52 33 2a 20 70 4f 75 74 2c 20 44 33 44 58  TOR3* pOut, D3DX
2300: 56 45 43 54 4f 52 33 2a 20 70 56 29 3b 0d 0a 09  VECTOR3* pV);...
2310: 44 33 44 58 56 45 43 54 4f 52 33 2a 20 44 33 44  D3DXVECTOR3* D3D
2320: 58 56 65 63 33 48 65 72 6d 69 74 65 28 44 33 44  XVec3Hermite(D3D
2330: 58 56 45 43 54 4f 52 33 2a 20 70 4f 75 74 2c 20  XVECTOR3* pOut, 
2340: 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 56 31  D3DXVECTOR3* pV1
2350: 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70  , D3DXVECTOR3* p
2360: 54 31 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a  T1, D3DXVECTOR3*
2370: 20 70 56 32 2c 20 44 33 44 58 56 45 43 54 4f 52   pV2, D3DXVECTOR
2380: 33 2a 20 70 54 32 2c 20 46 4c 4f 41 54 20 73 29  3* pT2, FLOAT s)
2390: 3b 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 33 2a  ;...D3DXVECTOR3*
23a0: 20 44 33 44 58 56 65 63 33 43 61 74 6d 75 6c 6c   D3DXVec3Catmull
23b0: 52 6f 6d 28 44 33 44 58 56 45 43 54 4f 52 33 2a  Rom(D3DXVECTOR3*
23c0: 20 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f   pOut, D3DXVECTO
23d0: 52 33 2a 20 70 56 30 2c 20 44 33 44 58 56 45 43  R3* pV0, D3DXVEC
23e0: 54 4f 52 33 2a 20 70 56 31 2c 20 44 33 44 58 56  TOR3* pV1, D3DXV
23f0: 45 43 54 4f 52 33 2a 20 70 56 32 2c 20 44 33 44  ECTOR3* pV2, D3D
2400: 58 56 45 43 54 4f 52 33 2a 20 70 56 33 2c 20 46  XVECTOR3* pV3, F
2410: 4c 4f 41 54 20 73 29 3b 0d 0a 09 44 33 44 58 56  LOAT s);...D3DXV
2420: 45 43 54 4f 52 33 2a 20 44 33 44 58 56 65 63 33  ECTOR3* D3DXVec3
2430: 42 61 72 79 43 65 6e 74 72 69 63 28 44 33 44 58  BaryCentric(D3DX
2440: 56 45 43 54 4f 52 33 2a 20 70 4f 75 74 2c 20 44  VECTOR3* pOut, D
2450: 33 44 58 56 45 43 54 4f 52 33 2a 20 70 56 31 2c  3DXVECTOR3* pV1,
2460: 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 56   D3DXVECTOR3* pV
2470: 32 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20  2, D3DXVECTOR3* 
2480: 70 56 33 2c 20 46 4c 4f 41 54 20 66 2c 20 46 4c  pV3, FLOAT f, FL
2490: 4f 41 54 20 67 29 3b 0d 0a 09 44 33 44 58 56 45  OAT g);...D3DXVE
24a0: 43 54 4f 52 34 2a 20 44 33 44 58 56 65 63 33 54  CTOR4* D3DXVec3T
24b0: 72 61 6e 73 66 6f 72 6d 28 44 33 44 58 56 45 43  ransform(D3DXVEC
24c0: 54 4f 52 34 2a 20 70 4f 75 74 2c 20 44 33 44 58  TOR4* pOut, D3DX
24d0: 56 45 43 54 4f 52 33 2a 20 70 56 2c 20 44 33 44  VECTOR3* pV, D3D
24e0: 58 4d 41 54 52 49 58 2a 20 70 4d 29 3b 0d 0a 09  XMATRIX* pM);...
24f0: 44 33 44 58 56 45 43 54 4f 52 33 2a 20 44 33 44  D3DXVECTOR3* D3D
2500: 58 56 65 63 33 54 72 61 6e 73 66 6f 72 6d 43 6f  XVec3TransformCo
2510: 6f 72 64 28 44 33 44 58 56 45 43 54 4f 52 33 2a  ord(D3DXVECTOR3*
2520: 20 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f   pOut, D3DXVECTO
2530: 52 33 2a 20 70 56 2c 20 44 33 44 58 4d 41 54 52  R3* pV, D3DXMATR
2540: 49 58 2a 20 70 4d 29 3b 0d 0a 09 44 33 44 58 56  IX* pM);...D3DXV
2550: 45 43 54 4f 52 33 2a 20 44 33 44 58 56 65 63 33  ECTOR3* D3DXVec3
2560: 54 72 61 6e 73 66 6f 72 6d 4e 6f 72 6d 61 6c 28  TransformNormal(
2570: 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 4f 75  D3DXVECTOR3* pOu
2580: 74 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20  t, D3DXVECTOR3* 
2590: 70 56 2c 20 44 33 44 58 4d 41 54 52 49 58 2a 20  pV, D3DXMATRIX* 
25a0: 70 4d 29 3b 0d 0a 09 44 33 44 58 56 45 43 54 4f  pM);...D3DXVECTO
25b0: 52 34 2a 20 44 33 44 58 56 65 63 33 54 72 61 6e  R4* D3DXVec3Tran
25c0: 73 66 6f 72 6d 41 72 72 61 79 28 44 33 44 58 56  sformArray(D3DXV
25d0: 45 43 54 4f 52 34 2a 20 70 4f 75 74 2c 20 55 49  ECTOR4* pOut, UI
25e0: 4e 54 20 4f 75 74 53 74 72 69 64 65 2c 20 44 33  NT OutStride, D3
25f0: 44 58 56 45 43 54 4f 52 33 2a 20 70 56 2c 20 55  DXVECTOR3* pV, U
2600: 49 4e 54 20 56 53 74 72 69 64 65 2c 20 44 33 44  INT VStride, D3D
2610: 58 4d 41 54 52 49 58 2a 20 70 4d 2c 20 55 49 4e  XMATRIX* pM, UIN
2620: 54 20 6e 29 3b 0d 0a 09 44 33 44 58 56 45 43 54  T n);...D3DXVECT
2630: 4f 52 33 2a 20 44 33 44 58 56 65 63 33 54 72 61  OR3* D3DXVec3Tra
2640: 6e 73 66 6f 72 6d 43 6f 6f 72 64 41 72 72 61 79  nsformCoordArray
2650: 28 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 4f  (D3DXVECTOR3* pO
2660: 75 74 2c 20 55 49 4e 54 20 4f 75 74 53 74 72 69  ut, UINT OutStri
2670: 64 65 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a  de, D3DXVECTOR3*
2680: 20 70 56 2c 20 55 49 4e 54 20 56 53 74 72 69 64   pV, UINT VStrid
2690: 65 2c 20 44 33 44 58 4d 41 54 52 49 58 2a 20 70  e, D3DXMATRIX* p
26a0: 4d 2c 20 55 49 4e 54 20 6e 29 3b 0d 0a 09 44 33  M, UINT n);...D3
26b0: 44 58 56 45 43 54 4f 52 33 2a 20 44 33 44 58 56  DXVECTOR3* D3DXV
26c0: 65 63 33 54 72 61 6e 73 66 6f 72 6d 4e 6f 72 6d  ec3TransformNorm
26d0: 61 6c 41 72 72 61 79 28 44 33 44 58 56 45 43 54  alArray(D3DXVECT
26e0: 4f 52 33 2a 20 70 4f 75 74 2c 20 55 49 4e 54 20  OR3* pOut, UINT 
26f0: 4f 75 74 53 74 72 69 64 65 2c 20 44 33 44 58 56  OutStride, D3DXV
2700: 45 43 54 4f 52 33 2a 20 70 56 2c 20 55 49 4e 54  ECTOR3* pV, UINT
2710: 20 56 53 74 72 69 64 65 2c 20 44 33 44 58 4d 41   VStride, D3DXMA
2720: 54 52 49 58 2a 20 70 4d 2c 20 55 49 4e 54 20 6e  TRIX* pM, UINT n
2730: 29 3b 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 33  );...D3DXVECTOR3
2740: 2a 20 44 33 44 58 56 65 63 33 50 72 6f 6a 65 63  * D3DXVec3Projec
2750: 74 28 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70  t(D3DXVECTOR3* p
2760: 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52 33  Out, D3DXVECTOR3
2770: 2a 20 70 56 2c 20 44 33 44 31 30 5f 56 49 45 57  * pV, D3D10_VIEW
2780: 50 4f 52 54 2a 20 70 56 69 65 77 70 6f 72 74 2c  PORT* pViewport,
2790: 20 44 33 44 58 4d 41 54 52 49 58 2a 20 70 50 72   D3DXMATRIX* pPr
27a0: 6f 6a 65 63 74 69 6f 6e 2c 20 44 33 44 58 4d 41  ojection, D3DXMA
27b0: 54 52 49 58 2a 20 70 56 69 65 77 2c 20 44 33 44  TRIX* pView, D3D
27c0: 58 4d 41 54 52 49 58 2a 20 70 57 6f 72 6c 64 29  XMATRIX* pWorld)
27d0: 3b 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 33 2a  ;...D3DXVECTOR3*
27e0: 20 44 33 44 58 56 65 63 33 55 6e 70 72 6f 6a 65   D3DXVec3Unproje
27f0: 63 74 28 44 33 44 58 56 45 43 54 4f 52 33 2a 20  ct(D3DXVECTOR3* 
2800: 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52  pOut, D3DXVECTOR
2810: 33 2a 20 70 56 2c 20 44 33 44 31 30 5f 56 49 45  3* pV, D3D10_VIE
2820: 57 50 4f 52 54 2a 20 70 56 69 65 77 70 6f 72 74  WPORT* pViewport
2830: 2c 20 44 33 44 58 4d 41 54 52 49 58 2a 20 70 50  , D3DXMATRIX* pP
2840: 72 6f 6a 65 63 74 69 6f 6e 2c 20 44 33 44 58 4d  rojection, D3DXM
2850: 41 54 52 49 58 2a 20 70 56 69 65 77 2c 20 44 33  ATRIX* pView, D3
2860: 44 58 4d 41 54 52 49 58 2a 20 70 57 6f 72 6c 64  DXMATRIX* pWorld
2870: 29 3b 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 33  );...D3DXVECTOR3
2880: 2a 20 44 33 44 58 56 65 63 33 50 72 6f 6a 65 63  * D3DXVec3Projec
2890: 74 41 72 72 61 79 28 44 33 44 58 56 45 43 54 4f  tArray(D3DXVECTO
28a0: 52 33 2a 20 70 4f 75 74 2c 20 55 49 4e 54 20 4f  R3* pOut, UINT O
28b0: 75 74 53 74 72 69 64 65 2c 44 33 44 58 56 45 43  utStride,D3DXVEC
28c0: 54 4f 52 33 2a 20 70 56 2c 20 55 49 4e 54 20 56  TOR3* pV, UINT V
28d0: 53 74 72 69 64 65 2c 44 33 44 31 30 5f 56 49 45  Stride,D3D10_VIE
28e0: 57 50 4f 52 54 2a 20 70 56 69 65 77 70 6f 72 74  WPORT* pViewport
28f0: 2c 20 44 33 44 58 4d 41 54 52 49 58 2a 20 70 50  , D3DXMATRIX* pP
2900: 72 6f 6a 65 63 74 69 6f 6e 2c 20 44 33 44 58 4d  rojection, D3DXM
2910: 41 54 52 49 58 2a 20 70 56 69 65 77 2c 20 44 33  ATRIX* pView, D3
2920: 44 58 4d 41 54 52 49 58 2a 20 70 57 6f 72 6c 64  DXMATRIX* pWorld
2930: 2c 20 55 49 4e 54 20 6e 29 3b 0d 0a 09 44 33 44  , UINT n);...D3D
2940: 58 56 45 43 54 4f 52 33 2a 20 44 33 44 58 56 65  XVECTOR3* D3DXVe
2950: 63 33 55 6e 70 72 6f 6a 65 63 74 41 72 72 61 79  c3UnprojectArray
2960: 28 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 4f  (D3DXVECTOR3* pO
2970: 75 74 2c 20 55 49 4e 54 20 4f 75 74 53 74 72 69  ut, UINT OutStri
2980: 64 65 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a  de, D3DXVECTOR3*
2990: 20 70 56 2c 20 55 49 4e 54 20 56 53 74 72 69 64   pV, UINT VStrid
29a0: 65 2c 20 44 33 44 31 30 5f 56 49 45 57 50 4f 52  e, D3D10_VIEWPOR
29b0: 54 2a 20 70 56 69 65 77 70 6f 72 74 2c 20 44 33  T* pViewport, D3
29c0: 44 58 4d 41 54 52 49 58 2a 20 70 50 72 6f 6a 65  DXMATRIX* pProje
29d0: 63 74 69 6f 6e 2c 20 44 33 44 58 4d 41 54 52 49  ction, D3DXMATRI
29e0: 58 2a 20 70 56 69 65 77 2c 20 44 33 44 58 4d 41  X* pView, D3DXMA
29f0: 54 52 49 58 2a 20 70 57 6f 72 6c 64 2c 20 55 49  TRIX* pWorld, UI
2a00: 4e 54 20 6e 29 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f  NT n);..}....flo
2a10: 61 74 20 44 33 44 58 56 65 63 34 4c 65 6e 67 74  at D3DXVec4Lengt
2a20: 68 28 44 33 44 58 56 45 43 54 4f 52 34 2a 20 70  h(D3DXVECTOR4* p
2a30: 56 29 20 7b 0d 0a 09 64 65 62 75 67 28 44 33 44  V) {...debug(D3D
2a40: 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09  X10_DEBUG) {....
2a50: 69 66 20 28 70 56 20 69 73 20 6e 75 6c 6c 29 20  if (pV is null) 
2a60: 72 65 74 75 72 6e 20 30 2e 30 3b 0d 0a 09 7d 0d  return 0.0;...}.
2a70: 0a 09 72 65 74 75 72 6e 20 73 71 72 74 66 28 28  ..return sqrtf((
2a80: 70 56 2e 78 20 2a 20 70 56 2e 78 29 20 2b 20 28  pV.x * pV.x) + (
2a90: 70 56 2e 79 20 2a 20 70 56 2e 79 29 20 2b 20 28  pV.y * pV.y) + (
2aa0: 70 56 2e 7a 20 2a 20 70 56 2e 7a 29 20 2b 20 28  pV.z * pV.z) + (
2ab0: 70 56 2e 77 20 2a 20 70 56 2e 77 29 29 3b 0d 0a  pV.w * pV.w));..
2ac0: 7d 0d 0a 0d 0a 66 6c 6f 61 74 20 44 33 44 58 56  }....float D3DXV
2ad0: 65 63 34 4c 65 6e 67 74 68 53 71 28 44 33 44 58  ec4LengthSq(D3DX
2ae0: 56 45 43 54 4f 52 34 2a 20 70 56 29 20 7b 0d 0a  VECTOR4* pV) {..
2af0: 09 64 65 62 75 67 28 44 33 44 58 31 30 5f 44 45  .debug(D3DX10_DE
2b00: 42 55 47 29 20 7b 0d 0a 09 09 69 66 20 28 70 56  BUG) {....if (pV
2b10: 20 69 73 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e   is null) return
2b20: 20 30 2e 30 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75   0.0;...}...retu
2b30: 72 6e 20 28 70 56 2e 78 20 2a 20 70 56 2e 78 29  rn (pV.x * pV.x)
2b40: 20 2b 20 28 70 56 2e 79 20 2a 20 70 56 2e 79 29   + (pV.y * pV.y)
2b50: 20 2b 20 28 70 56 2e 7a 20 2a 20 70 56 2e 7a 29   + (pV.z * pV.z)
2b60: 20 2b 20 28 70 56 2e 77 20 2a 20 70 56 2e 77 29   + (pV.w * pV.w)
2b70: 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f 61 74 20 44 33  ;..}....float D3
2b80: 44 58 56 65 63 34 44 6f 74 28 44 33 44 58 56 45  DXVec4Dot(D3DXVE
2b90: 43 54 4f 52 34 2a 20 70 56 31 2c 20 44 33 44 58  CTOR4* pV1, D3DX
2ba0: 56 45 43 54 4f 52 34 2a 20 70 56 32 29 20 7b 0d  VECTOR4* pV2) {.
2bb0: 0a 09 64 65 62 75 67 28 44 33 44 58 31 30 5f 44  ..debug(D3DX10_D
2bc0: 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 20 28 28  EBUG) {....if ((
2bd0: 70 56 31 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20  pV1 is null) || 
2be0: 28 70 56 32 20 69 73 20 6e 75 6c 6c 29 29 20 72  (pV2 is null)) r
2bf0: 65 74 75 72 6e 20 30 2e 30 3b 0d 0a 09 7d 0d 0a  eturn 0.0;...}..
2c00: 09 72 65 74 75 72 6e 20 28 70 56 31 2e 78 20 2a  .return (pV1.x *
2c10: 20 70 56 32 2e 78 29 20 2b 20 28 70 56 31 2e 79   pV2.x) + (pV1.y
2c20: 20 2a 20 70 56 32 2e 79 29 20 2b 20 28 70 56 31   * pV2.y) + (pV1
2c30: 2e 7a 20 2a 20 70 56 32 2e 7a 29 20 2b 20 28 70  .z * pV2.z) + (p
2c40: 56 31 2e 77 20 2a 20 70 56 32 2e 77 29 3b 0d 0a  V1.w * pV2.w);..
2c50: 7d 0d 0a 0d 0a 44 33 44 58 56 45 43 54 4f 52 34  }....D3DXVECTOR4
2c60: 2a 20 44 33 44 58 56 65 63 34 41 64 64 28 44 33  * D3DXVec4Add(D3
2c70: 44 58 56 45 43 54 4f 52 34 2a 20 70 4f 75 74 2c  DXVECTOR4* pOut,
2c80: 20 44 33 44 58 56 45 43 54 4f 52 34 2a 20 70 56   D3DXVECTOR4* pV
2c90: 31 2c 20 44 33 44 58 56 45 43 54 4f 52 34 2a 20  1, D3DXVECTOR4* 
2ca0: 70 56 32 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  pV2) {...debug(D
2cb0: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
2cc0: 09 09 69 66 20 28 28 70 4f 75 74 20 69 73 20 6e  ..if ((pOut is n
2cd0: 75 6c 6c 29 20 7c 7c 20 28 70 56 31 20 69 73 20  ull) || (pV1 is 
2ce0: 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 32 20 69 73  null) || (pV2 is
2cf0: 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e   null)) return n
2d00: 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e  ull;...}...pOut.
2d10: 78 20 3d 20 70 56 31 2e 78 20 2b 20 70 56 32 2e  x = pV1.x + pV2.
2d20: 78 3b 0d 0a 09 70 4f 75 74 2e 79 20 3d 20 70 56  x;...pOut.y = pV
2d30: 31 2e 79 20 2b 20 70 56 32 2e 79 3b 0d 0a 09 70  1.y + pV2.y;...p
2d40: 4f 75 74 2e 7a 20 3d 20 70 56 31 2e 7a 20 2b 20  Out.z = pV1.z + 
2d50: 70 56 32 2e 7a 3b 0d 0a 09 70 4f 75 74 2e 77 20  pV2.z;...pOut.w 
2d60: 3d 20 70 56 31 2e 77 20 2b 20 70 56 32 2e 77 3b  = pV1.w + pV2.w;
2d70: 0d 0a 09 72 65 74 75 72 6e 20 70 4f 75 74 3b 0d  ...return pOut;.
2d80: 0a 7d 0d 0a 0d 0a 44 33 44 58 56 45 43 54 4f 52  .}....D3DXVECTOR
2d90: 34 2a 20 44 33 44 58 56 65 63 34 53 75 62 74 72  4* D3DXVec4Subtr
2da0: 61 63 74 28 44 33 44 58 56 45 43 54 4f 52 34 2a  act(D3DXVECTOR4*
2db0: 20 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f   pOut, D3DXVECTO
2dc0: 52 34 2a 20 70 56 31 2c 20 44 33 44 58 56 45 43  R4* pV1, D3DXVEC
2dd0: 54 4f 52 34 2a 20 70 56 32 29 20 7b 0d 0a 09 64  TOR4* pV2) {...d
2de0: 65 62 75 67 28 44 33 44 58 31 30 5f 44 45 42 55  ebug(D3DX10_DEBU
2df0: 47 29 20 7b 0d 0a 09 09 69 66 20 28 28 70 4f 75  G) {....if ((pOu
2e00: 74 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70  t is null) || (p
2e10: 56 31 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28  V1 is null) || (
2e20: 70 56 32 20 69 73 20 6e 75 6c 6c 29 29 20 72 65  pV2 is null)) re
2e30: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a  turn null;...}..
2e40: 09 70 4f 75 74 2e 78 20 3d 20 70 56 31 2e 78 20  .pOut.x = pV1.x 
2e50: 2d 20 70 56 32 2e 78 3b 0d 0a 09 70 4f 75 74 2e  - pV2.x;...pOut.
2e60: 79 20 3d 20 70 56 31 2e 79 20 2d 20 70 56 32 2e  y = pV1.y - pV2.
2e70: 79 3b 0d 0a 09 70 4f 75 74 2e 7a 20 3d 20 70 56  y;...pOut.z = pV
2e80: 31 2e 7a 20 2d 20 70 56 32 2e 7a 3b 0d 0a 09 70  1.z - pV2.z;...p
2e90: 4f 75 74 2e 77 20 3d 20 70 56 31 2e 77 20 2d 20  Out.w = pV1.w - 
2ea0: 70 56 32 2e 77 3b 0d 0a 09 72 65 74 75 72 6e 20  pV2.w;...return 
2eb0: 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44 58  pOut;..}....D3DX
2ec0: 56 45 43 54 4f 52 34 2a 20 44 33 44 58 56 65 63  VECTOR4* D3DXVec
2ed0: 34 4d 69 6e 69 6d 69 7a 65 28 44 33 44 58 56 45  4Minimize(D3DXVE
2ee0: 43 54 4f 52 34 2a 20 70 4f 75 74 2c 20 44 33 44  CTOR4* pOut, D3D
2ef0: 58 56 45 43 54 4f 52 34 2a 20 70 56 31 2c 20 44  XVECTOR4* pV1, D
2f00: 33 44 58 56 45 43 54 4f 52 34 2a 20 70 56 32 29  3DXVECTOR4* pV2)
2f10: 20 7b 0d 0a 09 64 65 62 75 67 28 44 33 44 58 31   {...debug(D3DX1
2f20: 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09 69 66  0_DEBUG) {....if
2f30: 20 28 28 70 4f 75 74 20 69 73 20 6e 75 6c 6c 29   ((pOut is null)
2f40: 20 7c 7c 20 28 70 56 31 20 69 73 20 6e 75 6c 6c   || (pV1 is null
2f50: 29 20 7c 7c 20 28 70 56 32 20 69 73 20 6e 75 6c  ) || (pV2 is nul
2f60: 6c 29 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b  l)) return null;
2f70: 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e 78 20 3d 20  ...}...pOut.x = 
2f80: 70 56 31 2e 78 20 3c 20 70 56 32 2e 78 20 3f 20  pV1.x < pV2.x ? 
2f90: 70 56 31 2e 78 20 3a 20 70 56 32 2e 78 3b 0d 0a  pV1.x : pV2.x;..
2fa0: 09 70 4f 75 74 2e 79 20 3d 20 70 56 31 2e 79 20  .pOut.y = pV1.y 
2fb0: 3c 20 70 56 32 2e 79 20 3f 20 70 56 31 2e 79 20  < pV2.y ? pV1.y 
2fc0: 3a 20 70 56 32 2e 79 3b 0d 0a 09 70 4f 75 74 2e  : pV2.y;...pOut.
2fd0: 7a 20 3d 20 70 56 31 2e 7a 20 3c 20 70 56 32 2e  z = pV1.z < pV2.
2fe0: 7a 20 3f 20 70 56 31 2e 7a 20 3a 20 70 56 32 2e  z ? pV1.z : pV2.
2ff0: 7a 3b 0d 0a 09 70 4f 75 74 2e 77 20 3d 20 70 56  z;...pOut.w = pV
3000: 31 2e 77 20 3c 20 70 56 32 2e 77 20 3f 20 70 56  1.w < pV2.w ? pV
3010: 31 2e 77 20 3a 20 70 56 32 2e 77 3b 0d 0a 09 72  1.w : pV2.w;...r
3020: 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a  eturn pOut;..}..
3030: 0d 0a 44 33 44 58 56 45 43 54 4f 52 34 2a 20 44  ..D3DXVECTOR4* D
3040: 33 44 58 56 65 63 34 4d 61 78 69 6d 69 7a 65 28  3DXVec4Maximize(
3050: 44 33 44 58 56 45 43 54 4f 52 34 2a 20 70 4f 75  D3DXVECTOR4* pOu
3060: 74 2c 20 44 33 44 58 56 45 43 54 4f 52 34 2a 20  t, D3DXVECTOR4* 
3070: 70 56 31 2c 20 44 33 44 58 56 45 43 54 4f 52 34  pV1, D3DXVECTOR4
3080: 2a 20 70 56 32 29 20 7b 0d 0a 09 64 65 62 75 67  * pV2) {...debug
3090: 28 44 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b  (D3DX10_DEBUG) {
30a0: 0d 0a 09 09 69 66 20 28 28 70 4f 75 74 20 69 73  ....if ((pOut is
30b0: 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 31 20 69   null) || (pV1 i
30c0: 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 32 20  s null) || (pV2 
30d0: 69 73 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e  is null)) return
30e0: 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75   null;...}...pOu
30f0: 74 2e 78 20 3d 20 70 56 31 2e 78 20 3e 20 70 56  t.x = pV1.x > pV
3100: 32 2e 78 20 3f 20 70 56 31 2e 78 20 3a 20 70 56  2.x ? pV1.x : pV
3110: 32 2e 78 3b 0d 0a 09 70 4f 75 74 2e 79 20 3d 20  2.x;...pOut.y = 
3120: 70 56 31 2e 79 20 3e 20 70 56 32 2e 79 20 3f 20  pV1.y > pV2.y ? 
3130: 70 56 31 2e 79 20 3a 20 70 56 32 2e 79 3b 0d 0a  pV1.y : pV2.y;..
3140: 09 70 4f 75 74 2e 7a 20 3d 20 70 56 31 2e 7a 20  .pOut.z = pV1.z 
3150: 3e 20 70 56 32 2e 7a 20 3f 20 70 56 31 2e 7a 20  > pV2.z ? pV1.z 
3160: 3a 20 70 56 32 2e 7a 3b 0d 0a 09 70 4f 75 74 2e  : pV2.z;...pOut.
3170: 77 20 3d 20 70 56 31 2e 77 20 3e 20 70 56 32 2e  w = pV1.w > pV2.
3180: 77 20 3f 20 70 56 31 2e 77 20 3a 20 70 56 32 2e  w ? pV1.w : pV2.
3190: 77 3b 0d 0a 09 72 65 74 75 72 6e 20 70 4f 75 74  w;...return pOut
31a0: 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44 58 56 45 43 54  ;..}....D3DXVECT
31b0: 4f 52 34 2a 20 44 33 44 58 56 65 63 34 53 63 61  OR4* D3DXVec4Sca
31c0: 6c 65 28 44 33 44 58 56 45 43 54 4f 52 34 2a 20  le(D3DXVECTOR4* 
31d0: 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52  pOut, D3DXVECTOR
31e0: 34 2a 20 70 56 2c 20 66 6c 6f 61 74 20 73 29 20  4* pV, float s) 
31f0: 7b 0d 0a 09 64 65 62 75 67 28 44 33 44 58 31 30  {...debug(D3DX10
3200: 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 20  _DEBUG) {....if 
3210: 28 28 70 4f 75 74 20 69 73 20 6e 75 6c 6c 29 20  ((pOut is null) 
3220: 7c 7c 20 28 70 56 20 69 73 20 6e 75 6c 6c 29 29  || (pV is null))
3230: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09   return null;...
3240: 7d 0d 0a 09 70 4f 75 74 2e 78 20 3d 20 70 56 2e  }...pOut.x = pV.
3250: 78 20 2a 20 73 3b 0d 0a 09 70 4f 75 74 2e 79 20  x * s;...pOut.y 
3260: 3d 20 70 56 2e 79 20 2a 20 73 3b 0d 0a 09 70 4f  = pV.y * s;...pO
3270: 75 74 2e 7a 20 3d 20 70 56 2e 7a 20 2a 20 73 3b  ut.z = pV.z * s;
3280: 0d 0a 09 70 4f 75 74 2e 77 20 3d 20 70 56 2e 77  ...pOut.w = pV.w
3290: 20 2a 20 73 3b 0d 0a 09 72 65 74 75 72 6e 20 70   * s;...return p
32a0: 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44 58 56  Out;..}....D3DXV
32b0: 45 43 54 4f 52 34 2a 20 44 33 44 58 56 65 63 34  ECTOR4* D3DXVec4
32c0: 4c 65 72 70 28 44 33 44 58 56 45 43 54 4f 52 34  Lerp(D3DXVECTOR4
32d0: 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54  * pOut, D3DXVECT
32e0: 4f 52 34 2a 20 70 56 31 2c 20 44 33 44 58 56 45  OR4* pV1, D3DXVE
32f0: 43 54 4f 52 34 2a 20 70 56 32 2c 20 66 6c 6f 61  CTOR4* pV2, floa
3300: 74 20 73 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  t s) {...debug(D
3310: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
3320: 09 09 69 66 20 28 28 70 4f 75 74 20 69 73 20 6e  ..if ((pOut is n
3330: 75 6c 6c 29 20 7c 7c 20 28 70 56 31 20 69 73 20  ull) || (pV1 is 
3340: 6e 75 6c 6c 29 20 7c 7c 20 28 70 56 32 20 69 73  null) || (pV2 is
3350: 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e   null)) return n
3360: 75 6c 6c 3b 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e  ull;...}...pOut.
3370: 78 20 3d 20 70 56 31 2e 78 20 2b 20 73 20 2a 20  x = pV1.x + s * 
3380: 28 70 56 32 2e 78 20 2d 20 70 56 31 2e 78 29 3b  (pV2.x - pV1.x);
3390: 0d 0a 09 70 4f 75 74 2e 79 20 3d 20 70 56 31 2e  ...pOut.y = pV1.
33a0: 79 20 2b 20 73 20 2a 20 28 70 56 32 2e 79 20 2d  y + s * (pV2.y -
33b0: 20 70 56 31 2e 79 29 3b 0d 0a 09 70 4f 75 74 2e   pV1.y);...pOut.
33c0: 7a 20 3d 20 70 56 31 2e 7a 20 2b 20 73 20 2a 20  z = pV1.z + s * 
33d0: 28 70 56 32 2e 7a 20 2d 20 70 56 31 2e 7a 29 3b  (pV2.z - pV1.z);
33e0: 0d 0a 09 70 4f 75 74 2e 77 20 3d 20 70 56 31 2e  ...pOut.w = pV1.
33f0: 77 20 2b 20 73 20 2a 20 28 70 56 32 2e 77 20 2d  w + s * (pV2.w -
3400: 20 70 56 31 2e 77 29 3b 0d 0a 09 72 65 74 75 72   pV1.w);...retur
3410: 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 65 78  n pOut;..}....ex
3420: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 7b 0d  tern(Windows) {.
3430: 0a 09 44 33 44 58 56 45 43 54 4f 52 34 2a 20 44  ..D3DXVECTOR4* D
3440: 33 44 58 56 65 63 34 43 72 6f 73 73 28 44 33 44  3DXVec4Cross(D3D
3450: 58 56 45 43 54 4f 52 34 2a 20 70 4f 75 74 2c 20  XVECTOR4* pOut, 
3460: 44 33 44 58 56 45 43 54 4f 52 34 2a 20 70 56 31  D3DXVECTOR4* pV1
3470: 2c 20 44 33 44 58 56 45 43 54 4f 52 34 2a 20 70  , D3DXVECTOR4* p
3480: 56 32 2c 20 44 33 44 58 56 45 43 54 4f 52 34 2a  V2, D3DXVECTOR4*
3490: 20 70 56 33 29 3b 0d 0a 09 44 33 44 58 56 45 43   pV3);...D3DXVEC
34a0: 54 4f 52 34 2a 20 44 33 44 58 56 65 63 34 4e 6f  TOR4* D3DXVec4No
34b0: 72 6d 61 6c 69 7a 65 28 44 33 44 58 56 45 43 54  rmalize(D3DXVECT
34c0: 4f 52 34 2a 20 70 4f 75 74 2c 20 44 33 44 58 56  OR4* pOut, D3DXV
34d0: 45 43 54 4f 52 34 2a 20 70 56 29 3b 0d 0a 09 44  ECTOR4* pV);...D
34e0: 33 44 58 56 45 43 54 4f 52 34 2a 20 44 33 44 58  3DXVECTOR4* D3DX
34f0: 56 65 63 34 48 65 72 6d 69 74 65 28 44 33 44 58  Vec4Hermite(D3DX
3500: 56 45 43 54 4f 52 34 2a 20 70 4f 75 74 2c 20 44  VECTOR4* pOut, D
3510: 33 44 58 56 45 43 54 4f 52 34 2a 20 70 56 31 2c  3DXVECTOR4* pV1,
3520: 20 44 33 44 58 56 45 43 54 4f 52 34 2a 20 70 54   D3DXVECTOR4* pT
3530: 31 2c 20 44 33 44 58 56 45 43 54 4f 52 34 2a 20  1, D3DXVECTOR4* 
3540: 70 56 32 2c 20 44 33 44 58 56 45 43 54 4f 52 34  pV2, D3DXVECTOR4
3550: 2a 20 70 54 32 2c 20 46 4c 4f 41 54 20 73 29 3b  * pT2, FLOAT s);
3560: 0d 0a 09 44 33 44 58 56 45 43 54 4f 52 34 2a 20  ...D3DXVECTOR4* 
3570: 44 33 44 58 56 65 63 34 43 61 74 6d 75 6c 6c 52  D3DXVec4CatmullR
3580: 6f 6d 28 44 33 44 58 56 45 43 54 4f 52 34 2a 20  om(D3DXVECTOR4* 
3590: 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52  pOut, D3DXVECTOR
35a0: 34 2a 20 70 56 30 2c 20 44 33 44 58 56 45 43 54  4* pV0, D3DXVECT
35b0: 4f 52 34 2a 20 70 56 31 2c 20 44 33 44 58 56 45  OR4* pV1, D3DXVE
35c0: 43 54 4f 52 34 2a 20 70 56 32 2c 20 44 33 44 58  CTOR4* pV2, D3DX
35d0: 56 45 43 54 4f 52 34 2a 20 70 56 33 2c 20 46 4c  VECTOR4* pV3, FL
35e0: 4f 41 54 20 73 29 3b 0d 0a 09 44 33 44 58 56 45  OAT s);...D3DXVE
35f0: 43 54 4f 52 34 2a 20 44 33 44 58 56 65 63 34 42  CTOR4* D3DXVec4B
3600: 61 72 79 43 65 6e 74 72 69 63 28 44 33 44 58 56  aryCentric(D3DXV
3610: 45 43 54 4f 52 34 2a 20 70 4f 75 74 2c 20 44 33  ECTOR4* pOut, D3
3620: 44 58 56 45 43 54 4f 52 34 2a 20 70 56 31 2c 20  DXVECTOR4* pV1, 
3630: 44 33 44 58 56 45 43 54 4f 52 34 2a 20 70 56 32  D3DXVECTOR4* pV2
3640: 2c 20 44 33 44 58 56 45 43 54 4f 52 34 2a 20 70  , D3DXVECTOR4* p
3650: 56 33 2c 20 46 4c 4f 41 54 20 66 2c 20 46 4c 4f  V3, FLOAT f, FLO
3660: 41 54 20 67 29 3b 0d 0a 09 44 33 44 58 56 45 43  AT g);...D3DXVEC
3670: 54 4f 52 34 2a 20 44 33 44 58 56 65 63 34 54 72  TOR4* D3DXVec4Tr
3680: 61 6e 73 66 6f 72 6d 28 44 33 44 58 56 45 43 54  ansform(D3DXVECT
3690: 4f 52 34 2a 20 70 4f 75 74 2c 20 44 33 44 58 56  OR4* pOut, D3DXV
36a0: 45 43 54 4f 52 34 2a 20 70 56 2c 20 44 33 44 58  ECTOR4* pV, D3DX
36b0: 4d 41 54 52 49 58 2a 20 70 4d 29 3b 0d 0a 09 44  MATRIX* pM);...D
36c0: 33 44 58 56 45 43 54 4f 52 34 2a 20 44 33 44 58  3DXVECTOR4* D3DX
36d0: 56 65 63 34 54 72 61 6e 73 66 6f 72 6d 41 72 72  Vec4TransformArr
36e0: 61 79 28 44 33 44 58 56 45 43 54 4f 52 34 2a 20  ay(D3DXVECTOR4* 
36f0: 70 4f 75 74 2c 20 55 49 4e 54 20 4f 75 74 53 74  pOut, UINT OutSt
3700: 72 69 64 65 2c 20 44 33 44 58 56 45 43 54 4f 52  ride, D3DXVECTOR
3710: 34 2a 20 70 56 2c 20 55 49 4e 54 20 56 53 74 72  4* pV, UINT VStr
3720: 69 64 65 2c 20 44 33 44 58 4d 41 54 52 49 58 2a  ide, D3DXMATRIX*
3730: 20 70 4d 2c 20 55 49 4e 54 20 6e 29 3b 0d 0a 7d   pM, UINT n);..}
3740: 0d 0a 0d 0a 44 33 44 58 4d 41 54 52 49 58 2a 20  ....D3DXMATRIX* 
3750: 44 33 44 58 4d 61 74 72 69 78 49 64 65 6e 74 69  D3DXMatrixIdenti
3760: 74 79 28 44 33 44 58 4d 41 54 52 49 58 20 2a 70  ty(D3DXMATRIX *p
3770: 4f 75 74 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  Out) {...debug(D
3780: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
3790: 09 09 69 66 20 28 70 4f 75 74 20 69 73 20 6e 75  ..if (pOut is nu
37a0: 6c 6c 29 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b  ll) return NULL;
37b0: 0d 0a 09 7d 0d 0a 09 70 4f 75 74 2e 6d 5b 30 5d  ...}...pOut.m[0]
37c0: 5b 31 5d 20 3d 20 70 4f 75 74 2e 6d 5b 30 5d 5b  [1] = pOut.m[0][
37d0: 32 5d 20 3d 20 70 4f 75 74 2e 6d 5b 30 5d 5b 33  2] = pOut.m[0][3
37e0: 5d 20 3d 0d 0a 09 70 4f 75 74 2e 6d 5b 31 5d 5b  ] =...pOut.m[1][
37f0: 30 5d 20 3d 20 70 4f 75 74 2e 6d 5b 31 5d 5b 32  0] = pOut.m[1][2
3800: 5d 20 3d 20 70 4f 75 74 2e 6d 5b 31 5d 5b 33 5d  ] = pOut.m[1][3]
3810: 20 3d 0d 0a 09 70 4f 75 74 2e 6d 5b 32 5d 5b 30   =...pOut.m[2][0
3820: 5d 20 3d 20 70 4f 75 74 2e 6d 5b 32 5d 5b 31 5d  ] = pOut.m[2][1]
3830: 20 3d 20 70 4f 75 74 2e 6d 5b 32 5d 5b 33 5d 20   = pOut.m[2][3] 
3840: 3d 0d 0a 09 70 4f 75 74 2e 6d 5b 33 5d 5b 30 5d  =...pOut.m[3][0]
3850: 20 3d 20 70 4f 75 74 2e 6d 5b 33 5d 5b 31 5d 20   = pOut.m[3][1] 
3860: 3d 20 70 4f 75 74 2e 6d 5b 33 5d 5b 32 5d 20 3d  = pOut.m[3][2] =
3870: 20 30 2e 30 3b 0d 0a 09 70 4f 75 74 2e 6d 5b 30   0.0;...pOut.m[0
3880: 5d 5b 30 5d 20 3d 20 70 4f 75 74 2e 6d 5b 31 5d  ][0] = pOut.m[1]
3890: 5b 31 5d 20 3d 20 70 4f 75 74 2e 6d 5b 32 5d 5b  [1] = pOut.m[2][
38a0: 32 5d 20 3d 20 70 4f 75 74 2e 6d 5b 33 5d 5b 33  2] = pOut.m[3][3
38b0: 5d 20 3d 20 31 2e 30 3b 0d 0a 09 72 65 74 75 72  ] = 1.0;...retur
38c0: 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a  n pOut;..}......
38d0: 42 4f 4f 4c 20 44 33 44 58 4d 61 74 72 69 78 49  BOOL D3DXMatrixI
38e0: 73 49 64 65 6e 74 69 74 79 28 44 33 44 58 4d 41  sIdentity(D3DXMA
38f0: 54 52 49 58 20 2a 70 4d 29 20 7b 0d 0a 09 64 65  TRIX *pM) {...de
3900: 62 75 67 28 44 33 44 58 31 30 5f 44 45 42 55 47  bug(D3DX10_DEBUG
3910: 29 20 7b 0d 0a 09 09 69 66 28 70 4d 20 69 73 20  ) {....if(pM is 
3920: 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 46 41 4c  null) return FAL
3930: 53 45 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e  SE;...}...return
3940: 20 28 70 4d 2e 6d 5b 30 5d 5b 30 5d 20 3d 3d 20   (pM.m[0][0] == 
3950: 31 2e 30 66 29 20 26 26 20 28 70 4d 2e 6d 5b 30  1.0f) && (pM.m[0
3960: 5d 5b 31 5d 20 3d 3d 20 30 2e 30 66 29 20 26 26  ][1] == 0.0f) &&
3970: 20 28 70 4d 2e 6d 5b 30 5d 5b 32 5d 20 3d 3d 20   (pM.m[0][2] == 
3980: 30 2e 30 66 29 20 26 26 20 28 70 4d 2e 6d 5b 30  0.0f) && (pM.m[0
3990: 5d 5b 33 5d 20 3d 3d 20 30 2e 30 66 29 20 26 26  ][3] == 0.0f) &&
39a0: 0d 0a 09 20 20 20 20 20 20 20 28 70 4d 2e 6d 5b  ...       (pM.m[
39b0: 31 5d 5b 30 5d 20 3d 3d 20 30 2e 30 66 29 20 26  1][0] == 0.0f) &
39c0: 26 20 28 70 4d 2e 6d 5b 31 5d 5b 31 5d 20 3d 3d  & (pM.m[1][1] ==
39d0: 20 31 2e 30 66 29 20 26 26 20 28 70 4d 2e 6d 5b   1.0f) && (pM.m[
39e0: 31 5d 5b 32 5d 20 3d 3d 20 30 2e 30 66 29 20 26  1][2] == 0.0f) &
39f0: 26 20 28 70 4d 2e 6d 5b 31 5d 5b 33 5d 20 3d 3d  & (pM.m[1][3] ==
3a00: 20 30 2e 30 66 29 20 26 26 0d 0a 09 20 20 20 20   0.0f) &&...    
3a10: 20 20 20 28 70 4d 2e 6d 5b 32 5d 5b 30 5d 20 3d     (pM.m[2][0] =
3a20: 3d 20 30 2e 30 66 29 20 26 26 20 28 70 4d 2e 6d  = 0.0f) && (pM.m
3a30: 5b 32 5d 5b 31 5d 20 3d 3d 20 30 2e 30 66 29 20  [2][1] == 0.0f) 
3a40: 26 26 20 28 70 4d 2e 6d 5b 32 5d 5b 32 5d 20 3d  && (pM.m[2][2] =
3a50: 3d 20 31 2e 30 66 29 20 26 26 20 28 70 4d 2e 6d  = 1.0f) && (pM.m
3a60: 5b 32 5d 5b 33 5d 20 3d 3d 20 30 2e 30 66 29 20  [2][3] == 0.0f) 
3a70: 26 26 0d 0a 09 20 20 20 20 20 20 20 28 70 4d 2e  &&...       (pM.
3a80: 6d 5b 33 5d 5b 30 5d 20 3d 3d 20 30 2e 30 66 29  m[3][0] == 0.0f)
3a90: 20 26 26 20 28 70 4d 2e 6d 5b 33 5d 5b 31 5d 20   && (pM.m[3][1] 
3aa0: 3d 3d 20 30 2e 30 66 29 20 26 26 20 28 70 4d 2e  == 0.0f) && (pM.
3ab0: 6d 5b 33 5d 5b 32 5d 20 3d 3d 20 30 2e 30 66 29  m[3][2] == 0.0f)
3ac0: 20 26 26 20 28 70 4d 2e 6d 5b 33 5d 5b 33 5d 20   && (pM.m[3][3] 
3ad0: 3d 3d 20 31 2e 30 66 29 3b 0d 0a 7d 0d 0a 0d 0a  == 1.0f);..}....
3ae0: 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20  extern(Windows) 
3af0: 7b 0d 0a 09 46 4c 4f 41 54 20 44 33 44 58 4d 61  {...FLOAT D3DXMa
3b00: 74 72 69 78 44 65 74 65 72 6d 69 6e 61 6e 74 28  trixDeterminant(
3b10: 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4d 29 3b  D3DXMATRIX* pM);
3b20: 0d 0a 09 48 52 45 53 55 4c 54 20 44 33 44 58 4d  ...HRESULT D3DXM
3b30: 61 74 72 69 78 44 65 63 6f 6d 70 6f 73 65 28 44  atrixDecompose(D
3b40: 33 44 58 56 45 43 54 4f 52 33 2a 20 70 4f 75 74  3DXVECTOR3* pOut
3b50: 53 63 61 6c 65 2c 20 44 33 44 58 51 55 41 54 45  Scale, D3DXQUATE
3b60: 52 4e 49 4f 4e 2a 20 70 4f 75 74 52 6f 74 61 74  RNION* pOutRotat
3b70: 69 6f 6e 2c 20 44 33 44 58 56 45 43 54 4f 52 33  ion, D3DXVECTOR3
3b80: 2a 20 70 4f 75 74 54 72 61 6e 73 6c 61 74 69 6f  * pOutTranslatio
3b90: 6e 2c 20 44 33 44 58 4d 41 54 52 49 58 2a 20 70  n, D3DXMATRIX* p
3ba0: 4d 29 3b 0d 0a 09 44 33 44 58 4d 41 54 52 49 58  M);...D3DXMATRIX
3bb0: 2a 20 44 33 44 58 4d 61 74 72 69 78 54 72 61 6e  * D3DXMatrixTran
3bc0: 73 70 6f 73 65 28 44 33 44 58 4d 41 54 52 49 58  spose(D3DXMATRIX
3bd0: 2a 20 70 4f 75 74 2c 20 44 33 44 58 4d 41 54 52  * pOut, D3DXMATR
3be0: 49 58 2a 20 70 4d 29 3b 0d 0a 09 44 33 44 58 4d  IX* pM);...D3DXM
3bf0: 41 54 52 49 58 2a 20 44 33 44 58 4d 61 74 72 69  ATRIX* D3DXMatri
3c00: 78 4d 75 6c 74 69 70 6c 79 28 44 33 44 58 4d 41  xMultiply(D3DXMA
3c10: 54 52 49 58 2a 20 70 4f 75 74 2c 20 44 33 44 58  TRIX* pOut, D3DX
3c20: 4d 41 54 52 49 58 2a 20 70 4d 31 2c 20 44 33 44  MATRIX* pM1, D3D
3c30: 58 4d 41 54 52 49 58 2a 20 70 4d 32 29 3b 0d 0a  XMATRIX* pM2);..
3c40: 09 44 33 44 58 4d 41 54 52 49 58 2a 20 44 33 44  .D3DXMATRIX* D3D
3c50: 58 4d 61 74 72 69 78 4d 75 6c 74 69 70 6c 79 54  XMatrixMultiplyT
3c60: 72 61 6e 73 70 6f 73 65 28 44 33 44 58 4d 41 54  ranspose(D3DXMAT
3c70: 52 49 58 2a 20 70 4f 75 74 2c 20 44 33 44 58 4d  RIX* pOut, D3DXM
3c80: 41 54 52 49 58 2a 20 70 4d 31 2c 20 44 33 44 58  ATRIX* pM1, D3DX
3c90: 4d 41 54 52 49 58 2a 20 70 4d 32 29 3b 0d 0a 09  MATRIX* pM2);...
3ca0: 44 33 44 58 4d 41 54 52 49 58 2a 20 44 33 44 58  D3DXMATRIX* D3DX
3cb0: 4d 61 74 72 69 78 49 6e 76 65 72 73 65 28 44 33  MatrixInverse(D3
3cc0: 44 58 4d 41 54 52 49 58 2a 20 70 4f 75 74 2c 20  DXMATRIX* pOut, 
3cd0: 46 4c 4f 41 54 2a 20 70 44 65 74 65 72 6d 69 6e  FLOAT* pDetermin
3ce0: 61 6e 74 2c 20 44 33 44 58 4d 41 54 52 49 58 2a  ant, D3DXMATRIX*
3cf0: 20 70 4d 29 3b 0d 0a 09 44 33 44 58 4d 41 54 52   pM);...D3DXMATR
3d00: 49 58 2a 20 44 33 44 58 4d 61 74 72 69 78 53 63  IX* D3DXMatrixSc
3d10: 61 6c 69 6e 67 28 44 33 44 58 4d 41 54 52 49 58  aling(D3DXMATRIX
3d20: 2a 20 70 4f 75 74 2c 20 46 4c 4f 41 54 20 73 78  * pOut, FLOAT sx
3d30: 2c 20 46 4c 4f 41 54 20 73 79 2c 20 46 4c 4f 41  , FLOAT sy, FLOA
3d40: 54 20 73 7a 29 3b 0d 0a 09 44 33 44 58 4d 41 54  T sz);...D3DXMAT
3d50: 52 49 58 2a 20 44 33 44 58 4d 61 74 72 69 78 54  RIX* D3DXMatrixT
3d60: 72 61 6e 73 6c 61 74 69 6f 6e 28 44 33 44 58 4d  ranslation(D3DXM
3d70: 41 54 52 49 58 2a 20 70 4f 75 74 2c 20 46 4c 4f  ATRIX* pOut, FLO
3d80: 41 54 20 78 2c 20 46 4c 4f 41 54 20 79 2c 20 46  AT x, FLOAT y, F
3d90: 4c 4f 41 54 20 7a 29 3b 0d 0a 09 44 33 44 58 4d  LOAT z);...D3DXM
3da0: 41 54 52 49 58 2a 20 44 33 44 58 4d 61 74 72 69  ATRIX* D3DXMatri
3db0: 78 52 6f 74 61 74 69 6f 6e 58 28 44 33 44 58 4d  xRotationX(D3DXM
3dc0: 41 54 52 49 58 2a 20 70 4f 75 74 2c 20 46 4c 4f  ATRIX* pOut, FLO
3dd0: 41 54 20 41 6e 67 6c 65 29 3b 0d 0a 09 44 33 44  AT Angle);...D3D
3de0: 58 4d 41 54 52 49 58 2a 20 44 33 44 58 4d 61 74  XMATRIX* D3DXMat
3df0: 72 69 78 52 6f 74 61 74 69 6f 6e 59 28 44 33 44  rixRotationY(D3D
3e00: 58 4d 41 54 52 49 58 2a 20 70 4f 75 74 2c 20 46  XMATRIX* pOut, F
3e10: 4c 4f 41 54 20 41 6e 67 6c 65 29 3b 0d 0a 09 44  LOAT Angle);...D
3e20: 33 44 58 4d 41 54 52 49 58 2a 20 44 33 44 58 4d  3DXMATRIX* D3DXM
3e30: 61 74 72 69 78 52 6f 74 61 74 69 6f 6e 5a 28 44  atrixRotationZ(D
3e40: 33 44 58 4d 41 54 52 49 58 2a 20 70 4f 75 74 2c  3DXMATRIX* pOut,
3e50: 20 46 4c 4f 41 54 20 41 6e 67 6c 65 29 3b 0d 0a   FLOAT Angle);..
3e60: 09 44 33 44 58 4d 41 54 52 49 58 2a 20 44 33 44  .D3DXMATRIX* D3D
3e70: 58 4d 61 74 72 69 78 52 6f 74 61 74 69 6f 6e 41  XMatrixRotationA
3e80: 78 69 73 28 44 33 44 58 4d 41 54 52 49 58 2a 20  xis(D3DXMATRIX* 
3e90: 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52  pOut, D3DXVECTOR
3ea0: 33 2a 20 70 56 2c 20 46 4c 4f 41 54 20 41 6e 67  3* pV, FLOAT Ang
3eb0: 6c 65 29 3b 0d 0a 09 44 33 44 58 4d 41 54 52 49  le);...D3DXMATRI
3ec0: 58 2a 20 44 33 44 58 4d 61 74 72 69 78 52 6f 74  X* D3DXMatrixRot
3ed0: 61 74 69 6f 6e 51 75 61 74 65 72 6e 69 6f 6e 28  ationQuaternion(
3ee0: 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4f 75 74  D3DXMATRIX* pOut
3ef0: 2c 20 44 33 44 58 51 55 41 54 45 52 4e 49 4f 4e  , D3DXQUATERNION
3f00: 2a 20 70 51 29 3b 0d 0a 09 44 33 44 58 4d 41 54  * pQ);...D3DXMAT
3f10: 52 49 58 2a 20 44 33 44 58 4d 61 74 72 69 78 52  RIX* D3DXMatrixR
3f20: 6f 74 61 74 69 6f 6e 59 61 77 50 69 74 63 68 52  otationYawPitchR
3f30: 6f 6c 6c 28 44 33 44 58 4d 41 54 52 49 58 2a 20  oll(D3DXMATRIX* 
3f40: 70 4f 75 74 2c 20 46 4c 4f 41 54 20 59 61 77 2c  pOut, FLOAT Yaw,
3f50: 20 46 4c 4f 41 54 20 50 69 74 63 68 2c 20 46 4c   FLOAT Pitch, FL
3f60: 4f 41 54 20 52 6f 6c 6c 29 3b 0d 0a 09 44 33 44  OAT Roll);...D3D
3f70: 58 4d 41 54 52 49 58 2a 20 44 33 44 58 4d 61 74  XMATRIX* D3DXMat
3f80: 72 69 78 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f  rixTransformatio
3f90: 6e 28 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4f  n(D3DXMATRIX* pO
3fa0: 75 74 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a  ut, D3DXVECTOR3*
3fb0: 20 70 53 63 61 6c 69 6e 67 43 65 6e 74 65 72 2c   pScalingCenter,
3fc0: 20 44 33 44 58 51 55 41 54 45 52 4e 49 4f 4e 2a   D3DXQUATERNION*
3fd0: 20 70 53 63 61 6c 69 6e 67 52 6f 74 61 74 69 6f   pScalingRotatio
3fe0: 6e 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20  n, D3DXVECTOR3* 
3ff0: 70 53 63 61 6c 69 6e 67 2c 20 44 33 44 58 56 45  pScaling, D3DXVE
4000: 43 54 4f 52 33 2a 20 70 52 6f 74 61 74 69 6f 6e  CTOR3* pRotation
4010: 43 65 6e 74 65 72 2c 20 44 33 44 58 51 55 41 54  Center, D3DXQUAT
4020: 45 52 4e 49 4f 4e 2a 20 70 52 6f 74 61 74 69 6f  ERNION* pRotatio
4030: 6e 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20  n, D3DXVECTOR3* 
4040: 70 54 72 61 6e 73 6c 61 74 69 6f 6e 29 3b 0d 0a  pTranslation);..
4050: 09 44 33 44 58 4d 41 54 52 49 58 2a 20 44 33 44  .D3DXMATRIX* D3D
4060: 58 4d 61 74 72 69 78 54 72 61 6e 73 66 6f 72 6d  XMatrixTransform
4070: 61 74 69 6f 6e 32 44 28 44 33 44 58 4d 41 54 52  ation2D(D3DXMATR
4080: 49 58 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45  IX* pOut, D3DXVE
4090: 43 54 4f 52 32 2a 20 70 53 63 61 6c 69 6e 67 43  CTOR2* pScalingC
40a0: 65 6e 74 65 72 2c 20 46 4c 4f 41 54 20 53 63 61  enter, FLOAT Sca
40b0: 6c 69 6e 67 52 6f 74 61 74 69 6f 6e 2c 20 44 33  lingRotation, D3
40c0: 44 58 56 45 43 54 4f 52 32 2a 20 70 53 63 61 6c  DXVECTOR2* pScal
40d0: 69 6e 67 2c 20 44 33 44 58 56 45 43 54 4f 52 32  ing, D3DXVECTOR2
40e0: 2a 20 70 52 6f 74 61 74 69 6f 6e 43 65 6e 74 65  * pRotationCente
40f0: 72 2c 20 46 4c 4f 41 54 20 52 6f 74 61 74 69 6f  r, FLOAT Rotatio
4100: 6e 2c 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20  n, D3DXVECTOR2* 
4110: 70 54 72 61 6e 73 6c 61 74 69 6f 6e 29 3b 0d 0a  pTranslation);..
4120: 09 44 33 44 58 4d 41 54 52 49 58 2a 20 44 33 44  .D3DXMATRIX* D3D
4130: 58 4d 61 74 72 69 78 41 66 66 69 6e 65 54 72 61  XMatrixAffineTra
4140: 6e 73 66 6f 72 6d 61 74 69 6f 6e 28 44 33 44 58  nsformation(D3DX
4150: 4d 41 54 52 49 58 2a 20 70 4f 75 74 2c 20 46 4c  MATRIX* pOut, FL
4160: 4f 41 54 20 53 63 61 6c 69 6e 67 2c 20 44 33 44  OAT Scaling, D3D
4170: 58 56 45 43 54 4f 52 33 2a 20 70 52 6f 74 61 74  XVECTOR3* pRotat
4180: 69 6f 6e 43 65 6e 74 65 72 2c 20 44 33 44 58 51  ionCenter, D3DXQ
4190: 55 41 54 45 52 4e 49 4f 4e 2a 20 70 52 6f 74 61  UATERNION* pRota
41a0: 74 69 6f 6e 2c 20 44 33 44 58 56 45 43 54 4f 52  tion, D3DXVECTOR
41b0: 33 2a 20 70 54 72 61 6e 73 6c 61 74 69 6f 6e 29  3* pTranslation)
41c0: 3b 0d 0a 09 44 33 44 58 4d 41 54 52 49 58 2a 20  ;...D3DXMATRIX* 
41d0: 44 33 44 58 4d 61 74 72 69 78 41 66 66 69 6e 65  D3DXMatrixAffine
41e0: 54 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 32 44  Transformation2D
41f0: 28 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4f 75  (D3DXMATRIX* pOu
4200: 74 2c 20 46 4c 4f 41 54 20 53 63 61 6c 69 6e 67  t, FLOAT Scaling
4210: 2c 20 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70  , D3DXVECTOR2* p
4220: 52 6f 74 61 74 69 6f 6e 43 65 6e 74 65 72 2c 20  RotationCenter, 
4230: 46 4c 4f 41 54 20 52 6f 74 61 74 69 6f 6e 2c 20  FLOAT Rotation, 
4240: 44 33 44 58 56 45 43 54 4f 52 32 2a 20 70 54 72  D3DXVECTOR2* pTr
4250: 61 6e 73 6c 61 74 69 6f 6e 29 3b 0d 0a 09 44 33  anslation);...D3
4260: 44 58 4d 41 54 52 49 58 2a 20 44 33 44 58 4d 61  DXMATRIX* D3DXMa
4270: 74 72 69 78 4c 6f 6f 6b 41 74 52 48 28 44 33 44  trixLookAtRH(D3D
4280: 58 4d 41 54 52 49 58 2a 20 70 4f 75 74 2c 20 44  XMATRIX* pOut, D
4290: 33 44 58 56 45 43 54 4f 52 33 2a 20 70 45 79 65  3DXVECTOR3* pEye
42a0: 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70  , D3DXVECTOR3* p
42b0: 41 74 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a  At, D3DXVECTOR3*
42c0: 20 70 55 70 29 3b 0d 0a 09 44 33 44 58 4d 41 54   pUp);...D3DXMAT
42d0: 52 49 58 2a 20 44 33 44 58 4d 61 74 72 69 78 4c  RIX* D3DXMatrixL
42e0: 6f 6f 6b 41 74 4c 48 28 44 33 44 58 4d 41 54 52  ookAtLH(D3DXMATR
42f0: 49 58 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45  IX* pOut, D3DXVE
4300: 43 54 4f 52 33 2a 20 70 45 79 65 2c 20 44 33 44  CTOR3* pEye, D3D
4310: 58 56 45 43 54 4f 52 33 2a 20 70 41 74 2c 20 44  XVECTOR3* pAt, D
4320: 33 44 58 56 45 43 54 4f 52 33 2a 20 70 55 70 29  3DXVECTOR3* pUp)
4330: 3b 0d 0a 09 44 33 44 58 4d 41 54 52 49 58 2a 20  ;...D3DXMATRIX* 
4340: 44 33 44 58 4d 61 74 72 69 78 50 65 72 73 70 65  D3DXMatrixPerspe
4350: 63 74 69 76 65 52 48 28 44 33 44 58 4d 41 54 52  ctiveRH(D3DXMATR
4360: 49 58 2a 20 70 4f 75 74 2c 20 46 4c 4f 41 54 20  IX* pOut, FLOAT 
4370: 77 2c 20 46 4c 4f 41 54 20 68 2c 20 46 4c 4f 41  w, FLOAT h, FLOA
4380: 54 20 7a 6e 2c 20 46 4c 4f 41 54 20 7a 66 29 3b  T zn, FLOAT zf);
4390: 0d 0a 09 44 33 44 58 4d 41 54 52 49 58 2a 20 44  ...D3DXMATRIX* D
43a0: 33 44 58 4d 61 74 72 69 78 50 65 72 73 70 65 63  3DXMatrixPerspec
43b0: 74 69 76 65 4c 48 28 44 33 44 58 4d 41 54 52 49  tiveLH(D3DXMATRI
43c0: 58 2a 20 70 4f 75 74 2c 20 46 4c 4f 41 54 20 77  X* pOut, FLOAT w
43d0: 2c 20 46 4c 4f 41 54 20 68 2c 20 46 4c 4f 41 54  , FLOAT h, FLOAT
43e0: 20 7a 6e 2c 20 46 4c 4f 41 54 20 7a 66 29 3b 0d   zn, FLOAT zf);.
43f0: 0a 09 44 33 44 58 4d 41 54 52 49 58 2a 20 44 33  ..D3DXMATRIX* D3
4400: 44 58 4d 61 74 72 69 78 50 65 72 73 70 65 63 74  DXMatrixPerspect
4410: 69 76 65 46 6f 76 52 48 28 44 33 44 58 4d 41 54  iveFovRH(D3DXMAT
4420: 52 49 58 2a 20 70 4f 75 74 2c 20 46 4c 4f 41 54  RIX* pOut, FLOAT
4430: 20 66 6f 76 79 2c 20 46 4c 4f 41 54 20 41 73 70   fovy, FLOAT Asp
4440: 65 63 74 2c 20 46 4c 4f 41 54 20 7a 6e 2c 20 46  ect, FLOAT zn, F
4450: 4c 4f 41 54 20 7a 66 29 3b 0d 0a 09 44 33 44 58  LOAT zf);...D3DX
4460: 4d 41 54 52 49 58 2a 20 44 33 44 58 4d 61 74 72  MATRIX* D3DXMatr
4470: 69 78 50 65 72 73 70 65 63 74 69 76 65 46 6f 76  ixPerspectiveFov
4480: 4c 48 28 44 33 44 58 4d 41 54 52 49 58 2a 20 70  LH(D3DXMATRIX* p
4490: 4f 75 74 2c 20 46 4c 4f 41 54 20 66 6f 76 79 2c  Out, FLOAT fovy,
44a0: 20 46 4c 4f 41 54 20 41 73 70 65 63 74 2c 20 46   FLOAT Aspect, F
44b0: 4c 4f 41 54 20 7a 6e 2c 20 46 4c 4f 41 54 20 7a  LOAT zn, FLOAT z
44c0: 66 29 3b 0d 0a 09 44 33 44 58 4d 41 54 52 49 58  f);...D3DXMATRIX
44d0: 2a 20 44 33 44 58 4d 61 74 72 69 78 50 65 72 73  * D3DXMatrixPers
44e0: 70 65 63 74 69 76 65 4f 66 66 43 65 6e 74 65 72  pectiveOffCenter
44f0: 52 48 28 44 33 44 58 4d 41 54 52 49 58 2a 20 70  RH(D3DXMATRIX* p
4500: 4f 75 74 2c 20 46 4c 4f 41 54 20 6c 2c 20 46 4c  Out, FLOAT l, FL
4510: 4f 41 54 20 72 2c 20 46 4c 4f 41 54 20 62 2c 20  OAT r, FLOAT b, 
4520: 46 4c 4f 41 54 20 74 2c 20 46 4c 4f 41 54 20 7a  FLOAT t, FLOAT z
4530: 6e 2c 20 46 4c 4f 41 54 20 7a 66 29 3b 0d 0a 09  n, FLOAT zf);...
4540: 44 33 44 58 4d 41 54 52 49 58 2a 20 44 33 44 58  D3DXMATRIX* D3DX
4550: 4d 61 74 72 69 78 50 65 72 73 70 65 63 74 69 76  MatrixPerspectiv
4560: 65 4f 66 66 43 65 6e 74 65 72 4c 48 28 44 33 44  eOffCenterLH(D3D
4570: 58 4d 41 54 52 49 58 2a 20 70 4f 75 74 2c 20 46  XMATRIX* pOut, F
4580: 4c 4f 41 54 20 6c 2c 20 46 4c 4f 41 54 20 72 2c  LOAT l, FLOAT r,
4590: 20 46 4c 4f 41 54 20 62 2c 20 46 4c 4f 41 54 20   FLOAT b, FLOAT 
45a0: 74 2c 20 46 4c 4f 41 54 20 7a 6e 2c 20 46 4c 4f  t, FLOAT zn, FLO
45b0: 41 54 20 7a 66 29 3b 0d 0a 09 44 33 44 58 4d 41  AT zf);...D3DXMA
45c0: 54 52 49 58 2a 20 44 33 44 58 4d 61 74 72 69 78  TRIX* D3DXMatrix
45d0: 4f 72 74 68 6f 52 48 28 44 33 44 58 4d 41 54 52  OrthoRH(D3DXMATR
45e0: 49 58 2a 20 70 4f 75 74 2c 20 46 4c 4f 41 54 20  IX* pOut, FLOAT 
45f0: 77 2c 20 46 4c 4f 41 54 20 68 2c 20 46 4c 4f 41  w, FLOAT h, FLOA
4600: 54 20 7a 6e 2c 20 46 4c 4f 41 54 20 7a 66 29 3b  T zn, FLOAT zf);
4610: 0d 0a 09 44 33 44 58 4d 41 54 52 49 58 2a 20 44  ...D3DXMATRIX* D
4620: 33 44 58 4d 61 74 72 69 78 4f 72 74 68 6f 4c 48  3DXMatrixOrthoLH
4630: 28 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4f 75  (D3DXMATRIX* pOu
4640: 74 2c 20 46 4c 4f 41 54 20 77 2c 20 46 4c 4f 41  t, FLOAT w, FLOA
4650: 54 20 68 2c 20 46 4c 4f 41 54 20 7a 6e 2c 20 46  T h, FLOAT zn, F
4660: 4c 4f 41 54 20 7a 66 29 3b 0d 0a 09 44 33 44 58  LOAT zf);...D3DX
4670: 4d 41 54 52 49 58 2a 20 44 33 44 58 4d 61 74 72  MATRIX* D3DXMatr
4680: 69 78 4f 72 74 68 6f 4f 66 66 43 65 6e 74 65 72  ixOrthoOffCenter
4690: 52 48 28 44 33 44 58 4d 41 54 52 49 58 2a 20 70  RH(D3DXMATRIX* p
46a0: 4f 75 74 2c 20 46 4c 4f 41 54 20 6c 2c 20 46 4c  Out, FLOAT l, FL
46b0: 4f 41 54 20 72 2c 20 46 4c 4f 41 54 20 62 2c 20  OAT r, FLOAT b, 
46c0: 46 4c 4f 41 54 20 74 2c 20 46 4c 4f 41 54 20 7a  FLOAT t, FLOAT z
46d0: 6e 2c 20 46 4c 4f 41 54 20 7a 66 29 3b 0d 0a 09  n, FLOAT zf);...
46e0: 44 33 44 58 4d 41 54 52 49 58 2a 20 44 33 44 58  D3DXMATRIX* D3DX
46f0: 4d 61 74 72 69 78 4f 72 74 68 6f 4f 66 66 43 65  MatrixOrthoOffCe
4700: 6e 74 65 72 4c 48 28 44 33 44 58 4d 41 54 52 49  nterLH(D3DXMATRI
4710: 58 2a 20 70 4f 75 74 2c 20 46 4c 4f 41 54 20 6c  X* pOut, FLOAT l
4720: 2c 20 46 4c 4f 41 54 20 72 2c 20 46 4c 4f 41 54  , FLOAT r, FLOAT
4730: 20 62 2c 20 46 4c 4f 41 54 20 74 2c 20 46 4c 4f   b, FLOAT t, FLO
4740: 41 54 20 7a 6e 2c 20 46 4c 4f 41 54 20 7a 66 29  AT zn, FLOAT zf)
4750: 3b 0d 0a 09 44 33 44 58 4d 41 54 52 49 58 2a 20  ;...D3DXMATRIX* 
4760: 44 33 44 58 4d 61 74 72 69 78 53 68 61 64 6f 77  D3DXMatrixShadow
4770: 28 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4f 75  (D3DXMATRIX* pOu
4780: 74 2c 20 44 33 44 58 56 45 43 54 4f 52 34 2a 20  t, D3DXVECTOR4* 
4790: 70 4c 69 67 68 74 2c 20 44 33 44 58 50 4c 41 4e  pLight, D3DXPLAN
47a0: 45 2a 20 70 50 6c 61 6e 65 29 3b 0d 0a 09 44 33  E* pPlane);...D3
47b0: 44 58 4d 41 54 52 49 58 2a 20 44 33 44 58 4d 61  DXMATRIX* D3DXMa
47c0: 74 72 69 78 52 65 66 6c 65 63 74 28 44 33 44 58  trixReflect(D3DX
47d0: 4d 41 54 52 49 58 2a 20 70 4f 75 74 2c 20 44 33  MATRIX* pOut, D3
47e0: 44 58 50 4c 41 4e 45 2a 20 70 50 6c 61 6e 65 29  DXPLANE* pPlane)
47f0: 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f 61 74 20 44 33  ;..}....float D3
4800: 44 58 51 75 61 74 65 72 6e 69 6f 6e 4c 65 6e 67  DXQuaternionLeng
4810: 74 68 28 44 33 44 58 51 55 41 54 45 52 4e 49 4f  th(D3DXQUATERNIO
4820: 4e 20 2a 70 51 29 20 7b 0d 0a 09 64 65 62 75 67  N *pQ) {...debug
4830: 28 44 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b  (D3DX10_DEBUG) {
4840: 0d 0a 09 09 69 66 20 28 70 51 20 69 73 20 6e 75  ....if (pQ is nu
4850: 6c 6c 29 20 72 65 74 75 72 6e 20 30 2e 30 66 3b  ll) return 0.0f;
4860: 0d 0a 09 7d 0d 0a 20 20 20 20 72 65 74 75 72 6e  ...}..    return
4870: 20 73 71 72 74 66 28 28 70 51 2e 78 20 2a 20 70   sqrtf((pQ.x * p
4880: 51 2e 78 29 20 2b 20 28 70 51 2e 79 20 2a 20 70  Q.x) + (pQ.y * p
4890: 51 2e 79 29 20 2b 20 28 70 51 2e 7a 20 2a 20 70  Q.y) + (pQ.z * p
48a0: 51 2e 7a 29 20 2b 20 28 70 51 2e 77 20 2a 20 70  Q.z) + (pQ.w * p
48b0: 51 2e 77 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f  Q.w));..}....flo
48c0: 61 74 20 44 33 44 58 51 75 61 74 65 72 6e 69 6f  at D3DXQuaternio
48d0: 6e 4c 65 6e 67 74 68 53 71 28 44 33 44 58 51 55  nLengthSq(D3DXQU
48e0: 41 54 45 52 4e 49 4f 4e 20 2a 70 51 29 20 7b 0d  ATERNION *pQ) {.
48f0: 0a 09 64 65 62 75 67 28 44 33 44 58 31 30 5f 44  ..debug(D3DX10_D
4900: 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 28 70 51  EBUG) {....if(pQ
4910: 20 69 73 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e   is null) return
4920: 20 30 2e 30 66 3b 0d 0a 09 7d 0d 0a 20 20 20 20   0.0f;...}..    
4930: 72 65 74 75 72 6e 20 28 70 51 2e 78 20 2a 20 70  return (pQ.x * p
4940: 51 2e 78 29 20 2b 20 28 70 51 2e 79 20 2a 20 70  Q.x) + (pQ.y * p
4950: 51 2e 79 29 20 2b 20 28 70 51 2e 7a 20 2a 20 70  Q.y) + (pQ.z * p
4960: 51 2e 7a 29 20 2b 20 28 70 51 2e 77 20 2a 20 70  Q.z) + (pQ.w * p
4970: 51 2e 77 29 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f 61  Q.w);..}....floa
4980: 74 20 44 33 44 58 51 75 61 74 65 72 6e 69 6f 6e  t D3DXQuaternion
4990: 44 6f 74 28 44 33 44 58 51 55 41 54 45 52 4e 49  Dot(D3DXQUATERNI
49a0: 4f 4e 20 2a 70 51 31 2c 20 44 33 44 58 51 55 41  ON *pQ1, D3DXQUA
49b0: 54 45 52 4e 49 4f 4e 20 2a 70 51 32 29 20 7b 0d  TERNION *pQ2) {.
49c0: 0a 09 64 65 62 75 67 28 44 33 44 58 31 30 5f 44  ..debug(D3DX10_D
49d0: 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 28 28 70  EBUG) {....if((p
49e0: 51 31 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28  Q1 is null) || (
49f0: 70 51 32 20 69 73 20 6e 75 6c 6c 29 29 20 72 65  pQ2 is null)) re
4a00: 74 75 72 6e 20 30 2e 30 66 3b 0d 0a 09 7d 0d 0a  turn 0.0f;...}..
4a10: 20 20 20 20 72 65 74 75 72 6e 20 28 70 51 31 2e      return (pQ1.
4a20: 78 20 2a 20 70 51 32 2e 78 29 20 2b 20 28 70 51  x * pQ2.x) + (pQ
4a30: 31 2e 79 20 2a 20 70 51 32 2e 79 29 20 2b 20 28  1.y * pQ2.y) + (
4a40: 70 51 31 2e 7a 20 2a 20 70 51 32 2e 7a 29 20 2b  pQ1.z * pQ2.z) +
4a50: 20 28 70 51 31 2e 77 20 2a 20 70 51 32 2e 77 29   (pQ1.w * pQ2.w)
4a60: 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44 58 51 55 41 54  ;..}....D3DXQUAT
4a70: 45 52 4e 49 4f 4e 2a 20 44 33 44 58 51 75 61 74  ERNION* D3DXQuat
4a80: 65 72 6e 69 6f 6e 49 64 65 6e 74 69 74 79 28 44  ernionIdentity(D
4a90: 33 44 58 51 55 41 54 45 52 4e 49 4f 4e 20 2a 70  3DXQUATERNION *p
4aa0: 4f 75 74 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  Out) {...debug(D
4ab0: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
4ac0: 09 09 69 66 28 70 4f 75 74 20 69 73 20 6e 75 6c  ..if(pOut is nul
4ad0: 6c 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d  l) return null;.
4ae0: 0a 09 7d 0d 0a 20 20 20 20 70 4f 75 74 2e 78 20  ..}..    pOut.x 
4af0: 3d 20 70 4f 75 74 2e 79 20 3d 20 70 4f 75 74 2e  = pOut.y = pOut.
4b00: 7a 20 3d 20 30 2e 30 66 3b 0d 0a 20 20 20 20 70  z = 0.0f;..    p
4b10: 4f 75 74 2e 77 20 3d 20 31 2e 30 66 3b 0d 0a 20  Out.w = 1.0f;.. 
4b20: 20 20 20 72 65 74 75 72 6e 20 70 4f 75 74 3b 0d     return pOut;.
4b30: 0a 7d 0d 0a 0d 0a 62 6f 6f 6c 20 44 33 44 58 51  .}....bool D3DXQ
4b40: 75 61 74 65 72 6e 69 6f 6e 49 73 49 64 65 6e 74  uaternionIsIdent
4b50: 69 74 79 28 44 33 44 58 51 55 41 54 45 52 4e 49  ity(D3DXQUATERNI
4b60: 4f 4e 20 2a 70 51 29 20 7b 0d 0a 09 64 65 62 75  ON *pQ) {...debu
4b70: 67 28 44 33 44 58 31 30 5f 44 45 42 55 47 29 20  g(D3DX10_DEBUG) 
4b80: 7b 0d 0a 09 09 69 66 28 70 51 20 69 73 20 6e 75  {....if(pQ is nu
4b90: 6c 6c 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65  ll) return false
4ba0: 3b 0d 0a 09 7d 0d 0a 20 20 20 20 72 65 74 75 72  ;...}..    retur
4bb0: 6e 20 28 70 51 2e 78 20 3d 3d 20 30 2e 30 66 29  n (pQ.x == 0.0f)
4bc0: 20 26 26 20 28 70 51 2e 79 20 3d 3d 20 30 2e 30   && (pQ.y == 0.0
4bd0: 66 29 20 26 26 20 28 70 51 2e 7a 20 3d 3d 20 30  f) && (pQ.z == 0
4be0: 2e 30 66 29 20 26 26 20 28 70 51 2e 77 20 3d 3d  .0f) && (pQ.w ==
4bf0: 20 31 2e 30 66 29 3b 0d 0a 7d 0d 0a 0d 0a 44 33   1.0f);..}....D3
4c00: 44 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 44 33  DXQUATERNION* D3
4c10: 44 58 51 75 61 74 65 72 6e 69 6f 6e 43 6f 6e 6a  DXQuaternionConj
4c20: 75 67 61 74 65 28 44 33 44 58 51 55 41 54 45 52  ugate(D3DXQUATER
4c30: 4e 49 4f 4e 20 2a 70 4f 75 74 2c 20 44 33 44 58  NION *pOut, D3DX
4c40: 51 55 41 54 45 52 4e 49 4f 4e 20 2a 70 51 29 20  QUATERNION *pQ) 
4c50: 7b 0d 0a 09 64 65 62 75 67 28 44 33 44 58 31 30  {...debug(D3DX10
4c60: 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 28  _DEBUG) {....if(
4c70: 28 70 4f 75 74 20 69 73 20 6e 75 6c 6c 29 20 7c  (pOut is null) |
4c80: 7c 20 28 70 51 69 73 20 69 73 20 6e 75 6c 6c 29  | (pQis is null)
4c90: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
4ca0: 09 7d 0d 0a 20 20 20 20 70 4f 75 74 2e 78 20 3d  .}..    pOut.x =
4cb0: 20 2d 70 51 2e 78 3b 0d 0a 20 20 20 20 70 4f 75   -pQ.x;..    pOu
4cc0: 74 2e 79 20 3d 20 2d 70 51 2e 79 3b 0d 0a 20 20  t.y = -pQ.y;..  
4cd0: 20 20 70 4f 75 74 2e 7a 20 3d 20 2d 70 51 2e 7a    pOut.z = -pQ.z
4ce0: 3b 0d 0a 20 20 20 20 70 4f 75 74 2e 77 20 3d 20  ;..    pOut.w = 
4cf0: 20 70 51 2e 77 3b 0d 0a 20 20 20 20 72 65 74 75   pQ.w;..    retu
4d00: 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 65  rn pOut;..}....e
4d10: 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 7b  xtern(Windows) {
4d20: 0d 0a 09 76 6f 69 64 20 44 33 44 58 51 75 61 74  ...void D3DXQuat
4d30: 65 72 6e 69 6f 6e 54 6f 41 78 69 73 41 6e 67 6c  ernionToAxisAngl
4d40: 65 28 44 33 44 58 51 55 41 54 45 52 4e 49 4f 4e  e(D3DXQUATERNION
4d50: 2a 20 70 51 2c 20 44 33 44 58 56 45 43 54 4f 52  * pQ, D3DXVECTOR
4d60: 33 2a 20 70 41 78 69 73 2c 20 46 4c 4f 41 54 2a  3* pAxis, FLOAT*
4d70: 20 70 41 6e 67 6c 65 29 3b 0d 0a 09 44 33 44 58   pAngle);...D3DX
4d80: 51 55 41 54 45 52 4e 49 4f 4e 2a 20 44 33 44 58  QUATERNION* D3DX
4d90: 51 75 61 74 65 72 6e 69 6f 6e 52 6f 74 61 74 69  QuaternionRotati
4da0: 6f 6e 4d 61 74 72 69 78 28 44 33 44 58 51 55 41  onMatrix(D3DXQUA
4db0: 54 45 52 4e 49 4f 4e 2a 20 70 4f 75 74 2c 20 44  TERNION* pOut, D
4dc0: 33 44 58 4d 41 54 52 49 58 2a 20 70 4d 29 3b 0d  3DXMATRIX* pM);.
4dd0: 0a 09 44 33 44 58 51 55 41 54 45 52 4e 49 4f 4e  ..D3DXQUATERNION
4de0: 2a 20 44 33 44 58 51 75 61 74 65 72 6e 69 6f 6e  * D3DXQuaternion
4df0: 52 6f 74 61 74 69 6f 6e 41 78 69 73 28 44 33 44  RotationAxis(D3D
4e00: 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 4f 75  XQUATERNION* pOu
4e10: 74 2c 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20  t, D3DXVECTOR3* 
4e20: 70 56 2c 20 46 4c 4f 41 54 20 41 6e 67 6c 65 29  pV, FLOAT Angle)
4e30: 3b 0d 0a 09 44 33 44 58 51 55 41 54 45 52 4e 49  ;...D3DXQUATERNI
4e40: 4f 4e 2a 20 44 33 44 58 51 75 61 74 65 72 6e 69  ON* D3DXQuaterni
4e50: 6f 6e 52 6f 74 61 74 69 6f 6e 59 61 77 50 69 74  onRotationYawPit
4e60: 63 68 52 6f 6c 6c 28 44 33 44 58 51 55 41 54 45  chRoll(D3DXQUATE
4e70: 52 4e 49 4f 4e 2a 20 70 4f 75 74 2c 20 46 4c 4f  RNION* pOut, FLO
4e80: 41 54 20 59 61 77 2c 20 46 4c 4f 41 54 20 50 69  AT Yaw, FLOAT Pi
4e90: 74 63 68 2c 20 46 4c 4f 41 54 20 52 6f 6c 6c 29  tch, FLOAT Roll)
4ea0: 3b 0d 0a 09 44 33 44 58 51 55 41 54 45 52 4e 49  ;...D3DXQUATERNI
4eb0: 4f 4e 2a 20 44 33 44 58 51 75 61 74 65 72 6e 69  ON* D3DXQuaterni
4ec0: 6f 6e 4d 75 6c 74 69 70 6c 79 28 44 33 44 58 51  onMultiply(D3DXQ
4ed0: 55 41 54 45 52 4e 49 4f 4e 2a 20 70 4f 75 74 2c  UATERNION* pOut,
4ee0: 20 44 33 44 58 51 55 41 54 45 52 4e 49 4f 4e 2a   D3DXQUATERNION*
4ef0: 20 70 51 31 2c 20 44 33 44 58 51 55 41 54 45 52   pQ1, D3DXQUATER
4f00: 4e 49 4f 4e 2a 20 70 51 32 29 3b 0d 0a 09 44 33  NION* pQ2);...D3
4f10: 44 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 44 33  DXQUATERNION* D3
4f20: 44 58 51 75 61 74 65 72 6e 69 6f 6e 4e 6f 72 6d  DXQuaternionNorm
4f30: 61 6c 69 7a 65 28 44 33 44 58 51 55 41 54 45 52  alize(D3DXQUATER
4f40: 4e 49 4f 4e 2a 20 70 4f 75 74 2c 20 44 33 44 58  NION* pOut, D3DX
4f50: 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 51 29 3b  QUATERNION* pQ);
4f60: 0d 0a 09 44 33 44 58 51 55 41 54 45 52 4e 49 4f  ...D3DXQUATERNIO
4f70: 4e 2a 20 44 33 44 58 51 75 61 74 65 72 6e 69 6f  N* D3DXQuaternio
4f80: 6e 49 6e 76 65 72 73 65 28 44 33 44 58 51 55 41  nInverse(D3DXQUA
4f90: 54 45 52 4e 49 4f 4e 2a 20 70 4f 75 74 2c 20 44  TERNION* pOut, D
4fa0: 33 44 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70  3DXQUATERNION* p
4fb0: 51 29 3b 0d 0a 09 44 33 44 58 51 55 41 54 45 52  Q);...D3DXQUATER
4fc0: 4e 49 4f 4e 2a 20 44 33 44 58 51 75 61 74 65 72  NION* D3DXQuater
4fd0: 6e 69 6f 6e 4c 6e 28 44 33 44 58 51 55 41 54 45  nionLn(D3DXQUATE
4fe0: 52 4e 49 4f 4e 2a 20 70 4f 75 74 2c 20 44 33 44  RNION* pOut, D3D
4ff0: 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 51 29  XQUATERNION* pQ)
5000: 3b 0d 0a 09 44 33 44 58 51 55 41 54 45 52 4e 49  ;...D3DXQUATERNI
5010: 4f 4e 2a 20 44 33 44 58 51 75 61 74 65 72 6e 69  ON* D3DXQuaterni
5020: 6f 6e 45 78 70 28 44 33 44 58 51 55 41 54 45 52  onExp(D3DXQUATER
5030: 4e 49 4f 4e 2a 20 70 4f 75 74 2c 20 44 33 44 58  NION* pOut, D3DX
5040: 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 51 29 3b  QUATERNION* pQ);
5050: 0d 0a 09 44 33 44 58 51 55 41 54 45 52 4e 49 4f  ...D3DXQUATERNIO
5060: 4e 2a 20 44 33 44 58 51 75 61 74 65 72 6e 69 6f  N* D3DXQuaternio
5070: 6e 53 6c 65 72 70 28 44 33 44 58 51 55 41 54 45  nSlerp(D3DXQUATE
5080: 52 4e 49 4f 4e 2a 20 70 4f 75 74 2c 20 44 33 44  RNION* pOut, D3D
5090: 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 51 31  XQUATERNION* pQ1
50a0: 2c 20 44 33 44 58 51 55 41 54 45 52 4e 49 4f 4e  , D3DXQUATERNION
50b0: 2a 20 70 51 32 2c 20 46 4c 4f 41 54 20 74 29 3b  * pQ2, FLOAT t);
50c0: 0d 0a 09 44 33 44 58 51 55 41 54 45 52 4e 49 4f  ...D3DXQUATERNIO
50d0: 4e 2a 20 44 33 44 58 51 75 61 74 65 72 6e 69 6f  N* D3DXQuaternio
50e0: 6e 53 71 75 61 64 28 44 33 44 58 51 55 41 54 45  nSquad(D3DXQUATE
50f0: 52 4e 49 4f 4e 2a 20 70 4f 75 74 2c 20 44 33 44  RNION* pOut, D3D
5100: 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 51 31  XQUATERNION* pQ1
5110: 2c 20 44 33 44 58 51 55 41 54 45 52 4e 49 4f 4e  , D3DXQUATERNION
5120: 2a 20 70 41 2c 20 44 33 44 58 51 55 41 54 45 52  * pA, D3DXQUATER
5130: 4e 49 4f 4e 2a 20 70 42 2c 20 44 33 44 58 51 55  NION* pB, D3DXQU
5140: 41 54 45 52 4e 49 4f 4e 2a 20 70 43 2c 20 46 4c  ATERNION* pC, FL
5150: 4f 41 54 20 74 29 3b 0d 0a 09 76 6f 69 64 20 44  OAT t);...void D
5160: 33 44 58 51 75 61 74 65 72 6e 69 6f 6e 53 71 75  3DXQuaternionSqu
5170: 61 64 53 65 74 75 70 28 44 33 44 58 51 55 41 54  adSetup(D3DXQUAT
5180: 45 52 4e 49 4f 4e 2a 20 70 41 4f 75 74 2c 20 44  ERNION* pAOut, D
5190: 33 44 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70  3DXQUATERNION* p
51a0: 42 4f 75 74 2c 20 44 33 44 58 51 55 41 54 45 52  BOut, D3DXQUATER
51b0: 4e 49 4f 4e 2a 20 70 43 4f 75 74 2c 20 44 33 44  NION* pCOut, D3D
51c0: 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 51 30  XQUATERNION* pQ0
51d0: 2c 20 44 33 44 58 51 55 41 54 45 52 4e 49 4f 4e  , D3DXQUATERNION
51e0: 2a 20 70 51 31 2c 20 44 33 44 58 51 55 41 54 45  * pQ1, D3DXQUATE
51f0: 52 4e 49 4f 4e 2a 20 70 51 32 2c 20 44 33 44 58  RNION* pQ2, D3DX
5200: 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 51 33 29  QUATERNION* pQ3)
5210: 3b 0d 0a 09 44 33 44 58 51 55 41 54 45 52 4e 49  ;...D3DXQUATERNI
5220: 4f 4e 2a 20 44 33 44 58 51 75 61 74 65 72 6e 69  ON* D3DXQuaterni
5230: 6f 6e 42 61 72 79 43 65 6e 74 72 69 63 28 44 33  onBaryCentric(D3
5240: 44 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 4f  DXQUATERNION* pO
5250: 75 74 2c 20 44 33 44 58 51 55 41 54 45 52 4e 49  ut, D3DXQUATERNI
5260: 4f 4e 2a 20 70 51 31 2c 20 44 33 44 58 51 55 41  ON* pQ1, D3DXQUA
5270: 54 45 52 4e 49 4f 4e 2a 20 70 51 32 2c 20 44 33  TERNION* pQ2, D3
5280: 44 58 51 55 41 54 45 52 4e 49 4f 4e 2a 20 70 51  DXQUATERNION* pQ
5290: 33 2c 20 46 4c 4f 41 54 20 66 2c 20 46 4c 4f 41  3, FLOAT f, FLOA
52a0: 54 20 67 29 3b 0d 0a 7d 0d 0a 0d 0a 66 6c 6f 61  T g);..}....floa
52b0: 74 20 44 33 44 58 50 6c 61 6e 65 44 6f 74 28 44  t D3DXPlaneDot(D
52c0: 33 44 58 50 4c 41 4e 45 20 2a 70 50 2c 20 44 33  3DXPLANE *pP, D3
52d0: 44 58 56 45 43 54 4f 52 34 20 2a 70 56 29 20 7b  DXVECTOR4 *pV) {
52e0: 0d 0a 09 64 65 62 75 67 28 44 33 44 58 31 30 5f  ...debug(D3DX10_
52f0: 44 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 28 28  DEBUG) {....if((
5300: 70 50 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28  pP is null) || (
5310: 70 56 20 69 73 20 6e 75 6c 6c 29 29 20 72 65 74  pV is null)) ret
5320: 75 72 6e 20 30 2e 30 66 3b 0d 0a 09 7d 0d 0a 20  urn 0.0f;...}.. 
5330: 20 20 20 72 65 74 75 72 6e 20 28 70 50 2e 61 20     return (pP.a 
5340: 2a 20 70 56 2e 78 29 20 2b 20 28 70 50 2e 62 20  * pV.x) + (pP.b 
5350: 2a 20 70 56 2e 79 29 20 2b 20 28 70 50 2e 63 20  * pV.y) + (pP.c 
5360: 2a 20 70 56 2e 7a 29 20 2b 20 28 70 50 2e 64 20  * pV.z) + (pP.d 
5370: 2a 20 70 56 2e 77 29 3b 0d 0a 7d 0d 0a 0d 0a 66  * pV.w);..}....f
5380: 6c 6f 61 74 20 44 33 44 58 50 6c 61 6e 65 44 6f  loat D3DXPlaneDo
5390: 74 43 6f 6f 72 64 28 44 33 44 58 50 4c 41 4e 45  tCoord(D3DXPLANE
53a0: 20 2a 70 50 2c 20 44 33 44 58 56 45 43 54 4f 52   *pP, D3DXVECTOR
53b0: 33 20 2a 70 56 29 20 7b 0d 0a 09 64 65 62 75 67  3 *pV) {...debug
53c0: 28 44 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b  (D3DX10_DEBUG) {
53d0: 0d 0a 09 09 69 66 28 28 70 50 20 69 73 20 6e 75  ....if((pP is nu
53e0: 6c 6c 29 20 7c 7c 20 28 70 56 20 69 73 20 6e 75  ll) || (pV is nu
53f0: 6c 6c 29 29 20 72 65 74 75 72 6e 20 30 2e 30 66  ll)) return 0.0f
5400: 3b 0d 0a 09 7d 0d 0a 20 20 20 20 72 65 74 75 72  ;...}..    retur
5410: 6e 20 28 70 50 2e 61 20 2a 20 70 56 2e 78 29 20  n (pP.a * pV.x) 
5420: 2b 20 28 70 50 2e 62 20 2a 20 70 56 2e 79 29 20  + (pP.b * pV.y) 
5430: 2b 20 28 70 50 2e 63 20 2a 20 70 56 2e 7a 29 20  + (pP.c * pV.z) 
5440: 2b 20 70 50 2e 64 3b 0d 0a 7d 0d 0a 0d 0a 66 6c  + pP.d;..}....fl
5450: 6f 61 74 20 44 33 44 58 50 6c 61 6e 65 44 6f 74  oat D3DXPlaneDot
5460: 4e 6f 72 6d 61 6c 28 44 33 44 58 50 4c 41 4e 45  Normal(D3DXPLANE
5470: 20 2a 70 50 2c 20 44 33 44 58 56 45 43 54 4f 52   *pP, D3DXVECTOR
5480: 33 20 2a 70 56 29 20 7b 0d 0a 09 64 65 62 75 67  3 *pV) {...debug
5490: 28 44 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b  (D3DX10_DEBUG) {
54a0: 0d 0a 09 09 69 66 28 28 70 50 20 69 73 20 6e 75  ....if((pP is nu
54b0: 6c 6c 29 20 7c 7c 20 28 70 56 20 69 73 20 6e 75  ll) || (pV is nu
54c0: 6c 6c 29 29 20 72 65 74 75 72 6e 20 30 2e 30 66  ll)) return 0.0f
54d0: 3b 0d 0a 09 7d 0d 0a 20 20 20 20 72 65 74 75 72  ;...}..    retur
54e0: 6e 20 28 70 50 2e 61 20 2a 20 70 56 2e 78 29 20  n (pP.a * pV.x) 
54f0: 2b 20 28 70 50 2e 62 20 2a 20 70 56 2e 79 29 20  + (pP.b * pV.y) 
5500: 2b 20 28 70 50 2e 63 20 2a 20 70 56 2e 7a 29 3b  + (pP.c * pV.z);
5510: 0d 0a 7d 0d 0a 0d 0a 44 33 44 58 50 4c 41 4e 45  ..}....D3DXPLANE
5520: 2a 20 44 33 44 58 50 6c 61 6e 65 53 63 61 6c 65  * D3DXPlaneScale
5530: 28 44 33 44 58 50 4c 41 4e 45 20 2a 70 4f 75 74  (D3DXPLANE *pOut
5540: 2c 20 44 33 44 58 50 4c 41 4e 45 20 2a 70 50 2c  , D3DXPLANE *pP,
5550: 20 66 6c 6f 61 74 20 73 29 20 7b 0d 0a 09 64 65   float s) {...de
5560: 62 75 67 28 44 33 44 58 31 30 5f 44 45 42 55 47  bug(D3DX10_DEBUG
5570: 29 20 7b 0d 0a 09 09 69 66 28 28 70 4f 75 74 20  ) {....if((pOut 
5580: 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70 50 20  is null) || (pP 
5590: 69 73 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e  is null)) return
55a0: 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a 20 20 20 20   null;...}..    
55b0: 70 4f 75 74 2e 61 20 3d 20 70 50 2e 61 20 2a 20  pOut.a = pP.a * 
55c0: 73 3b 0d 0a 20 20 20 20 70 4f 75 74 2e 62 20 3d  s;..    pOut.b =
55d0: 20 70 50 2e 62 20 2a 20 73 3b 0d 0a 20 20 20 20   pP.b * s;..    
55e0: 70 4f 75 74 2e 63 20 3d 20 70 50 2e 63 20 2a 20  pOut.c = pP.c * 
55f0: 73 3b 0d 0a 20 20 20 20 70 4f 75 74 2e 64 20 3d  s;..    pOut.d =
5600: 20 70 50 2e 64 20 2a 20 73 3b 0d 0a 20 20 20 20   pP.d * s;..    
5610: 72 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d  return pOut;..}.
5620: 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77  ...extern(Window
5630: 73 29 20 7b 0d 0a 09 44 33 44 58 50 4c 41 4e 45  s) {...D3DXPLANE
5640: 2a 20 44 33 44 58 50 6c 61 6e 65 4e 6f 72 6d 61  * D3DXPlaneNorma
5650: 6c 69 7a 65 28 44 33 44 58 50 4c 41 4e 45 2a 20  lize(D3DXPLANE* 
5660: 70 4f 75 74 2c 20 44 33 44 58 50 4c 41 4e 45 2a  pOut, D3DXPLANE*
5670: 20 70 50 29 3b 0d 0a 09 44 33 44 58 56 45 43 54   pP);...D3DXVECT
5680: 4f 52 33 2a 20 44 33 44 58 50 6c 61 6e 65 49 6e  OR3* D3DXPlaneIn
5690: 74 65 72 73 65 63 74 4c 69 6e 65 28 44 33 44 58  tersectLine(D3DX
56a0: 56 45 43 54 4f 52 33 2a 20 70 4f 75 74 2c 20 44  VECTOR3* pOut, D
56b0: 33 44 58 50 4c 41 4e 45 2a 20 70 50 2c 20 44 33  3DXPLANE* pP, D3
56c0: 44 58 56 45 43 54 4f 52 33 2a 20 70 56 31 2c 20  DXVECTOR3* pV1, 
56d0: 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 56 32  D3DXVECTOR3* pV2
56e0: 29 3b 0d 0a 09 44 33 44 58 50 4c 41 4e 45 2a 20  );...D3DXPLANE* 
56f0: 44 33 44 58 50 6c 61 6e 65 46 72 6f 6d 50 6f 69  D3DXPlaneFromPoi
5700: 6e 74 4e 6f 72 6d 61 6c 28 44 33 44 58 50 4c 41  ntNormal(D3DXPLA
5710: 4e 45 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45  NE* pOut, D3DXVE
5720: 43 54 4f 52 33 2a 20 70 50 6f 69 6e 74 2c 20 44  CTOR3* pPoint, D
5730: 33 44 58 56 45 43 54 4f 52 33 2a 20 70 4e 6f 72  3DXVECTOR3* pNor
5740: 6d 61 6c 29 3b 0d 0a 09 44 33 44 58 50 4c 41 4e  mal);...D3DXPLAN
5750: 45 2a 20 44 33 44 58 50 6c 61 6e 65 46 72 6f 6d  E* D3DXPlaneFrom
5760: 50 6f 69 6e 74 73 28 44 33 44 58 50 4c 41 4e 45  Points(D3DXPLANE
5770: 2a 20 70 4f 75 74 2c 20 44 33 44 58 56 45 43 54  * pOut, D3DXVECT
5780: 4f 52 33 2a 20 70 56 31 2c 20 44 33 44 58 56 45  OR3* pV1, D3DXVE
5790: 43 54 4f 52 33 2a 20 70 56 32 2c 20 44 33 44 58  CTOR3* pV2, D3DX
57a0: 56 45 43 54 4f 52 33 2a 20 70 56 33 29 3b 0d 0a  VECTOR3* pV3);..
57b0: 09 44 33 44 58 50 4c 41 4e 45 2a 20 44 33 44 58  .D3DXPLANE* D3DX
57c0: 50 6c 61 6e 65 54 72 61 6e 73 66 6f 72 6d 28 44  PlaneTransform(D
57d0: 33 44 58 50 4c 41 4e 45 2a 20 70 4f 75 74 2c 20  3DXPLANE* pOut, 
57e0: 44 33 44 58 50 4c 41 4e 45 2a 20 70 50 2c 20 44  D3DXPLANE* pP, D
57f0: 33 44 58 4d 41 54 52 49 58 2a 20 70 4d 29 3b 0d  3DXMATRIX* pM);.
5800: 0a 09 44 33 44 58 50 4c 41 4e 45 2a 20 44 33 44  ..D3DXPLANE* D3D
5810: 58 50 6c 61 6e 65 54 72 61 6e 73 66 6f 72 6d 41  XPlaneTransformA
5820: 72 72 61 79 28 44 33 44 58 50 4c 41 4e 45 2a 20  rray(D3DXPLANE* 
5830: 70 4f 75 74 2c 20 55 49 4e 54 20 4f 75 74 53 74  pOut, UINT OutSt
5840: 72 69 64 65 2c 20 44 33 44 58 50 4c 41 4e 45 2a  ride, D3DXPLANE*
5850: 20 70 50 2c 20 55 49 4e 54 20 50 53 74 72 69 64   pP, UINT PStrid
5860: 65 2c 20 44 33 44 58 4d 41 54 52 49 58 2a 20 70  e, D3DXMATRIX* p
5870: 4d 2c 20 55 49 4e 54 20 6e 29 3b 0d 0a 7d 0d 0a  M, UINT n);..}..
5880: 0d 0a 44 33 44 58 43 4f 4c 4f 52 2a 20 44 33 44  ..D3DXCOLOR* D3D
5890: 58 43 6f 6c 6f 72 4e 65 67 61 74 69 76 65 28 44  XColorNegative(D
58a0: 33 44 58 43 4f 4c 4f 52 2a 20 70 4f 75 74 2c 20  3DXCOLOR* pOut, 
58b0: 44 33 44 58 43 4f 4c 4f 52 2a 20 70 43 29 20 7b  D3DXCOLOR* pC) {
58c0: 0d 0a 09 64 65 62 75 67 28 44 33 44 58 31 30 5f  ...debug(D3DX10_
58d0: 44 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 28 28  DEBUG) {....if((
58e0: 70 4f 75 74 20 69 73 20 6e 75 6c 6c 29 20 7c 7c  pOut is null) ||
58f0: 20 28 70 43 20 69 73 20 6e 75 6c 6c 29 29 20 72   (pC is null)) r
5900: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d  eturn null;...}.
5910: 0a 20 20 20 20 70 4f 75 74 2e 72 20 3d 20 31 2e  .    pOut.r = 1.
5920: 30 66 20 2d 20 70 43 2e 72 3b 0d 0a 20 20 20 20  0f - pC.r;..    
5930: 70 4f 75 74 2e 67 20 3d 20 31 2e 30 66 20 2d 20  pOut.g = 1.0f - 
5940: 70 43 2e 67 3b 0d 0a 20 20 20 20 70 4f 75 74 2e  pC.g;..    pOut.
5950: 62 20 3d 20 31 2e 30 66 20 2d 20 70 43 2e 62 3b  b = 1.0f - pC.b;
5960: 0d 0a 20 20 20 20 70 4f 75 74 2e 61 20 3d 20 70  ..    pOut.a = p
5970: 43 2e 61 3b 0d 0a 20 20 20 20 72 65 74 75 72 6e  C.a;..    return
5980: 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44   pOut;..}....D3D
5990: 58 43 4f 4c 4f 52 2a 20 44 33 44 58 43 6f 6c 6f  XCOLOR* D3DXColo
59a0: 72 41 64 64 28 44 33 44 58 43 4f 4c 4f 52 2a 20  rAdd(D3DXCOLOR* 
59b0: 70 4f 75 74 2c 20 44 33 44 58 43 4f 4c 4f 52 2a  pOut, D3DXCOLOR*
59c0: 20 70 43 31 2c 20 44 33 44 58 43 4f 4c 4f 52 2a   pC1, D3DXCOLOR*
59d0: 20 70 43 32 29 20 7b 0d 0a 09 64 65 62 75 67 28   pC2) {...debug(
59e0: 44 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d  D3DX10_DEBUG) {.
59f0: 0a 09 09 69 66 28 28 70 4f 75 74 20 69 73 20 6e  ...if((pOut is n
5a00: 75 6c 6c 29 20 7c 7c 20 28 70 43 31 20 69 73 20  ull) || (pC1 is 
5a10: 6e 75 6c 6c 29 20 7c 7c 20 28 70 43 32 20 69 73  null) || (pC2 is
5a20: 20 6e 75 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e   null)) return n
5a30: 75 6c 6c 3b 0d 0a 09 7d 0d 0a 20 20 20 20 70 4f  ull;...}..    pO
5a40: 75 74 2e 72 20 3d 20 70 43 31 2e 72 20 2b 20 70  ut.r = pC1.r + p
5a50: 43 32 2e 72 3b 0d 0a 20 20 20 20 70 4f 75 74 2e  C2.r;..    pOut.
5a60: 67 20 3d 20 70 43 31 2e 67 20 2b 20 70 43 32 2e  g = pC1.g + pC2.
5a70: 67 3b 0d 0a 20 20 20 20 70 4f 75 74 2e 62 20 3d  g;..    pOut.b =
5a80: 20 70 43 31 2e 62 20 2b 20 70 43 32 2e 62 3b 0d   pC1.b + pC2.b;.
5a90: 0a 20 20 20 20 70 4f 75 74 2e 61 20 3d 20 70 43  .    pOut.a = pC
5aa0: 31 2e 61 20 2b 20 70 43 32 2e 61 3b 0d 0a 20 20  1.a + pC2.a;..  
5ab0: 20 20 72 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a    return pOut;..
5ac0: 7d 0d 0a 0d 0a 44 33 44 58 43 4f 4c 4f 52 2a 20  }....D3DXCOLOR* 
5ad0: 44 33 44 58 43 6f 6c 6f 72 53 75 62 74 72 61 63  D3DXColorSubtrac
5ae0: 74 28 44 33 44 58 43 4f 4c 4f 52 2a 20 70 4f 75  t(D3DXCOLOR* pOu
5af0: 74 2c 20 44 33 44 58 43 4f 4c 4f 52 2a 20 70 43  t, D3DXCOLOR* pC
5b00: 31 2c 20 44 33 44 58 43 4f 4c 4f 52 2a 20 70 43  1, D3DXCOLOR* pC
5b10: 32 29 20 7b 0d 0a 09 64 65 62 75 67 28 44 33 44  2) {...debug(D3D
5b20: 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a 09 09  X10_DEBUG) {....
5b30: 69 66 28 28 70 4f 75 74 20 69 73 20 6e 75 6c 6c  if((pOut is null
5b40: 29 20 7c 7c 20 28 70 43 31 20 69 73 20 6e 75 6c  ) || (pC1 is nul
5b50: 6c 29 20 7c 7c 20 28 70 43 32 20 69 73 20 6e 75  l) || (pC2 is nu
5b60: 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c  ll)) return null
5b70: 3b 0d 0a 09 7d 0d 0a 20 20 20 20 70 4f 75 74 2e  ;...}..    pOut.
5b80: 72 20 3d 20 70 43 31 2e 72 20 2d 20 70 43 32 2e  r = pC1.r - pC2.
5b90: 72 3b 0d 0a 20 20 20 20 70 4f 75 74 2e 67 20 3d  r;..    pOut.g =
5ba0: 20 70 43 31 2e 67 20 2d 20 70 43 32 2e 67 3b 0d   pC1.g - pC2.g;.
5bb0: 0a 20 20 20 20 70 4f 75 74 2e 62 20 3d 20 70 43  .    pOut.b = pC
5bc0: 31 2e 62 20 2d 20 70 43 32 2e 62 3b 0d 0a 20 20  1.b - pC2.b;..  
5bd0: 20 20 70 4f 75 74 2e 61 20 3d 20 70 43 31 2e 61    pOut.a = pC1.a
5be0: 20 2d 20 70 43 32 2e 61 3b 0d 0a 20 20 20 20 72   - pC2.a;..    r
5bf0: 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a  eturn pOut;..}..
5c00: 0d 0a 44 33 44 58 43 4f 4c 4f 52 2a 20 44 33 44  ..D3DXCOLOR* D3D
5c10: 58 43 6f 6c 6f 72 53 63 61 6c 65 28 44 33 44 58  XColorScale(D3DX
5c20: 43 4f 4c 4f 52 2a 20 70 4f 75 74 2c 20 44 33 44  COLOR* pOut, D3D
5c30: 58 43 4f 4c 4f 52 2a 20 70 43 2c 20 66 6c 6f 61  XCOLOR* pC, floa
5c40: 74 20 73 29 20 7b 0d 0a 09 64 65 62 75 67 28 44  t s) {...debug(D
5c50: 33 44 58 31 30 5f 44 45 42 55 47 29 20 7b 0d 0a  3DX10_DEBUG) {..
5c60: 09 09 69 66 28 28 70 4f 75 74 20 69 73 20 6e 75  ..if((pOut is nu
5c70: 6c 6c 29 20 7c 7c 20 28 70 43 20 69 73 20 6e 75  ll) || (pC is nu
5c80: 6c 6c 29 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c  ll)) return null
5c90: 3b 0d 0a 09 7d 0d 0a 20 20 20 20 70 4f 75 74 2e  ;...}..    pOut.
5ca0: 72 20 3d 20 70 43 2e 72 20 2a 20 73 3b 0d 0a 20  r = pC.r * s;.. 
5cb0: 20 20 20 70 4f 75 74 2e 67 20 3d 20 70 43 2e 67     pOut.g = pC.g
5cc0: 20 2a 20 73 3b 0d 0a 20 20 20 20 70 4f 75 74 2e   * s;..    pOut.
5cd0: 62 20 3d 20 70 43 2e 62 20 2a 20 73 3b 0d 0a 20  b = pC.b * s;.. 
5ce0: 20 20 20 70 4f 75 74 2e 61 20 3d 20 70 43 2e 61     pOut.a = pC.a
5cf0: 20 2a 20 73 3b 0d 0a 20 20 20 20 72 65 74 75 72   * s;..    retur
5d00: 6e 20 70 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33  n pOut;..}....D3
5d10: 44 58 43 4f 4c 4f 52 2a 20 44 33 44 58 43 6f 6c  DXCOLOR* D3DXCol
5d20: 6f 72 4d 6f 64 75 6c 61 74 65 28 44 33 44 58 43  orModulate(D3DXC
5d30: 4f 4c 4f 52 2a 20 70 4f 75 74 2c 20 44 33 44 58  OLOR* pOut, D3DX
5d40: 43 4f 4c 4f 52 2a 20 70 43 31 2c 20 44 33 44 58  COLOR* pC1, D3DX
5d50: 43 4f 4c 4f 52 2a 20 70 43 32 29 20 7b 0d 0a 09  COLOR* pC2) {...
5d60: 64 65 62 75 67 28 44 33 44 58 31 30 5f 44 45 42  debug(D3DX10_DEB
5d70: 55 47 29 20 7b 0d 0a 09 09 69 66 28 28 70 4f 75  UG) {....if((pOu
5d80: 74 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28 70  t is null) || (p
5d90: 43 31 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20 28  C1 is null) || (
5da0: 70 43 32 20 69 73 20 6e 75 6c 6c 29 29 20 72 65  pC2 is null)) re
5db0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09 7d 0d 0a  turn null;...}..
5dc0: 20 20 20 20 70 4f 75 74 2e 72 20 3d 20 70 43 31      pOut.r = pC1
5dd0: 2e 72 20 2a 20 70 43 32 2e 72 3b 0d 0a 20 20 20  .r * pC2.r;..   
5de0: 20 70 4f 75 74 2e 67 20 3d 20 70 43 31 2e 67 20   pOut.g = pC1.g 
5df0: 2a 20 70 43 32 2e 67 3b 0d 0a 20 20 20 20 70 4f  * pC2.g;..    pO
5e00: 75 74 2e 62 20 3d 20 70 43 31 2e 62 20 2a 20 70  ut.b = pC1.b * p
5e10: 43 32 2e 62 3b 0d 0a 20 20 20 20 70 4f 75 74 2e  C2.b;..    pOut.
5e20: 61 20 3d 20 70 43 31 2e 61 20 2a 20 70 43 32 2e  a = pC1.a * pC2.
5e30: 61 3b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 70  a;..    return p
5e40: 4f 75 74 3b 0d 0a 7d 0d 0a 0d 0a 44 33 44 58 43  Out;..}....D3DXC
5e50: 4f 4c 4f 52 2a 20 44 33 44 58 43 6f 6c 6f 72 4c  OLOR* D3DXColorL
5e60: 65 72 70 28 44 33 44 58 43 4f 4c 4f 52 2a 20 70  erp(D3DXCOLOR* p
5e70: 4f 75 74 2c 20 44 33 44 58 43 4f 4c 4f 52 2a 20  Out, D3DXCOLOR* 
5e80: 70 43 31 2c 20 44 33 44 58 43 4f 4c 4f 52 2a 20  pC1, D3DXCOLOR* 
5e90: 70 43 32 2c 20 66 6c 6f 61 74 20 73 29 20 7b 0d  pC2, float s) {.
5ea0: 0a 09 64 65 62 75 67 28 44 33 44 58 31 30 5f 44  ..debug(D3DX10_D
5eb0: 45 42 55 47 29 20 7b 0d 0a 09 09 69 66 28 28 70  EBUG) {....if((p
5ec0: 4f 75 74 20 69 73 20 6e 75 6c 6c 29 20 7c 7c 20  Out is null) || 
5ed0: 28 70 43 31 20 69 73 20 6e 75 6c 6c 29 20 7c 7c  (pC1 is null) ||
5ee0: 20 28 70 43 32 20 69 73 20 6e 75 6c 6c 29 29 20   (pC2 is null)) 
5ef0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 09 7d  return null;...}
5f00: 0d 0a 20 20 20 20 70 4f 75 74 2e 72 20 3d 20 70  ..    pOut.r = p
5f10: 43 31 2e 72 20 2b 20 73 20 2a 20 28 70 43 32 2e  C1.r + s * (pC2.
5f20: 72 20 2d 20 70 43 31 2e 72 29 3b 0d 0a 20 20 20  r - pC1.r);..   
5f30: 20 70 4f 75 74 2e 67 20 3d 20 70 43 31 2e 67 20   pOut.g = pC1.g 
5f40: 2b 20 73 20 2a 20 28 70 43 32 2e 67 20 2d 20 70  + s * (pC2.g - p
5f50: 43 31 2e 67 29 3b 0d 0a 20 20 20 20 70 4f 75 74  C1.g);..    pOut
5f60: 2e 62 20 3d 20 70 43 31 2e 62 20 2b 20 73 20 2a  .b = pC1.b + s *
5f70: 20 28 70 43 32 2e 62 20 2d 20 70 43 31 2e 62 29   (pC2.b - pC1.b)
5f80: 3b 0d 0a 20 20 20 20 70 4f 75 74 2e 61 20 3d 20  ;..    pOut.a = 
5f90: 70 43 31 2e 61 20 2b 20 73 20 2a 20 28 70 43 32  pC1.a + s * (pC2
5fa0: 2e 61 20 2d 20 70 43 31 2e 61 29 3b 0d 0a 20 20  .a - pC1.a);..  
5fb0: 20 20 72 65 74 75 72 6e 20 70 4f 75 74 3b 0d 0a    return pOut;..
5fc0: 7d 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64  }....extern(Wind
5fd0: 6f 77 73 29 20 7b 0d 0a 09 44 33 44 58 43 4f 4c  ows) {...D3DXCOL
5fe0: 4f 52 2a 20 44 33 44 58 43 6f 6c 6f 72 41 64 6a  OR* D3DXColorAdj
5ff0: 75 73 74 53 61 74 75 72 61 74 69 6f 6e 28 44 33  ustSaturation(D3
6000: 44 58 43 4f 4c 4f 52 2a 20 70 4f 75 74 2c 20 44  DXCOLOR* pOut, D
6010: 33 44 58 43 4f 4c 4f 52 2a 20 70 43 2c 20 66 6c  3DXCOLOR* pC, fl
6020: 6f 61 74 20 73 29 3b 0d 0a 09 44 33 44 58 43 4f  oat s);...D3DXCO
6030: 4c 4f 52 2a 20 44 33 44 58 43 6f 6c 6f 72 41 64  LOR* D3DXColorAd
6040: 6a 75 73 74 43 6f 6e 74 72 61 73 74 28 44 33 44  justContrast(D3D
6050: 58 43 4f 4c 4f 52 2a 20 70 4f 75 74 2c 20 44 33  XCOLOR* pOut, D3
6060: 44 58 43 4f 4c 4f 52 2a 20 70 43 2c 20 66 6c 6f  DXCOLOR* pC, flo
6070: 61 74 20 63 29 3b 0d 0a 09 46 4c 4f 41 54 20 44  at c);...FLOAT D
6080: 33 44 58 46 72 65 73 6e 65 6c 54 65 72 6d 28 66  3DXFresnelTerm(f
6090: 6c 6f 61 74 20 43 6f 73 54 68 65 74 61 2c 20 66  loat CosTheta, f
60a0: 6c 6f 61 74 20 52 65 66 72 61 63 74 69 6f 6e 49  loat RefractionI
60b0: 6e 64 65 78 29 3b 20 20 20 20 20 0d 0a 7d 0d 0a  ndex);     ..}..
60c0: 0d 0a 65 78 74 65 72 6e 20 28 43 29 20 63 6f 6e  ..extern (C) con
60d0: 73 74 20 47 55 49 44 20 49 49 44 5f 49 44 33 44  st GUID IID_ID3D
60e0: 58 4d 61 74 72 69 78 53 74 61 63 6b 20 3d 20 7b  XMatrixStack = {
60f0: 30 78 63 37 38 38 35 62 61 37 2c 20 30 78 66 39  0xc7885ba7, 0xf9
6100: 39 30 2c 20 30 78 34 66 65 37 2c 20 5b 30 78 39  90, 0x4fe7, [0x9
6110: 32 2c 20 30 78 32 64 2c 20 30 78 38 35 2c 20 30  2, 0x2d, 0x85, 0
6120: 78 31 35 2c 20 30 78 65 34 2c 20 30 78 37 37 2c  x15, 0xe4, 0x77,
6130: 20 30 78 64 64 2c 20 30 78 38 35 5d 7d 3b 0d 0a   0xdd, 0x85]};..
6140: 0d 0a 69 6e 74 65 72 66 61 63 65 20 49 44 33 44  ..interface ID3D
6150: 58 4d 61 74 72 69 78 53 74 61 63 6b 20 3a 20 49  XMatrixStack : I
6160: 55 6e 6b 6e 6f 77 6e 20 7b 0d 0a 09 65 78 74 65  Unknown {...exte
6170: 72 6e 28 57 69 6e 64 6f 77 73 29 20 3a 0d 0a 09  rn(Windows) :...
6180: 48 52 45 53 55 4c 54 20 50 6f 70 28 29 3b 0d 0a  HRESULT Pop();..
6190: 09 48 52 45 53 55 4c 54 20 50 75 73 68 28 29 3b  .HRESULT Push();
61a0: 0d 0a 09 48 52 45 53 55 4c 54 20 4c 6f 61 64 49  ...HRESULT LoadI
61b0: 64 65 6e 74 69 74 79 28 29 3b 0d 0a 09 48 52 45  dentity();...HRE
61c0: 53 55 4c 54 20 4c 6f 61 64 4d 61 74 72 69 78 28  SULT LoadMatrix(
61d0: 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4d 20 29  D3DXMATRIX* pM )
61e0: 3b 0d 0a 09 48 52 45 53 55 4c 54 20 4d 75 6c 74  ;...HRESULT Mult
61f0: 4d 61 74 72 69 78 28 44 33 44 58 4d 41 54 52 49  Matrix(D3DXMATRI
6200: 58 2a 20 70 4d 20 29 3b 0d 0a 09 48 52 45 53 55  X* pM );...HRESU
6210: 4c 54 20 4d 75 6c 74 4d 61 74 72 69 78 4c 6f 63  LT MultMatrixLoc
6220: 61 6c 28 44 33 44 58 4d 41 54 52 49 58 2a 20 70  al(D3DXMATRIX* p
6230: 4d 20 29 3b 0d 0a 09 48 52 45 53 55 4c 54 20 52  M );...HRESULT R
6240: 6f 74 61 74 65 41 78 69 73 28 44 33 44 58 56 45  otateAxis(D3DXVE
6250: 43 54 4f 52 33 2a 20 70 56 2c 20 66 6c 6f 61 74  CTOR3* pV, float
6260: 20 41 6e 67 6c 65 29 3b 0d 0a 09 48 52 45 53 55   Angle);...HRESU
6270: 4c 54 20 52 6f 74 61 74 65 41 78 69 73 4c 6f 63  LT RotateAxisLoc
6280: 61 6c 28 44 33 44 58 56 45 43 54 4f 52 33 2a 20  al(D3DXVECTOR3* 
6290: 70 56 2c 20 66 6c 6f 61 74 20 41 6e 67 6c 65 29  pV, float Angle)
62a0: 3b 0d 0a 09 48 52 45 53 55 4c 54 20 52 6f 74 61  ;...HRESULT Rota
62b0: 74 65 59 61 77 50 69 74 63 68 52 6f 6c 6c 28 66  teYawPitchRoll(f
62c0: 6c 6f 61 74 20 59 61 77 2c 20 66 6c 6f 61 74 20  loat Yaw, float 
62d0: 50 69 74 63 68 2c 20 66 6c 6f 61 74 20 52 6f 6c  Pitch, float Rol
62e0: 6c 29 3b 0d 0a 09 48 52 45 53 55 4c 54 20 52 6f  l);...HRESULT Ro
62f0: 74 61 74 65 59 61 77 50 69 74 63 68 52 6f 6c 6c  tateYawPitchRoll
6300: 4c 6f 63 61 6c 28 66 6c 6f 61 74 20 59 61 77 2c  Local(float Yaw,
6310: 20 66 6c 6f 61 74 20 50 69 74 63 68 2c 20 66 6c   float Pitch, fl
6320: 6f 61 74 20 52 6f 6c 6c 29 3b 0d 0a 09 48 52 45  oat Roll);...HRE
6330: 53 55 4c 54 20 53 63 61 6c 65 28 66 6c 6f 61 74  SULT Scale(float
6340: 20 78 2c 20 66 6c 6f 61 74 20 79 2c 20 66 6c 6f   x, float y, flo
6350: 61 74 20 7a 29 3b 0d 0a 09 48 52 45 53 55 4c 54  at z);...HRESULT
6360: 20 53 63 61 6c 65 4c 6f 63 61 6c 28 66 6c 6f 61   ScaleLocal(floa
6370: 74 20 78 2c 20 66 6c 6f 61 74 20 79 2c 20 66 6c  t x, float y, fl
6380: 6f 61 74 20 7a 29 3b 0d 0a 09 48 52 45 53 55 4c  oat z);...HRESUL
6390: 54 20 54 72 61 6e 73 6c 61 74 65 28 66 6c 6f 61  T Translate(floa
63a0: 74 20 78 2c 20 66 6c 6f 61 74 20 79 2c 20 66 6c  t x, float y, fl
63b0: 6f 61 74 20 7a 20 29 3b 0d 0a 09 48 52 45 53 55  oat z );...HRESU
63c0: 4c 54 20 54 72 61 6e 73 6c 61 74 65 4c 6f 63 61  LT TranslateLoca
63d0: 6c 28 66 6c 6f 61 74 20 78 2c 20 66 6c 6f 61 74  l(float x, float
63e0: 20 79 2c 20 66 6c 6f 61 74 20 7a 29 3b 0d 0a 09   y, float z);...
63f0: 44 33 44 58 4d 41 54 52 49 58 2a 20 47 65 74 54  D3DXMATRIX* GetT
6400: 6f 70 28 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 54 4f  op();..}....//TO
6410: 44 4f 20 65 78 74 65 72 6e 28 57 69 6e 64 6f 77  DO extern(Window
6420: 73 29 20 48 52 45 53 55 4c 54 20 44 33 44 58 43  s) HRESULT D3DXC
6430: 72 65 61 74 65 4d 61 74 72 69 78 53 74 61 63 6b  reateMatrixStack
6440: 28 55 49 4e 54 20 46 6c 61 67 73 2c 20 44 33 44  (UINT Flags, D3D
6450: 58 4d 41 54 52 49 58 53 54 41 43 4b 2a 20 70 70  XMATRIXSTACK* pp
6460: 53 74 61 63 6b 29 3b 0d 0a 0d 0a 63 6f 6e 73 74  Stack);....const
6470: 20 44 33 44 58 53 48 5f 4d 49 4e 4f 52 44 45 52   D3DXSH_MINORDER
6480: 20 3d 20 32 3b 0d 0a 63 6f 6e 73 74 20 44 33 44   = 2;..const D3D
6490: 58 53 48 5f 4d 41 58 4f 52 44 45 52 20 3d 20 36  XSH_MAXORDER = 6
64a0: 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64  ;....extern(Wind
64b0: 6f 77 73 29 20 7b 0d 0a 09 66 6c 6f 61 74 2a 20  ows) {...float* 
64c0: 44 33 44 58 53 48 45 76 61 6c 44 69 72 65 63 74  D3DXSHEvalDirect
64d0: 69 6f 6e 28 66 6c 6f 61 74 2a 20 70 4f 75 74 2c  ion(float* pOut,
64e0: 20 55 49 4e 54 20 4f 72 64 65 72 2c 20 44 33 44   UINT Order, D3D
64f0: 58 56 45 43 54 4f 52 33 2a 20 70 44 69 72 29 3b  XVECTOR3* pDir);
6500: 0d 0a 09 66 6c 6f 61 74 2a 20 44 33 44 58 53 48  ...float* D3DXSH
6510: 52 6f 74 61 74 65 28 66 6c 6f 61 74 2a 20 70 4f  Rotate(float* pO
6520: 75 74 2c 20 55 49 4e 54 20 4f 72 64 65 72 2c 20  ut, UINT Order, 
6530: 44 33 44 58 4d 41 54 52 49 58 2a 20 70 4d 61 74  D3DXMATRIX* pMat
6540: 72 69 78 2c 20 66 6c 6f 61 74 2a 20 70 49 6e 29  rix, float* pIn)
6550: 3b 0d 0a 09 66 6c 6f 61 74 2a 20 44 33 44 58 53  ;...float* D3DXS
6560: 48 52 6f 74 61 74 65 5a 28 66 6c 6f 61 74 2a 20  HRotateZ(float* 
6570: 70 4f 75 74 2c 20 55 49 4e 54 20 4f 72 64 65 72  pOut, UINT Order
6580: 2c 20 66 6c 6f 61 74 20 41 6e 67 6c 65 2c 20 66  , float Angle, f
6590: 6c 6f 61 74 2a 20 70 49 6e 29 3b 0d 0a 09 66 6c  loat* pIn);...fl
65a0: 6f 61 74 2a 20 44 33 44 58 53 48 41 64 64 28 66  oat* D3DXSHAdd(f
65b0: 6c 6f 61 74 2a 20 70 4f 75 74 2c 20 55 49 4e 54  loat* pOut, UINT
65c0: 20 4f 72 64 65 72 2c 20 66 6c 6f 61 74 2a 20 70   Order, float* p
65d0: 41 2c 20 66 6c 6f 61 74 2a 20 70 42 29 3b 0d 0a  A, float* pB);..
65e0: 09 66 6c 6f 61 74 2a 20 44 33 44 58 53 48 53 63  .float* D3DXSHSc
65f0: 61 6c 65 28 66 6c 6f 61 74 2a 20 70 4f 75 74 2c  ale(float* pOut,
6600: 20 55 49 4e 54 20 4f 72 64 65 72 2c 20 66 6c 6f   UINT Order, flo
6610: 61 74 2a 20 70 49 6e 2c 20 66 6c 6f 61 74 20 53  at* pIn, float S
6620: 63 61 6c 65 29 3b 0d 0a 09 66 6c 6f 61 74 20 44  cale);...float D
6630: 33 44 58 53 48 44 6f 74 28 55 49 4e 54 20 4f 72  3DXSHDot(UINT Or
6640: 64 65 72 2c 20 66 6c 6f 61 74 2a 20 70 41 2c 20  der, float* pA, 
6650: 66 6c 6f 61 74 2a 20 70 42 29 3b 0d 0a 09 66 6c  float* pB);...fl
6660: 6f 61 74 2a 20 44 33 44 58 53 48 4d 75 6c 74 69  oat* D3DXSHMulti
6670: 70 6c 79 32 28 66 6c 6f 61 74 2a 20 70 4f 75 74  ply2(float* pOut
6680: 2c 20 66 6c 6f 61 74 2a 20 70 46 2c 20 66 6c 6f  , float* pF, flo
6690: 61 74 2a 20 70 47 29 3b 0d 0a 09 66 6c 6f 61 74  at* pG);...float
66a0: 2a 20 44 33 44 58 53 48 4d 75 6c 74 69 70 6c 79  * D3DXSHMultiply
66b0: 33 28 66 6c 6f 61 74 2a 20 70 4f 75 74 2c 20 66  3(float* pOut, f
66c0: 6c 6f 61 74 2a 20 70 46 2c 20 66 6c 6f 61 74 2a  loat* pF, float*
66d0: 20 70 47 29 3b 0d 0a 09 66 6c 6f 61 74 2a 20 44   pG);...float* D
66e0: 33 44 58 53 48 4d 75 6c 74 69 70 6c 79 34 28 66  3DXSHMultiply4(f
66f0: 6c 6f 61 74 2a 20 70 4f 75 74 2c 20 66 6c 6f 61  loat* pOut, floa
6700: 74 2a 20 70 46 2c 20 66 6c 6f 61 74 2a 20 70 47  t* pF, float* pG
6710: 29 3b 0d 0a 09 66 6c 6f 61 74 2a 20 44 33 44 58  );...float* D3DX
6720: 53 48 4d 75 6c 74 69 70 6c 79 35 28 66 6c 6f 61  SHMultiply5(floa
6730: 74 2a 20 70 4f 75 74 2c 20 66 6c 6f 61 74 2a 20  t* pOut, float* 
6740: 70 46 2c 20 66 6c 6f 61 74 2a 20 70 47 29 3b 0d  pF, float* pG);.
6750: 0a 09 66 6c 6f 61 74 2a 20 44 33 44 58 53 48 4d  ..float* D3DXSHM
6760: 75 6c 74 69 70 6c 79 36 28 66 6c 6f 61 74 2a 20  ultiply6(float* 
6770: 70 4f 75 74 2c 20 66 6c 6f 61 74 2a 20 70 46 2c  pOut, float* pF,
6780: 20 66 6c 6f 61 74 2a 20 70 47 29 3b 0d 0a 09 48   float* pG);...H
6790: 52 45 53 55 4c 54 20 44 33 44 58 53 48 45 76 61  RESULT D3DXSHEva
67a0: 6c 44 69 72 65 63 74 69 6f 6e 61 6c 4c 69 67 68  lDirectionalLigh
67b0: 74 28 55 49 4e 54 20 4f 72 64 65 72 2c 20 44 33  t(UINT Order, D3
67c0: 44 58 56 45 43 54 4f 52 33 2a 20 70 44 69 72 2c  DXVECTOR3* pDir,
67d0: 20 66 6c 6f 61 74 20 52 49 6e 74 65 6e 73 69 74   float RIntensit
67e0: 79 2c 20 66 6c 6f 61 74 20 47 49 6e 74 65 6e 73  y, float GIntens
67f0: 69 74 79 2c 20 66 6c 6f 61 74 20 42 49 6e 74 65  ity, float BInte
6800: 6e 73 69 74 79 2c 20 66 6c 6f 61 74 2a 20 70 52  nsity, float* pR
6810: 4f 75 74 2c 20 66 6c 6f 61 74 2a 20 70 47 4f 75  Out, float* pGOu
6820: 74 2c 20 66 6c 6f 61 74 2a 20 70 42 4f 75 74 29  t, float* pBOut)
6830: 3b 0d 0a 09 48 52 45 53 55 4c 54 20 44 33 44 58  ;...HRESULT D3DX
6840: 53 48 45 76 61 6c 53 70 68 65 72 69 63 61 6c 4c  SHEvalSphericalL
6850: 69 67 68 74 28 55 49 4e 54 20 4f 72 64 65 72 2c  ight(UINT Order,
6860: 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 50   D3DXVECTOR3* pP
6870: 6f 73 2c 20 66 6c 6f 61 74 20 52 61 64 69 75 73  os, float Radius
6880: 2c 20 66 6c 6f 61 74 20 52 49 6e 74 65 6e 73 69  , float RIntensi
6890: 74 79 2c 20 66 6c 6f 61 74 20 47 49 6e 74 65 6e  ty, float GInten
68a0: 73 69 74 79 2c 20 66 6c 6f 61 74 20 42 49 6e 74  sity, float BInt
68b0: 65 6e 73 69 74 79 2c 20 66 6c 6f 61 74 2a 20 70  ensity, float* p
68c0: 52 4f 75 74 2c 20 66 6c 6f 61 74 2a 20 70 47 4f  ROut, float* pGO
68d0: 75 74 2c 20 66 6c 6f 61 74 2a 20 70 42 4f 75 74  ut, float* pBOut
68e0: 29 3b 0d 0a 09 48 52 45 53 55 4c 54 20 44 33 44  );...HRESULT D3D
68f0: 58 53 48 45 76 61 6c 43 6f 6e 65 4c 69 67 68 74  XSHEvalConeLight
6900: 28 55 49 4e 54 20 4f 72 64 65 72 2c 20 44 33 44  (UINT Order, D3D
6910: 58 56 45 43 54 4f 52 33 2a 20 70 44 69 72 2c 20  XVECTOR3* pDir, 
6920: 66 6c 6f 61 74 20 52 61 64 69 75 73 2c 20 66 6c  float Radius, fl
6930: 6f 61 74 20 52 49 6e 74 65 6e 73 69 74 79 2c 20  oat RIntensity, 
6940: 66 6c 6f 61 74 20 47 49 6e 74 65 6e 73 69 74 79  float GIntensity
6950: 2c 20 66 6c 6f 61 74 20 42 49 6e 74 65 6e 73 69  , float BIntensi
6960: 74 79 2c 20 66 6c 6f 61 74 2a 20 70 52 4f 75 74  ty, float* pROut
6970: 2c 20 66 6c 6f 61 74 2a 20 70 47 4f 75 74 2c 20  , float* pGOut, 
6980: 66 6c 6f 61 74 2a 20 70 42 4f 75 74 29 3b 0d 0a  float* pBOut);..
6990: 09 48 52 45 53 55 4c 54 20 44 33 44 58 53 48 45  .HRESULT D3DXSHE
69a0: 76 61 6c 48 65 6d 69 73 70 68 65 72 65 4c 69 67  valHemisphereLig
69b0: 68 74 28 55 49 4e 54 20 4f 72 64 65 72 2c 20 44  ht(UINT Order, D
69c0: 33 44 58 56 45 43 54 4f 52 33 2a 20 70 44 69 72  3DXVECTOR3* pDir
69d0: 2c 20 44 33 44 58 43 4f 4c 4f 52 20 54 6f 70 2c  , D3DXCOLOR Top,
69e0: 20 44 33 44 58 43 4f 4c 4f 52 20 42 6f 74 74 6f   D3DXCOLOR Botto
69f0: 6d 2c 20 66 6c 6f 61 74 2a 20 70 52 4f 75 74 2c  m, float* pROut,
6a00: 20 66 6c 6f 61 74 2a 20 70 47 4f 75 74 2c 20 66   float* pGOut, f
6a10: 6c 6f 61 74 2a 20 70 42 4f 75 74 29 3b 0d 0a 09  loat* pBOut);...
6a20: 42 4f 4f 4c 20 44 33 44 58 49 6e 74 65 72 73 65  BOOL D3DXInterse
6a30: 63 74 54 72 69 28 44 33 44 58 56 45 43 54 4f 52  ctTri(D3DXVECTOR
6a40: 33 2a 20 70 30 2c 20 44 33 44 58 56 45 43 54 4f  3* p0, D3DXVECTO
6a50: 52 33 2a 20 70 31 2c 20 44 33 44 58 56 45 43 54  R3* p1, D3DXVECT
6a60: 4f 52 33 2a 20 70 32 2c 20 44 33 44 58 56 45 43  OR3* p2, D3DXVEC
6a70: 54 4f 52 33 2a 20 70 52 61 79 50 6f 73 2c 20 44  TOR3* pRayPos, D
6a80: 33 44 58 56 45 43 54 4f 52 33 2a 20 70 52 61 79  3DXVECTOR3* pRay
6a90: 44 69 72 2c 20 66 6c 6f 61 74 2a 20 70 55 2c 20  Dir, float* pU, 
6aa0: 66 6c 6f 61 74 2a 20 70 56 2c 20 66 6c 6f 61 74  float* pV, float
6ab0: 2a 20 70 44 69 73 74 29 3b 0d 0a 09 42 4f 4f 4c  * pDist);...BOOL
6ac0: 20 44 33 44 58 53 70 68 65 72 65 42 6f 75 6e 64   D3DXSphereBound
6ad0: 50 72 6f 62 65 28 44 33 44 58 56 45 43 54 4f 52  Probe(D3DXVECTOR
6ae0: 33 2a 20 70 43 65 6e 74 65 72 2c 20 66 6c 6f 61  3* pCenter, floa
6af0: 74 20 52 61 64 69 75 73 2c 20 44 33 44 58 56 45  t Radius, D3DXVE
6b00: 43 54 4f 52 33 2a 20 70 52 61 79 50 6f 73 69 74  CTOR3* pRayPosit
6b10: 69 6f 6e 2c 20 44 33 44 58 56 45 43 54 4f 52 33  ion, D3DXVECTOR3
6b20: 2a 20 70 52 61 79 44 69 72 65 63 74 69 6f 6e 29  * pRayDirection)
6b30: 3b 0d 0a 09 42 4f 4f 4c 20 44 33 44 58 42 6f 78  ;...BOOL D3DXBox
6b40: 42 6f 75 6e 64 50 72 6f 62 65 28 44 33 44 58 56  BoundProbe(D3DXV
6b50: 45 43 54 4f 52 33 2a 20 70 4d 69 6e 2c 20 44 33  ECTOR3* pMin, D3
6b60: 44 58 56 45 43 54 4f 52 33 2a 20 70 4d 61 78 2c  DXVECTOR3* pMax,
6b70: 20 44 33 44 58 56 45 43 54 4f 52 33 2a 20 70 52   D3DXVECTOR3* pR
6b80: 61 79 50 6f 73 69 74 69 6f 6e 2c 20 44 33 44 58  ayPosition, D3DX
6b90: 56 45 43 54 4f 52 33 2a 20 70 52 61 79 44 69 72  VECTOR3* pRayDir
6ba0: 65 63 74 69 6f 6e 29 3b 0d 0a 09 48 52 45 53 55  ection);...HRESU
6bb0: 4c 54 20 44 33 44 58 43 6f 6d 70 75 74 65 42 6f  LT D3DXComputeBo
6bc0: 75 6e 64 69 6e 67 53 70 68 65 72 65 28 44 33 44  undingSphere(D3D
6bd0: 58 56 45 43 54 4f 52 33 2a 20 70 46 69 72 73 74  XVECTOR3* pFirst
6be0: 50 6f 73 69 74 69 6f 6e 2c 20 44 57 4f 52 44 20  Position, DWORD 
6bf0: 4e 75 6d 56 65 72 74 69 63 65 73 2c 20 44 57 4f  NumVertices, DWO
6c00: 52 44 20 64 77 53 74 72 69 64 65 2c 20 44 33 44  RD dwStride, D3D
6c10: 58 56 45 43 54 4f 52 33 2a 20 70 43 65 6e 74 65  XVECTOR3* pCente
6c20: 72 2c 20 66 6c 6f 61 74 2a 20 70 52 61 64 69 75  r, float* pRadiu
6c30: 73 29 3b 0d 0a 09 48 52 45 53 55 4c 54 20 44 33  s);...HRESULT D3
6c40: 44 58 43 6f 6d 70 75 74 65 42 6f 75 6e 64 69 6e  DXComputeBoundin
6c50: 67 42 6f 78 28 44 33 44 58 56 45 43 54 4f 52 33  gBox(D3DXVECTOR3
6c60: 2a 20 70 46 69 72 73 74 50 6f 73 69 74 69 6f 6e  * pFirstPosition
6c70: 2c 20 44 57 4f 52 44 20 4e 75 6d 56 65 72 74 69  , DWORD NumVerti
6c80: 63 65 73 2c 20 44 57 4f 52 44 20 64 77 53 74 72  ces, DWORD dwStr
6c90: 69 64 65 2c 20 44 33 44 58 56 45 43 54 4f 52 33  ide, D3DXVECTOR3
6ca0: 2a 20 70 4d 69 6e 2c 20 44 33 44 58 56 45 43 54  * pMin, D3DXVECT
6cb0: 4f 52 33 2a 20 70 4d 61 78 29 3b 0d 0a 7d 0d 0a  OR3* pMax);..}..
6cc0: 0d 0a 65 6e 75 6d 20 44 33 44 58 5f 43 50 55 5f  ..enum D3DX_CPU_
6cd0: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 20 7b 0d 0a  OPTIMIZATION {..
6ce0: 09 44 33 44 58 5f 4e 4f 54 5f 4f 50 54 49 4d 49  .D3DX_NOT_OPTIMI
6cf0: 5a 45 44 20 3d 20 30 2c 0d 0a 09 44 33 44 58 5f  ZED = 0,...D3DX_
6d00: 33 44 4e 4f 57 5f 4f 50 54 49 4d 49 5a 45 44 2c  3DNOW_OPTIMIZED,
6d10: 0d 0a 09 44 33 44 58 5f 53 53 45 32 5f 4f 50 54  ...D3DX_SSE2_OPT
6d20: 49 4d 49 5a 45 44 2c 0d 0a 09 44 33 44 58 5f 53  IMIZED,...D3DX_S
6d30: 53 45 5f 4f 50 54 49 4d 49 5a 45 44 0d 0a 7d 0d  SE_OPTIMIZED..}.
6d40: 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77  ...extern(Window
6d50: 73 29 20 44 33 44 58 5f 43 50 55 5f 4f 50 54 49  s) D3DX_CPU_OPTI
6d60: 4d 49 5a 41 54 49 4f 4e 20 44 33 44 58 43 70 75  MIZATION D3DXCpu
6d70: 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 28 62 6f  Optimizations(bo
6d80: 6f 6c 20 45 6e 61 62 6c 65 29 3b 0d 0a           ol Enable);..