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


C++ Vec3f::crossed方法代码示例

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


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

示例1: addArrowVerts

        // helper function
        void EntityLinkDecorator::addArrowVerts(Vec4f::List &vList, const Vec3f &pointA, const Vec3f &pointB) {
            if ((pointB - pointA).lengthSquared() < 0.0001f)
                return;

            vList.push_back(Vec4f(pointA, 0.0f));
            vList.push_back(Vec4f(pointB, 1.0f));

#if 0
            // calculate arrowhead
            const Vec3f
                lineVec = pointB - pointA,
                lineDir = lineVec.normalized();
            Vec3f
                lineRight;

            if( fabs( lineDir.dot( Vec3f::PosY )) < 0.9f ) {
                lineRight = -lineDir.crossed( Vec3f::PosY );
            } else {
                lineRight = -lineDir.crossed( Vec3f::PosZ );
            }

            lineRight.normalize();

            const Vec3f
                lineUp = lineDir.crossed( lineRight );

            const Vec3f
                arrowBase		= pointB - lineDir * 16.0f,
                arrowCorner1	= arrowBase + lineUp * 4.0,
                arrowCorner2	= arrowBase + lineRight * 4.0,
                arrowCorner3	= arrowBase - lineUp * 4.0,
                arrowCorner4	= arrowBase - lineRight * 4.0;

            float
                lineLength = lineVec.length(),
                arrowCornerDist = ( lineLength - 16.0f ) / lineLength;

            vList.push_back( Vec4f( pointB, 1.0f ) );
            vList.push_back( Vec4f( arrowCorner1, arrowCornerDist ));
            vList.push_back( Vec4f( pointB, 1.0f ) );
            vList.push_back( Vec4f( arrowCorner2, arrowCornerDist ));
            vList.push_back( Vec4f( pointB, 1.0f ) );
            vList.push_back( Vec4f( arrowCorner3, arrowCornerDist ));
            vList.push_back( Vec4f( pointB, 1.0f ) );
            vList.push_back( Vec4f( arrowCorner4, arrowCornerDist ));

            vList.push_back( Vec4f( arrowCorner1, arrowCornerDist ));
            vList.push_back( Vec4f( arrowCorner2, arrowCornerDist ));
            vList.push_back( Vec4f( arrowCorner2, arrowCornerDist ));
            vList.push_back( Vec4f( arrowCorner3, arrowCornerDist ));
            vList.push_back( Vec4f( arrowCorner3, arrowCornerDist ));
            vList.push_back( Vec4f( arrowCorner4, arrowCornerDist ));
            vList.push_back( Vec4f( arrowCorner4, arrowCornerDist ));
            vList.push_back( Vec4f( arrowCorner1, arrowCornerDist ));
#endif
        }
开发者ID:rebb,项目名称:TrenchBroom,代码行数:57,代码来源:EntityLinkDecorator.cpp


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