C++实现类,输入三个点坐标,生成一元二次方程(含推理过程)

今天实现一个类,通过三个点得到一个一元二次方程。

主要实现三阶求逆,然后就可以很方便求得一元二次方程的三个系数。

求得一元二次方程解的原理很简单,推导过程如下图:





主要实现在init()函数里面,类代码如下:

//  Created by cslzy on 16/5/10.
//  Copyright © 2016年 CY. All rights reserved.
//

#include "heads.hpp"


//////////////////////////////class parabolaObject ben//////////////////////////////
class parabolaObject
{
private:
    float a = 0.0;
    float b = 0.0;
    float c = 0.0;
    bool check(); // check three initial points is ok; check initialization is ok
    bool check_is_ok = false;
public:
    parabolaObject(float , float , float );
    parabolaObject(Point2f , Point2f , Point2f );
    parabolaObject();
    void setParameters(float , float , float );
    void init(Point2f, Point2f, Point2f);
    float value(float x); // return y, where y = a*x^2 + b*x + c
    void test();
};

void parabolaObject::test()
{
    Point2f p1(0.0, 0.0);
    Point2f p2(127.5, 255.0);
    Point2f p3(255.0, 0.0);
    cout<<"--!Infor: test() function setdefault points:"<> x;
    do{
        cout<<"x = "<> x;
    }while (x!=2.0);
}


验证逆矩阵:http://matrix.reshish.com/inverCalculation.php

求逆参考:http://mathworld.wolfram.com/MatrixInverse.html

你可能感兴趣的:(C/C++学习)