累计访问:82次
@FlyMath数学库
一、使用方法。
FlyMath是基于javascript的数学库。它放在互联网上,是个开源的数学库。用户可以通过在网页中加载引用JS文件的方式调用。不需要额外安装。
二、函数介绍。
1.基础函数
        //获取0~n的随机整数
        Fly_Base.Random(n)
         
        //获取v的n次平方数
        Fly_Base.Power(v,n)       
        
2.向量运算函数
   
        //两个二维向量的点乘
        Fly_Vertex.Dot2(v1,v2)
         
        //两个二维向量的叉乘
        Fly_Vertex.Cross2(v1,v2)
         
        //二维向量的平方值
        Fly_Vertex.LengthSq2(v)
         
        //两个二维顶点间S插值坐标
        Fly_Vertex.Lerp2(v,v1,v2,s)
         
        //两个二维顶点的距离
        Fly_Vertex.Distance2(v1,v2)
         
        //计算平面直线(v0,v1)和(v1,v2)的夹角度数
        Fly_Vertex.ComputAngle2(v1,v2,v3)
         
        //计算二维顶点的空间变换后位置
        Fly_Vertex.Transfrom2(v,v1,m)
         
        //获取三维向量v1和v2的点乘值
        Fly_Vertex.Dot3(v1,v2)
         
        //获取三维向量v1和v2的叉乘值
        Fly_Vertex.Cross3(v,v1,v2)
         
        //获取三维向量v的向量平方值
        Fly_Vertex.LengthSq3(v);
         
        //获取三维向量v的标准化值
        Fly_Vertex.Normalize3(v);
         
        //两个三维顶点距离
        Fly_Vertex.Distance3(v1,v2)
         
        //两个三维顶点间S插值坐标
        Fly_Vertex.Lerp3(v,v1,v2,s)
         
        //计算空间直线(v0,v1)和(v1,v2)的夹角度数
        Fly_Vertex.ComputAngle3(v1,v2,v3)
         
        //计算三维顶点的空间变换后位置
        Fly_Vertex.Transfrom3(v,v1,m)       
        
        //返回a,b,c三点组成三角形面积。
        Fly_Vertex.TriangleArea(a, b, c)
        
3.矩阵运算函数
   
        //nXn矩阵m进行标准化
        Fly_Matrix.Identity(m,n)
         
        //4X4矩阵m=m1*m2
        Fly_Matrix.Multiply(m,m1,m2)
         
        //4x4矩阵转置
        Fly_Matrix.Transpose(m,m1)
         
        //4x4矩阵m的逆矩阵
        Fly_Matrix.Inverse(im,m)
         
        //计算平移矩阵
        Fly_Matrix.Translation(m,x,y,z);
         
        //计算缩放矩阵
        Fly_Matrix.caling(m,x,y,z);
         
        //计算绕着X,Y,Z轴旋转的矩阵
        Fly_Matrix.RotateX(m,angle)
        Fly_Matrix.RotateY(m,angle)
        Fly_Matrix.RotateZ(m,angle)
         
        //获取左右手坐标系的视角矩阵
        Fly_Matrix.LookAtLH(m,eye,to,up)
        Fly_Matrix.LookAtRH(m,eye,to,up)
         
        //获取左右手坐标系的正交矩阵
        Fly_Matrix.OrthoLH(m,w,h,zn,zf)
        Fly_Matrix.OrthoRH(m,w,h,zn,zf)
         
        //获取左右手坐标系的透视矩阵
        Fly_Matrix.PerspectiveLH(m,fovy,aspect,zn,zf)
        Fly_Matrix.PerspectiveRH(m,fovy,aspect,zn,zf)
         
        //把屏幕点坐标转换成空间坐标
        Fly_Matrix.UnProject(v,pt,matView,matProj,viewport)     
        
4.四元数运算函数
     
        //四元数q向量平方值
        Fly_Quaternion.LengthSq(q)
         
        //四元数q1标准化存q
        Fly_Quaternion.Normalize(q,q1)
         
        //四元数q1,q2插值s(线性或二次)存到q
        Fly_Quaternion_Slerp(q,q1,q2,s,isline)
         
        //绕v轴旋转角度转四元数q
        Fly_Quaternion.RotationAxis(q,v,angle)
         
        //矩阵m转四元数q
        Fly_Quaternion.MatToQuat(q,m)
         
        //四元数q转矩阵m
        Fly_Quaternion.QuatToMat(m,q)
        
5.插值函数
   
        //二维和三维BaryCentric样条线插值
        Fly_Spline.BaryCentric2(p,p1,p2,p3,f,g)
        Fly_Spline.BaryCentric3(p,p1,p2,p3,f,g)
         
        //二维和三维CatmullRom样条线插值
        Fly_Spline.CatmullRom2(p,p1,p2,p3,p4,s)
        Fly_Spline.CatmullRom3(p,p1,p2,p3,p4,s)
         
        //二维和三维Hermite样条线插值
        Fly_Spline.Hermite2(p,p1,tan1,p2,tan2,s)
        Fly_Spline.Hermite3(p,p1,tan1,p2,tan2,s)      
        
6.物理应用函数
    
        //检测射线与三角形面是否碰撞,如果碰撞返回true,否则false,dist为线到面相交处的距离
        Fly_Phy.Ray2Triangle(pStart,pEnd,p1,p2,p3,dist)
         
        //检测射线与四边形的面是否碰撞,如果碰撞返回true,否则false,dist为线到面相交处的距离
        Fly_Phy.Ray2Quad(pStart,pEnd,p1,p2,p3,p4,dist)    
        
        //两个正方形碰撞检测函数,q1,q2分别存入两个正方形的最小和最大顶点座标。碰撞返回ture。
        Fly_Phy.Quad2Quad(q1,q2)
        
        //检测点P在任意四边形(a,b,c,d)区域内。如果在,则返回ture。
        Fly_Phy.PtInQuad(p,a,b,c,d)
        
三、使用示例。
1、计算10的2次方。
 
        <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
        <html>
        <head>
        <title>FlyMath数学库使用例子</title>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
        <script type="text/javascript" src='http://api.cmnsoft.com/flymath/flymath_min.js' charset="utf-8"></script>
        <script>
        function show()
        {
          var v = FlyMath.Base.Power(10,2);
          alert(v);
        }
        </script>
        </head>
        <body>
        <button onclick='show();'>show</button>
        </body>
        </html>
        
2、计算空间两点间距离。
 
        <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
        <html>
        <head>
        <title>FlyMath数学库使用例子</title>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
        <script type="text/javascript" src='http://api.cmnsoft.com/flymath/flymath_min.js' charset="utf-8"></script>
        <script>
        function show()
        {
          p1 = [1.1,2.0,3.6];
          p2 = [0.9,0.8,1.2];
          var v = FlyMath.Vertex.Distance3(p1,p2);
          alert(v);
        }
        </script>
        </head>
        <body>
        <button onclick='show();'>show</button>
        </body>
        </html>
        
Copyright @ 2011-2019 by szc     桂ICP备11003301号-1    桂公网安备45040302000027号    主站:重明鸟软件知识平台