-
Notifications
You must be signed in to change notification settings - Fork 0
/
Npoints.py
72 lines (62 loc) · 2.31 KB
/
Npoints.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import plotly.graph_objects as go
from plotly.offline import plot
import numpy as np
from fastdist import fastdist
from CirclesIntersection.CirclesIntersect import solve_inter_circles
class ConstPlotly:
xaxis = dict(showgrid=False, zeroline=False,
showticklabels=False)
yaxis = dict(showgrid=False, zeroline=False,
showticklabels=False)
transparent_color = 'rgba(0,0,0,0)'
def distance_eucl(x: list, y: list) -> float:
"""
Distance euclidienne entre 2 vecteurs
"""
return round(fastdist.euclidean(np.array(x), np.array(y)), 3)
""" Structure de l'ensemble des n Points -> Matrice d'adjacence (list of lists)
La cellule de coordonnées (i,j) donne la distance entre le point d'indice i et j
"""
def plotPoints(Points):
fig = go.Figure()
# Création des points
points_x = []
points_y = []
points_index = []
# index des neurones existants
for pts in Points[:]:
if Points.index(pts) == 0:
# 1er point à placer
points_x.append(0)
points_y.append(0)
points_index.append(0)
elif Points.index(pts) == 1:
# 2e point à placer par rapport au premier
points_x.append(Points[0][1])
points_y.append(0)
points_index.append(1)
else:
# jème point à placer par rapport aux j-1 premiers,
# intersection de j-1 cercles
x, y = solve_inter_circles(points_x,
points_y,
[Points[Points.index(pts)][j] for j in range(Points.index(pts))])
points_x.append(x)
points_y.append(y)
points_index.append(Points.index(pts))
fig.add_scatter(x=points_x, y=points_y, mode='markers+text', text=points_index,
hovertemplate="<b>%{text}</b><extra></extra>", textposition="bottom center",
textfont=dict(
size=10,
),
marker=dict(
color='black'
))
fig.update_layout(
xaxis=ConstPlotly.xaxis,
yaxis=ConstPlotly.yaxis,
paper_bgcolor=ConstPlotly.transparent_color,
plot_bgcolor=ConstPlotly.transparent_color,
showlegend=False
)
plot(fig)