本文整理汇总了C++中SkOpAngle::allOnOneSide方法的典型用法代码示例。如果您正苦于以下问题:C++ SkOpAngle::allOnOneSide方法的具体用法?C++ SkOpAngle::allOnOneSide怎么用?C++ SkOpAngle::allOnOneSide使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SkOpAngle
的用法示例。
在下文中一共展示了SkOpAngle::allOnOneSide方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: orderable
bool SkOpAngle::orderable(const SkOpAngle& rh) const {
int result;
if (!fIsCurve) {
if (!rh.fIsCurve) {
double leftX = fTangentHalf.dx();
double leftY = fTangentHalf.dy();
double rightX = rh.fTangentHalf.dx();
double rightY = rh.fTangentHalf.dy();
double x_ry = leftX * rightY;
double rx_y = rightX * leftY;
if (x_ry == rx_y) {
if (leftX * rightX < 0 || leftY * rightY < 0) {
return true; // exactly 180 degrees apart
}
goto unorderable;
}
SkASSERT(x_ry != rx_y); // indicates an undetected coincidence -- worth finding earlier
return x_ry < rx_y;
}
if ((result = allOnOneSide(rh)) >= 0) {
return result;
}
if (fUnorderable || approximately_zero(rh.fSide)) {
goto unorderable;
}
} else if (!rh.fIsCurve) {
if ((result = rh.allOnOneSide(*this)) >= 0) {
return !result;
}
if (rh.fUnorderable || approximately_zero(fSide)) {
goto unorderable;
}
}
if ((result = convexHullOverlaps(rh)) >= 0) {
return result;
}
return endsIntersect(rh);
unorderable:
fUnorderable = true;
rh.fUnorderable = true;
return true;
}