C++最短距離解(2021年1月17日)


C++は1つの点から曲線までの最近の距離の解を実現する(遍歴法)
#include
#include
#include
#include
#include
#include
using namespace std;
int main ()
{
     
    //     ,         、  (           )
    struct vechicleState
    {
     
        public:
            double x;
            double y;
            double yaw;
            double v;
    };

    struct vechicleState state={
     7.0,-3.0,0.0,0.0};
    vector<double> cx={
     };
    vector<double> cy={
     };
    for(int i=1;i<50;i++)
    {
     
        cx.push_back(i);
        cy.push_back((i/5.0)*i/2.0);
        
    }
    
    double L=0.0;
    double Lf;
    Lf=0.1*state.v+2.0;
    double min=abs(sqrt(pow(state.x-cx[10],2)+pow(state.y-cy[10],2)));
    cout<<min<<endl;
    int index=0;
    //                 
    for(int j=0;j<cx.size();j++)
    {
     
        double d=abs(sqrt(pow(state.x-cx[j],2)+pow(state.y-cy[j],2)));
        if(d<min)
        {
     
            min=d;
            index=j;   
        }
           
    }
    cout<<index<<endl;//           
    cout<<min<<endl;//       
    //           
    while(Lf>L && (index+1)<50)
    {
        
        double dx=cx[index+1]-cx[index];
        double dy=cy[index+1]-cy[index];
        L+=sqrt(pow(dx,2)+pow(dy,2));
        index+=1;

        
        
    }
    cout<<index<<endl;
}