当前位置: 首页>>代码示例>>C++>>正文


C++ Basis::create_rotation_matrix方法代码示例

本文整理汇总了C++中Basis::create_rotation_matrix方法的典型用法代码示例。如果您正苦于以下问题:C++ Basis::create_rotation_matrix方法的具体用法?C++ Basis::create_rotation_matrix怎么用?C++ Basis::create_rotation_matrix使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Basis的用法示例。


在下文中一共展示了Basis::create_rotation_matrix方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: draw_point

void draw_point(const Vertex &pt, scalar_t size) {

    Vector3 p = pt.pos;

    Vector3 cam_pos = Vector3(0,0,0).transformed(inv_view_matrix);

    Basis basis;
    basis.k = -(cam_pos - p).normalized();
    basis.j = Vector3(0, 1, 0);
    basis.i = cross_product(basis.j, basis.k);
    basis.j = cross_product(basis.k, basis.i);

    world_matrix.set_translation(p);
    world_matrix = world_matrix * Matrix4x4(basis.create_rotation_matrix());
    load_xform_matrices();

    Vertex quad[] = {
        Vertex(Vector3(-size, -size, 0), 0.0, 0.0, pt.color),
        Vertex(Vector3(-size, size, 0), 0.0, 1.0, pt.color),
        Vertex(Vector3(size, size, 0), 1.0, 1.0, pt.color),
        Vertex(Vector3(size, -size, 0), 1.0, 0.0, pt.color)
    };

    set_lighting(false);
    set_primitive_type(QUAD_LIST);
    draw(VertexArray(quad, 4));
    set_primitive_type(TRIANGLE_LIST);
    set_lighting(true);

}
开发者ID:BackupTheBerlios,项目名称:engfx3d-svn,代码行数:30,代码来源:3denginefx.cpp

示例2: draw_line

/* draw_line(start_vertex, end_vertex, start_width, end_width)
 * Draws a line as a cylindrically billboarded elongated quad.
 */
void draw_line(const Vertex &v1, const Vertex &v2, scalar_t w1, scalar_t w2) {
    if(w2 < 0.0) w2 = w1;

    Vector3 p1 = v1.pos;
    Vector3 p2 = v2.pos;

    Vector3 cam_pos = Vector3(0,0,0).transformed(inv_view_matrix);

    Vector3 vec = p2 - p1;
    scalar_t len = vec.length();

    Basis basis;
    basis.k = -(cam_pos - ((p2 + p1) / 2)).normalized();
    basis.j = vec / len;
    basis.i = cross_product(basis.j, basis.k).normalized();
    basis.k = cross_product(basis.i, basis.j).normalized();

    world_matrix.set_translation(p1);
    world_matrix = world_matrix * Matrix4x4(basis.create_rotation_matrix());
    load_xform_matrices();

    Vertex quad[] = {
        Vertex(Vector3(-w1, 0, 0), 0.0, v1.tex[0].u),
        Vertex(Vector3(-w2, len, 0), 0.0, v2.tex[0].u),
        Vertex(Vector3(w2, len, 0), 1.0, v2.tex[0].u),
        Vertex(Vector3(w1, 0, 0), 1.0, v1.tex[0].u)
    };

    set_lighting(false);
    set_primitive_type(QUAD_LIST);
    draw(VertexArray(quad, 4));
    set_primitive_type(TRIANGLE_LIST);
    set_lighting(true);
}
开发者ID:BackupTheBerlios,项目名称:engfx3d-svn,代码行数:37,代码来源:3denginefx.cpp


注:本文中的Basis::create_rotation_matrix方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。