一、绘图操作---画抛物线
void parabola(IplImage *image, CvPoint pL, CvPoint pM, CvPoint pR, const CvScalar &color, int thickness)
{
double x1, y1, x2, y2, x3, y3, a, b, c;
x1 = (double)pL.x;
y1 = (double)pL.y;
x2 = (double)pM.x;
y2 = (double)pM.y;
x3 = (double)pR.x;
y3 = (double)pR.y;
a = ((y1-y2)/(x1-x2)-(y1-y3)/(x1-x3)) / (x2-x3);
b = (y1-y2)/(x1-x2)-a*(x1+x2);
c = y1-a*x1*x1-b*x1;
//x的变化范围是[x1, x3],三像素画一个点
int x = 0;
double y = 0;
vector<CvPoint> pt;
for (x = int(x1); x <= int(x3); x = x+3)
{
y = a * double(x) * double(x) + b * double(x) + c;
pt.push_back(cvPoint(x, int(y)));
}
pt.push_back(cvPoint(int(x3), int(y3)));
for (size_t i = 0; i < pt.size()-1; ++ i)
{
cvLine(image, pt[i], pt[i+1], color);
}
}