geomtrans.monkey2 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. Namespace mojo3d.vr
  2. Struct HmdMatrix34_t Extension
  3. Operator To:AffineMat4f()
  4. Local r:AffineMat4f
  5. 'negate Z components and scale by 1,1,-1...
  6. r.m.i.x= m[0][0] ; r.m.i.y= m[1][0] ; r.m.i.z=-m[2][0]
  7. r.m.j.x= m[0][1] ; r.m.j.y= m[1][1] ; r.m.j.z=-m[2][1]
  8. r.m.k.x=-m[0][2] ; r.m.k.y=-m[1][2] ; r.m.k.z= m[2][2]
  9. r.t.x= m[0][3] ; r.t.y= m[1][3] ; r.t.z= -m[2][3]
  10. Return r
  11. End
  12. End
  13. Struct HmdMatrix44_t Extension
  14. Operator To:Mat4f()
  15. Local r:Mat4f
  16. r.i.x=m[0][0] ; r.i.y=m[1][0] ; r.i.z=m[2][0] ; r.i.w=m[3][0]
  17. r.j.x=m[0][1] ; r.j.y=m[1][1] ; r.j.z=m[2][1] ; r.j.w=m[3][1]
  18. r.k.x=m[0][2] ; r.k.y=m[1][2] ; r.k.z=m[2][2] ; r.k.w=m[3][2]
  19. r.t.x=m[0][3] ; r.t.y=m[1][3] ; r.t.z=m[2][3] ; r.t.w=m[3][3]
  20. Return r
  21. End
  22. End
  23. Struct HmdVector3_t Extension
  24. Operator To:Vec3f()
  25. Local r:Vec3f
  26. r.x=v[0] ; r.y=v[1] ; r.z=v[2]
  27. Return r
  28. End
  29. End
  30. Struct AffineMat4f Extension
  31. Operator To:HmdMatrix34_t()
  32. Local r:HmdMatrix34_t
  33. r.m[0][0]= m.i.x ; r.m[1][0]= m.i.y ; r.m[2][0]=-m.i.z
  34. r.m[0][1]= m.j.x ; r.m[1][1]= m.j.y ; r.m[2][1]=-m.j.z
  35. r.m[0][2]=-m.k.x ; r.m[1][2]=-m.k.y ; r.m[2][2]= m.k.z
  36. r.m[0][3]= t.x ; r.m[1][3]= t.y ; r.m[2][3]= -t.z
  37. Return r
  38. End
  39. End
  40. Struct Mat4f Extension
  41. Operator To:HmdMatrix44_t()
  42. Local r:HmdMatrix44_t
  43. r.m[0][0]=i.x ; r.m[1][0]=i.y ; r.m[2][0]=i.z ; r.m[3][0]=i.w
  44. r.m[0][1]=j.x ; r.m[1][1]=j.y ; r.m[2][1]=j.z ; r.m[3][1]=j.w
  45. r.m[0][2]=k.x ; r.m[1][2]=k.y ; r.m[2][2]=k.z ; r.m[3][2]=k.w
  46. r.m[0][3]=t.x ; r.m[1][3]=t.y ; r.m[2][3]=t.z ; r.m[3][3]=t.w
  47. Return r
  48. End
  49. End
  50. Struct Vec3f Extension
  51. Operator To:HmdVector3_t()
  52. Local r:HmdVector3_t
  53. r.v[0]=x ; r.v[1]=y ; r.v[2]=z
  54. Return r
  55. End
  56. End
  57. Function Frustum:Mat4f( left:Float,right:Float,bottom:Float,top:Float,near:Float,far:Float )
  58. Local w:=right-left,h:=top-bottom,d:=far-near,r:Mat4f
  59. r.i.x= 2/w
  60. r.j.y= 2/h
  61. r.k.x=-(right+left)/w
  62. r.k.y=-(top+bottom)/h
  63. r.k.z= (far+near)/d
  64. r.k.w= 1
  65. r.t.z= -2*far*near/d
  66. Return r
  67. End