|
@@ -75,10 +75,13 @@ struct location_card
|
|
|
if(!is_valid())
|
|
|
return false;
|
|
|
point p=m_d.back().p;
|
|
|
- //if(p==pt)return false;
|
|
|
- if(point::eq(p.x,pt.x,0.05) && point::eq(p.y,pt.y,0.05)) return false;
|
|
|
+
|
|
|
+ //if(point::eq(p.x,pt.x,0.2) && point::eq(p.y,pt.y,0.2)) return false;
|
|
|
+ double dis = p.dist(pt);
|
|
|
double arg = make_arg(pt,p);
|
|
|
- log_info("his_location:line_changed:%d,%f,m_arg:%f,%s,%f",m_cardid,arg,m_arg, (arg-m_arg > -1e-10 && arg-m_arg<1e-10)?"same":"not same",m_arg-arg);
|
|
|
+ log_info("his_location:line_changed:%d,%f,m_arg:%f,%s,%f,%f",m_cardid,arg,m_arg, (arg-m_arg > -1e-10 && arg-m_arg<1e-10)?"same":"not same",m_arg-arg,dis);
|
|
|
+ if(dis<1.5 && fabs(fabs(arg)+fabs(m_arg)-3.141593)< 0.000005)
|
|
|
+ return false;
|
|
|
return !point::eq(arg,m_arg,1e-10);
|
|
|
}
|
|
|
bool is_speed_changed(const point& pt,uint64_t time)
|
|
@@ -94,13 +97,13 @@ struct location_card
|
|
|
m_d.pop();
|
|
|
}
|
|
|
m_d.emplace(pt,time);
|
|
|
- if(v==0.0)
|
|
|
+ if(v<=0.1)
|
|
|
return flag;
|
|
|
double dist = m_p.dist(pt);
|
|
|
double t = time - m_timestamp;
|
|
|
double avge_speed= dist/t*1000;
|
|
|
- log_info("his_location cardid:%d:v:%.2f,avge_v:%.2f,(%.2f--%.2f)",m_cardid,v,avge_speed,0.8*avge_speed,1.2*avge_speed);
|
|
|
- if(v<(1-0.2)*avge_speed && v>(1+0.2)*avge_speed)
|
|
|
+ log_info("his_location cardid:%d:v:%.2f,avge_v:%.2f,(%.2f--%.2f)",m_cardid,v,avge_speed,0.7*avge_speed,1.3*avge_speed);
|
|
|
+ if(v<(1-0.3)*avge_speed && v>(1+0.3)*avge_speed)
|
|
|
flag=true;
|
|
|
|
|
|
return flag;
|