w

import random
import pprint
import math
import matplotlib.pyplot as plt def gen_random(magnify_=1000, round_=2):
dd = round(random.random() * magnify_, round_)
return dd def float_format(d, not_float=0.0):
if d is float:
print(232)
else:
try:
d = float(d)
except Exception:
d = not_float
return d def gen_atob_dis(a, b):
a, b = float_format(a), float_format(b)
return ((a ** 2 + b ** 2) * 0.5) ** 0.5 def chk_triangle(a, b, c):
a, b, c = float_format(a), float_format(b), float_format(c)
if a + b > c and a + c > b and b + c > a:
return 1
else:
return 0 def compute_triangle_angle(a, b, c):
a, b, c = float_format(a), float_format(b), float_format(c)
cos = (a ** 2 + b ** 2 - c ** 2) / (2 * a * b)
return math.acos(cos) def radius_coordinates_to_perpendicular_coordinates(dic_):
polar_radius, polar_angle = dic_['polar_radius'], dic_['polar_angle']
res_ = {}
res_['y'], res_['x'] = polar_radius * math.sin(polar_angle), polar_radius * math.cos(polar_angle)
return res_ PI = math.pi
uuid_num = 5
uuid_num_plus = uuid_num + 1
str_ = '-86 -83 -71 -69 -73 -60 -72 -84 -82 -56 -82 -75 -71 -89 -83 -79 -67 -87 -77 -79' l_row = str_.split('\t\t\t')
rssi_matrix = {}
for i in range(0, uuid_num, 1):
i_ = i + 1
rssi_matrix[i_] = {}
l_one = l_row[i].split('\t')
step_ = 0
for ii in range(0, uuid_num, 1):
ii_ = ii + 1
if i == ii:
rssi_matrix[i_][ii_] = 0
else:
rssi_matrix[i_][ii_] = l_one[step_]
step_ += 1 rssi_distance_matrix = {}
for i in range(0, uuid_num, 1):
i_ = i + 1
rssi_distance_matrix[i_] = {}
for ii in range(0, uuid_num, 1):
ii_ = ii + 1
a = rssi_matrix[i_][ii_]
b = rssi_matrix[ii_][i_]
rssi_distance_matrix[i_][ii_] = gen_atob_dis(a, b)
pprint.pprint(str_)
pprint.pprint(rssi_matrix)
pprint.pprint(rssi_distance_matrix) triangle_dic = {}
triangle_side_list = []
for i in range(1, uuid_num_plus, 1):
for ii in range(1, uuid_num_plus, 1):
for iii in range(1, uuid_num_plus, 1):
if i != ii and i != iii and ii != iii:
triangle_id = '%s%s%s' % (i, ii, iii)
chk_unique_triangle_id_list = sorted(list(triangle_id))
if chk_unique_triangle_id_list in triangle_side_list:
continue
triangle_side_list.append(chk_unique_triangle_id_list)
triangle_dic[triangle_id] = {}
triangle_dic[triangle_id]['length_of_side_dic'] = []
triangle_dic[triangle_id]['is_triangle'] = 0
c = rssi_distance_matrix[i][ii]
b = rssi_distance_matrix[i][iii]
a = rssi_distance_matrix[ii][iii]
is_triangle = chk_triangle(a, b, c)
triangle_dic[triangle_id]['is_triangle'] = is_triangle
if is_triangle == 1:
triangle_dic[triangle_id]['length_of_side_dic'] = {}
triangle_dic[triangle_id]['angle_of_side_dic'] = {}
k12 = '%s%s' % (i, ii)
k13 = '%s%s' % (i, iii)
k23 = '%s%s' % (ii, iii)
triangle_dic[triangle_id]['length_of_side_dic'][k12] = a
triangle_dic[triangle_id]['length_of_side_dic'][k13] = b
triangle_dic[triangle_id]['length_of_side_dic'][k23] = c # filter_ triangle rebuild
radius_coordinates = {}
radius_coordinates[1] = {}
radius_coordinates[1]['polar_angle'] = 0
radius_coordinates[1]['polar_radius'] = 0
radius_coordinates[2] = {}
radius_coordinates[2]['polar_radius'] = rssi_distance_matrix[1][2]
radius_coordinates[2]['polar_angle'] = 0
radius_coordinates[3] = {}
radius_coordinates[3]['polar_radius'] = rssi_distance_matrix[1][3]
a = rssi_distance_matrix[1][2]
b = rssi_distance_matrix[1][3]
c = rssi_distance_matrix[2][3]
radius_coordinates[3]['polar_angle'] = abs(compute_triangle_angle(a, b, c)) for i in range(4, uuid_num_plus, 1):
radius_coordinates[i] = {}
radius_coordinates[i]['polar_radius'] = 0
radius_coordinates[i]['polar_angle'] = 0 polar_radius_i = rssi_distance_matrix[1][i] a = rssi_distance_matrix[1][2]
c = rssi_distance_matrix[2][i]
angle_radius_from12 = compute_triangle_angle(a, polar_radius_i, c) a = rssi_distance_matrix[1][3]
c = rssi_distance_matrix[3][i]
angle_radius_from13 = compute_triangle_angle(a, polar_radius_i, c) polar_angle_i = angle_radius_from12
if abs(angle_radius_from12) + radius_coordinates[3]['polar_angle'] == angle_radius_from13:
polar_angle_i = 2 * PI - angle_radius_from12
radius_coordinates[i]['polar_radius'] = polar_radius_i
radius_coordinates[i]['polar_angle'] = polar_angle_i perpendicular_coordinates = {}
for i in range(1, uuid_num_plus, 1):
dic_ = radius_coordinates[i]
res_ = radius_coordinates_to_perpendicular_coordinates(dic_)
perpendicular_coordinates[i] = {}
perpendicular_coordinates[i]['x'], perpendicular_coordinates[i]['y'] = res_['x'], res_['y'] x = [perpendicular_coordinates[i]['x'] for i in range(1, uuid_num_plus, 1)]
y = [perpendicular_coordinates[i]['y'] for i in range(1, uuid_num_plus, 1)] for i in range(1, 4, 1):
pprint.pprint(perpendicular_coordinates[i])
plt.plot(x, y)
plt.show()

