本文整理汇总了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