• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: C/C++
  • 标签: C/C+  

资源简介

利用蓝牙进行信号收集并计算距离,利用三边测距算法进行定位

资源截图

代码片段和文件信息

#include 
#include
#include 
using namespace std;

static double calculateDistance( double rssi) {
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy return -1.
}


//double distance = rssi;
double distance = 0.56778245 * rssi + 0.00788862 * pow(rssi2) + 10.2;
return distance;

}

static class Point
{
public :
double X;
double Y;
//表示指定点,据此点的距离  
double Distance;
void point_get(double a double b double c) { X = a; Y = b; Distance = c; }
};

static Point GetPiontByThree(Point p1 Point p2 Point p3)
{
/* Math.Pow(y1-Y)+Math.Pow(X-x1)=Math.Pow(D1)
* Math.Pow(y2-Y)+Math.Pow(X-x2)=Math.Pow(D2)
* Math.Pow(y3-Y)+Math.Pow(X-x3)=Math.Pow(D3)
* 1-3.2-3解得:
* 2 * (p1.X - p3.X)x + 2 * (p1.Y - p3.Y)y = Math.Pow(p1.X 2) - Math.Pow(p3.X 2) + Math.Pow(p1.Y 2) - Math.Pow(p3.Y 2) + Math.Pow(p3.Distance 2) - Math.Pow(p1.Distance 2);
* 2 * (p2.X - p3.X)x + 2 * (p2.Y - p3.Y)y = Math.Pow(p2.X 2) - Math.Pow(p3.X 2) + Math.Pow(p2.Y 2) - Math.Pow(p3.Y 2) + Math.Pow(p3.Distance 2) - Math.Pow(p2.Distance 2);
* 简化:
* 2Ax+2By=C
* 2Dx+2Ey=F
* 简化:
* x=(BF-EC)/(2BD-2AE)
* y=(AF-DC)/(2AE-2BD)
*/
double A = p1.X - p3.X;
//cout << A << “\n“;
    double B = p1.Y - p3.Y;
//cout << B << “\n“;
double C = pow(p1.X 2) - pow(p3.X 2) + pow(p1.Y 2) - pow(p3.Y 2) + pow(p3.Distance 2) - pow(p1.Distance 2);
double D = p2.X - p3.X;
//cout << D << “\n“;
double E = p2.Y - p3.Y;
//cout << E << “\n“;
double F = pow(p2.X 2) - pow(p3.X 2) + pow(p2.Y 2) - pow(p3.Y 2) + pow(p3.Distance 2) - pow(p2.Distance 2);

//cout << 2 * B * D  << “\n“;
// cout << 2 * A * E << “\n“;

评论

共有 条评论