Ein bisschen spät zu dieser Frage. Meine Lösung für dieses Problem, obwohl es muss noch Arbeit ist:
ich den svg Pfad für die Einwahl in das plotly Tutorial gegeben verwendet wurde, nämlich
M 0.235 0.5 L 0.24 0.65 L 0.245 0.5 Z
Der Mittelpunkt (0.24,0.65)
berührt den Bogen der Kreis auf dem inneren Teil der Lehre. Somit ist der Bogen ein Kreis mit seinem Mittelpunkt bei (0.24,0.5)
und einem Radius von 0.15
.
einen Winkel theta
in Radiant, ein Zentrum (h,k)
, und mit dem Ausdruck eines Kreises in Polarform gegeben, können wir leicht zu diesem Grad kartesischer Koordinaten für einen Punkt auf dem Kreis erhalten, wie folgt:
x = h + r * cos(theta)
y = k + r * sin(theta)
können wir dann ordnen Sie einfach unsere Eingabe dem erwarteten Winkel zu, den es auf dem Messgerät haben soll, und berechnen Sie x
und y
von dort. Für meine Implementierung in Python, die math
Bibliothek bedeutet dies auf die folgenden:
h = 0.24
k = 0.5
r = 0.15
# Map my_raw_value to degrees. my_raw_value is between 0 and 300
theta = my_raw_value * 180/300
# and then into radians
theta = theta * math.pi/180
x = h + r*math.cos(theta)
y = k + r*math.sin(theta)
path = 'M 0.235 0.5 L ' + str(x) + ' ' + str(y) + ' L 0.245 0.5 Z'
Dies wird das Dreieck Pfad für Ihre Form dynamisch generieren und in etwa die lange Kante des Wahl gesetzt, wo es sein soll . Idealerweise würden wir das Ganze drehen wollen, da in dieser Implementierung die Basis des Dreiecks statisch bleibt, was zu einer geraden Linie an den Grenzen des Graphen führt. Sie müssten alle drei Punkte auf dem Pfad mit einer Rotationsmatrix multiplizieren, um die genauen Koordinaten zu erhalten.