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


C++ Geom::rot90方法代码示例

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


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

示例1: vectors_are_clockwise

/**
 *
 * \todo
 * FIXME: This can be done using linear operations, more stably and
 *  faster.  method: transform A and C into B's space, A should be
 *  negative and B should be positive in the orthogonal component.  I
 *  think this is equivalent to
 *  dot(A, rot90(B))*dot(C, rot90(B)) == -1.
 *    -- njh
 */
static bool
vectors_are_clockwise (Geom::Point A, Geom::Point B, Geom::Point C)
{
    using Geom::rot90;
    double ab_s = dot(A, rot90(B));
    double ab_c = dot(A, B);
    double bc_s = dot(B, rot90(C));
    double bc_c = dot(B, C);
    double ca_s = dot(C, rot90(A));
    double ca_c = dot(C, A);

    double ab_a = acos (ab_c);

    if (ab_c <= -1.0) {
        ab_a = M_PI;
    }

    if (ab_c >= 1.0) {
        ab_a = 0;
    }

    if (ab_s < 0) {
        ab_a = 2 * M_PI - ab_a;
    }

    double bc_a = acos (bc_c);

    if (bc_c <= -1.0) {
        bc_a = M_PI;
    }

    if (bc_c >= 1.0) {
        bc_a = 0;
    }

    if (bc_s < 0) {
        bc_a = 2 * M_PI - bc_a;
    }

    double ca_a = acos (ca_c);

    if (ca_c <= -1.0) {
        ca_a = M_PI;
    }

    if (ca_c >= 1.0) {
        ca_a = 0;
    }

    if (ca_s < 0) {
        ca_a = 2 * M_PI - ca_a;
    }

    double lim = 2 * M_PI - ca_a;

    if (ab_a < lim) {
        return true;
    }

    return false;
}
开发者ID:NotBrianZach,项目名称:modalComposableProgrammableFuzzySearchingVectorGraphicEditing,代码行数:71,代码来源:sp-offset.cpp


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