PS2DEV network    

  > HOME
  > ABOUT

  > FORUMS
  > VIEW SVN
  > MAILING LIST
  > WIKI
  > QUOTES
  > DOCS

 PS2
  > TUTORIALS
  > LOADERS
  > TOOLS
  > SAMPLE CODE
  > DEMOS
  > PROJECTS

 PSP
  > TUTORIALS
  > TOOLS
  > DEMOS
  > PROJECTS

 PS3
  > LINKS
  > TUTORIALS
  > TOOLS
  > DEMOS
  > PROJECTS

   RSS


 USER ID (register)
 
 PASSWORD
 



 
  Quaternion To Matrix
void QuaternionToMatrix(void *m0, const void *q0)
{
    asm __volatile__("
        lqc2        vf16,0x0(%1)
        #-----------------------------------------------
        #   m0[0][3] = 0.0f;
        #   m0[1][3] = 0.0f;
        #   m0[2][3] = 0.0f;
        #-----------------------------------------------
        #   vf17w = 0
        #   vf18w = 0
        #   vf19w = 0
        vsub.w  vf17,vf17,vf17
        vsub.w  vf18,vf18,vf18
        vsub.w  vf19,vf19,vf19
        #-----------------------------------------------
        #   m0[0][0] = 1.0f - 2.0f * (y * y + z * z);   
        #   m0[0][1] =        2.0f * (x * y - w * z);
        #   m0[0][2] =        2.0f * (x * z + w * y);
        #-----------------------------------------------
        #   vf20xyz = yxx
        #   vf21xyz = yyz
        #   vf22xyz = zww
        #   vf23xyz = zzy
        vaddy.x     vf20,vf00,vf16y
        vaddy.x     vf21,vf00,vf16y
        vaddz.x     vf22,vf00,vf16z
        vaddz.x     vf23,vf00,vf16z
        vaddx.y     vf20,vf00,vf16x
        vaddy.y     vf21,vf00,vf16y
        vaddw.y     vf22,vf00,vf16w
        vaddz.y     vf23,vf00,vf16z
        vaddx.z     vf20,vf00,vf16x
        vaddz.z     vf21,vf00,vf16z
        vaddw.z     vf22,vf00,vf16w
        vaddy.z     vf23,vf00,vf16y
        #   vf17xyz = (y * y + z * z) (x * y - w * z) (x * z + w * y)
        vmula.xyz   ACC,vf20,vf21
        vmadd.xz    vf17,vf22,vf23
        vmsub.y     vf17,vf22,vf23
        #-----------------------------------------------
        #   m0[1][0] =        2.0f * (x * y + w * z);
        #   m0[1][1] = 1.0f - 2.0f * (x * x + z * z);
        #   m0[1][2] =        2.0f * (y * z - w * x);
        #-----------------------------------------------
        #   vf20xyz = yxx   ->  XxY
        #   vf21xyz = yyz   ->  yXz
        #   vf22xyz = zww   ->  WZw
        #   vf23xyz = zzy   ->  zzX
        vaddx.x     vf20,vf00,vf16x
        vaddy.z     vf20,vf00,vf16y
        vaddx.y     vf21,vf00,vf16x
        vaddw.x     vf22,vf00,vf16w
        vaddz.y     vf22,vf00,vf16z
        vaddx.z     vf23,vf00,vf16x
        #   vf18xyz = (x * y + w * z) (x * x + z * z) (y * z - w * x)
        vmula.xyz   ACC,vf20,vf21
        vmadd.xy    vf18,vf22,vf23
        vmsub.z     vf18,vf22,vf23
        #-----------------------------------------------
        #   m0[2][0] =        2.0f * (x * z - w * y);
        #   m0[2][1] =        2.0f * (y * z + w * x);
        #   m0[2][2] = 1.0f - 2.0f * (x * x + y * y);
        #-----------------------------------------------
        #   vf20xyz = xxy   ->  xYX
        #   vf21xyz = yxz   ->  ZZX
        #   vf22xyz = wzw   ->  wWY
        #   vf23xyz = zzx   ->  YXY
        vaddy.y     vf20,vf00,vf16y
        vaddx.z     vf20,vf00,vf16x
        vaddz.x     vf21,vf00,vf16z
        vaddz.y     vf21,vf00,vf16z
        vaddx.z     vf21,vf00,vf16x
        vaddw.y     vf22,vf00,vf16w
        vaddy.z     vf22,vf00,vf16y
        vaddy.x     vf23,vf00,vf16y
        vaddx.y     vf23,vf00,vf16x
        vaddy.z     vf23,vf00,vf16y
        #   vf19xyz = (x * z - w * y) (y * z + w * x) (x * x + y * y)
        vmula.xyz   ACC,vf20,vf21
        vmadd.yz    vf19,vf22,vf23
        vmsub.x     vf19,vf22,vf23
        #   vf17xyz *= 2
        #   vf18xyz *= 2
        #   vf19xyz *= 2
        vadd.xyz    vf17,vf17,vf17
        vadd.xyz    vf18,vf18,vf18
        vadd.xyz    vf19,vf19,vf19
        #   vf17x = 1.0f - vf17x
        #   vf18y = 1.0f - vf18y
        #   vf19z = 1.0f - vf19z
        vsub.x      vf17,vf00,vf17
        vsub.y      vf18,vf00,vf18
        vsub.z      vf19,vf00,vf19
        vaddw.x     vf17,vf17,vf00w
        vaddw.y     vf18,vf18,vf00w
        vaddw.z     vf19,vf19,vf00w
        #---------------------------
        sqc2        vf17,0x00(%0)
        sqc2        vf18,0x10(%0)
        sqc2        vf19,0x20(%0)
        sqc2        vf00,0x30(%0)
        "
        : /* no output */
        : "r"(m0) , "r"(q0)
        : "memory"
    );
}
	


  > Locked
  > Edit Topic
  > Add Topic
  > Add Link
  > Add File
  > Move Topic
  > Delete Topic
  > Order Topics
  > Versions

Owned by oobles
last updated by oobles on Fri Dec 07 00:00:00 GMT 2001
 
Site Content Copyright 2001-2007 © Authors. Read Legal Statement for Information
LiveKnowledge Software by Live Media