skia2/experimental/Intersection/QuadraticUtilities.cpp
caryclark@google.com 27accef223 Intersection work in progress
Review URL: https://codereview.appspot.com/5576043

git-svn-id: http://skia.googlecode.com/svn/trunk@3087 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-25 18:57:23 +00:00

22 lines
477 B
C++

#include "QuadraticUtilities.h"
int quadraticRoots(double A, double B, double C, double t[2]) {
B *= 2;
double square = B * B - 4 * A * C;
if (square < 0) {
return 0;
}
double squareRt = sqrt(square);
double Q = (B + (B < 0 ? -squareRt : squareRt)) / -2;
int foundRoots = 0;
if ((Q <= A) ^ (Q < 0)) {
t[foundRoots++] = Q / A;
}
if ((C <= Q) ^ (C < 0)) {
t[foundRoots++] = C / Q;
}
return foundRoots;
}