三边测量法:通过三点坐标和到三点的距离,返回第4点位置

public class IBeaconLocation {

    //计算手机与蓝牙基站的距离
    public static double calculateAccuracy(iBeaconClass.iBeacon beacon) {
        int txPower = beacon.txPower;
        double rssi = beacon.rssi;
        if (rssi == 0) {
            return -1.0; // if we cannot determine accuracy, return -1.
        }

        double ratio = rssi * 1.0 / txPower;
        if (ratio < 1.0) {
            return Math.pow(ratio, 10);
        } else {
            double accuracy = (0.89976) * Math.pow(ratio, 7.7095) + 0.111;
            return accuracy;
        }
    }

    //三边测量法
    // 通过三点坐标和到三点的距离,返回第4点位置
    public double[] calcPhonePosition(double x1, double y1, double d1,
                                      double x2, double y2, double d2,
                                      double x3, double y3, double d3) {
        double[] d = {0.0, 0.0};
        double a11 = 2 * (x1 - x3);
        double a12 = 2 * (y1 - y3);
        double b1 = Math.pow(x1, 2) - Math.pow(x3, 2)
                + Math.pow(y1, 2) - Math.pow(y3, 2)
                + Math.pow(d3, 2) - Math.pow(d1, 2);
        double a21 = 2 * (x2 - x3);
        double a22 = 2 * (y2 - y3);
        double b2 = Math.pow(x2, 2) - Math.pow(x3, 2)
                + Math.pow(y2, 2) - Math.pow(y3, 2)
                + Math.pow(d3, 2) - Math.pow(d2, 2);

        d[0] = (b1 * a22 - a12 * b2) / (a11 * a22 - a12 * a21);
        d[1] = (a11 * b2 - b1 * a21) / (a11 * a22 - a12 * a21);

        return d;

    }

    //double 四舍五入
    public int doubleRound(double num) {
        BigDecimal b = new BigDecimal(num);
        num = b.setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue();
        return (int) num;
    }

}
时间: 2024-08-05 11:51:00

三边测量法:通过三点坐标和到三点的距离,返回第4点位置的相关文章

Maven 系列 三 :坐标和依赖

1 . 坐标 maven 的所有构件均通过坐标进行组织和管理.maven 的坐标通过 5 个元素进行定义,其中 groupId.artifactId.version 是必须的,packaging 是可选的(默认为jar),classifier 是不能直接定义的. groupId:定义当前 Maven 项目所属的实际项目,跟 Java 包名类似,通常与域名反向一一对应. artifactId:定义当前 Maven 项目的一个模块,默认情况下,Maven 生成的构件,其文件名会以 artifactI

Maximal Area Quadrilateral CodeForces - 340B || 三点坐标求三角形面积

Maximal Area Quadrilateral CodeForces - 340B 三点坐标求三角形面积(可以带正负,表示向量/点的不同相对位置): http://www.cnblogs.com/xiexinxinlove/p/3708147.html https://jingyan.baidu.com/article/a65957f49596ab24e67f9be7.html 枚举对角线,求出在对角线两侧取任意点能得到的三角形的面积,然后对于每条对角线,最大值就是两侧面积最大值之和. 1

Scala实现:已知三点坐标,求最短距离(如果在垂足不在线段内,最短距离为到其中一点的直线距离)

/** * 已知三点坐标,求其中一点到另两点的垂线距离 * (如果在垂足不在线段内,最短距离为到其中一点的直线距离) * Created by wzq on 17-11-2. */object Point2lineDistance { def main(args: Array[String]) { val v: Double = pointToLine(-3, 0, 3, 0, 0, 3) System.out.println(v) } def pointToLine(x1: Int, y1:

三、Android学习第三天——Activity的布局初步介绍(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下Activity相关布局的一些知识: Activity最简单跟常用的布局分为两种: ①LinearLayout -- 线性布局 ②TableLayout -- 表格布局 ③RelativeLayout -- 相对布局(今后将会频繁的使用到这个布局) 下面来简单总结下前两种(线性/表格)布局当中常用到

第三个Sprint冲刺第三天

第三个Sprint冲刺第三天

ios根据gps坐标来计算两点间的距离

//ios根据gps坐标来计算两点间的距离 //x1,y1 点1的坐标 x2,y2点2的坐标 -(double) gps2m:(double)x1 _y1:(double)y1 _x2:(double)x2 _y2:(double)y2{ double radLat1 = (x1 * 3.1416 / 180.0); double radLat2 = (x2 * 3.1416 / 180.0); double a = radLat1 - radLat2; double b = (y1 - y2)

第三篇——第二部分——第三文 配置SQL Server镜像——域环境

原文:第三篇--第二部分--第三文 配置SQL Server镜像--域环境 原文出处:http://blog.csdn.net/dba_huangzj/article/details/28904503 本文将演示如何在域环境下部署镜像,在域中部署相对来说简单很多,但是很多企业并不真正使用域来管理服务器(本人所在的公司就是其一),所以有必要演示非域环境,并且重点放在非域环境下.但是作为实践经验和最佳建议,强烈使用域环境管理.非域环境将在第四文中演示:http://blog.csdn.net/dba

Web标准:三、二列和三列布局

知识点: 1.二列自适应宽度 2.二列固定宽度 3.二列固定宽度居中 4.xhtml的块级元素(div)和内联元素(span) 5.float属性 6.三列自适应宽度 7.三列固定宽度 8.三列固定宽度居中 9.IE6的3像素bug 1)二列自适应宽度 div为块级元素,默认情况下占据一行的空间,要想让下面的div跑到右侧,需要做css的浮动来实现. 在#side里面加上float:left;即可 说明:当我们不加float时,可以看到div占据的是一行 但是如果加了float:left后,可以

三次握手的第三个ACK包丢了,TCP的处理方式

众所周知,TCP建立采用的是三次握手.最近在看论文的时候,突然想到,如果第三个ACK报文丢失了,TCP建立是否还会成功?TCP是如何处理的呢?在网上搜了一圈,看到了这篇文章: 三次握手的第三个ACK包丢了——客户端认为连接建立,写数据时,会触发RST 当Client端收到Server的SYN+ACK应答后,其状态变为ESTABLISHED,并发送ACK包给Server: 如果此时ACK在网络中丢失,那么Server端该TCP连接的状态为SYN_RECV,并且依次等待3秒.6秒.12秒后重新发送S