science_action的更多相关文章

随机推荐

  1. 如何实现动态水球图 --》 echars结合echarts-liquidfill实现

    1)项目中作为项目依赖,安装到项目当中(注意必须要结合echars) npm install echarts vue-echarts --save npm install echarts-liquid ...

  2. lambda表达式(2)

    转:http://www.cnblogs.com/kingmoon/archive/2011/05/03/2035696.html "Lambda表达式"是一个匿名函数,是一种高效 ...

  3. sql中unique和distinct

    在SQL语法里面,有unique和distinct两个关键字, unique是distinct的同义词,功能完全相同.distinct是标准语法,其他数据库 sql server,db2,oracle ...

  4. [APIO 2010] [LOJ 3144] 奇怪装置 (数学)

    [APIO 2010] [LOJ 3144] 奇怪装置 (数学) 题面 略 分析 考虑t1,t2时刻坐标相同的条件 \[\begin{cases} t_1+\lfloor \frac{t_1}{B} ...

  5. 问题 B: 傻鸡抓大闸蟹

    问题 B: 傻鸡抓大闸蟹 时间限制: 1 Sec  内存限制: 128 MB提交: 94  解决: 39[提交] [状态] [命题人:jsu_admin] 题目描述 背景又到了吃大闸蟹的季节,黄老师想 ...

  6. vue中如何实时修改输入的值

    vue中如何实时修改输入的值 经常看到需要对用户输入的值进行实时修改,有时是需要修改为指定的展示内容,有时候是用来校验,禁止用户输入非法数据,总之是一个常见的需求吧,只是自己一直没有特意去关注.思来想 ...

  7. 搜索(BFS)---计算在网格中从原点到特定点的最短路径长度

    计算在网格中从原点到特定点的最短路径长度 [[1,1,0,1], [1,0,1,0], [1,1,1,1], [1,0,1,1]] 题目描述: 1表示可以经过某个地方,求解从(0,0)位置到(tr,t ...

  8. 性能分析之profiling及火焰图

    profiling 是一项非常重要的,但又对很多程序员陌生的技术,它尤其对性能调优有显著帮助.本文以Brendan对perf的介绍稍加引入[底层涉及了太多细节,目前仅关心如何用它对服务器应用进行use ...

  9. 全局解释锁GIL

    ''' 定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native th ...

  10. 一、JQJson数组

    叙述:常用的数据格式无非三种(组装数据,传参传值) 一.数组 : 1.定义 var select = []; //或 var select = new Array(); 2.JS给一个数组赋值 sel ...