zoukankan      html  css  js  c++  java
  • 向量与矩阵的构造

    一、向量

    向量的构造函数可以阶段或者加长一个向量

    1>如果讲一个较长的向量传递给一个较短向量的构造函数,那么向量将自动取短到对应的长度。

    vec4 color;

    vec3 RGB = vec3(color);//现在RGB只有前三个分量了

    2>加长向量

    vec3 white = vec3(1.0);//white = (1.0,1.0,1.0)

    或者可以直接将标量值传递给向量

    translucent半透明的

    vec4 translucent = vec4(white,0.5);//translucent =  (1.0,1.0,1.0,0.5)

    二、矩阵的构建

    1>对角矩阵

    只需要向构造函数传递一个值,矩阵的对角线元素就设置为这个值,其他元素全部设置为0

    例如单位矩阵可以直接写成:mat3(1.0)

    矩阵按列优先

    让我们来看一个简单的例子。

    vec2 v = vec2(10.0, 20.0);
    mat2 m = mat2(1.0, 2.0, 3.0, 4.0); 
    // Remember this is column major. Equivalently,
    // 注意它是列优先的。等价于,
    // mat2 m;
    // m[0][0]=1.0;
    // m[0][1]=3.0;
    // m[1][0]=2.0;
    // m[1][1]=4.0;
    // m = glm::transpose(m) ;

    vec2 w = m * v; // = vec2(1 * 10 + 3 * 20, 2 * 10 + 4 * 20)  

    三、结构体

    如果定义了一个结构体,那么它会自动的创建一个新类型,并且隐式定义一个构造函数,将各种类型的结构体元素作为输入参数。

    例如:

    struct Particle{

      float lifetime;

      vec3 position;

      vec3 velocity;//速度

    }

    Particle p = Particle(10.0,pos,vel);//pos,vel均为vec3类型。

    四、length()

    向量和矩阵类型可以使用length()方法,向量的长度就是包含的分量的个数,矩阵的长度就是它包含的列的个数。

    例如:

    mat3*4 m;

    int c = m.length();//c=3   m的列数为3

    int r= m[0].length();//r=4   第0列向量中分量的个数为4

  • 相关阅读:
    python selenium 弹框元素获取
    python小知识点
    ubuntu下配置java环境变量
    用Filezilla往ubuntu虚拟机上传文件
    jmeter,监控插件
    fiddler接口测试
    ZeroClipboard 复制到剪贴板 中文文档
    常用正则表达式
    中英文字体对照 ueditor添加字体
    字符串操作
  • 原文地址:https://www.cnblogs.com/keguniang/p/9872868.html
Copyright © 2011-2022 走看看