Ich versuche, ein Programm auf CNC zu schreiben. Grundsätzlich habe ich Kreisbogen Start X, Y, Radius und Finishing x, y auch ich kenne die Richtung des Bogens im Uhrzeigersinn oder cc. Also muss ich den Wert von y auf dem Bogen an der spezifischen x-Position herausfinden. Was ist der beste Weg, das zu tun? Ich habe ähnliche Probleme auf dieser Website here gefunden. Aber ich bin mir nicht sicher, wie ich einen Winkel erreichen kann.Wie berechne ich Punkte und Position auf dem Bogen? Wenn ich Radius, Bogenanfangs- und -endepunkte habe
Antwort
Zuerst müssen Sie die Kreisgleichung finden. Beginnen wir mit Pst = (xs,ys)
, Endpunkt Pend = (xend,yend)
Zur Vereinfachung verschieben Sie alle Koordinaten um (-xs, -ys)
, so wird Startpunkt Koordinatenursprung.
New Pend' = (xend-xs,yend-ys) = (xe, ye)
, neuer ‚zufälliger Punkt‘ Koordinaten xr' = xrandom - xs
, unbekannt Kreismitte ist (xc, yc)
xc^2 + yc^2 = R^2 {1}
(xc - xe)^2 + (yc-ye)^2 = R^2 {2} //open the brackets
xc^2 - 2*xc*xe + xe^2 + yc^2 - 2*yc*ye + ye^2 = R^2 {2'}
subtract {2'} from {1}
2*xc*xe - xe^2 + 2*yc*ye - ye^2 = 0 {3}
yc = (xe^2 + ye^2 - 2*xc*xe)/(2*ye) {4}
substitute {4} in {1}
xc^2 + (xe^2 + ye^2 - 2*xc*xe)^2/(4*ye^2) = R^2 {5}
solve quadratic equation {5} for xc, choose right root (corresponding to arc direction), find yc
having center coordinates (xc, yc), write
yr' = yc +- Sqrt(R^2 -(xc-xr')^2) //choose right sign if root exists
and finally exclude coordinate shift
yrandom = yr' + ys
Gleichung eines Kreises ist x^2 + y^2 = r^2
in Ihrem Fall wissen wir x_random
und R
Substitution in weiß, dass wir bekommen,
x_random^2 + y_random^2 = R^2
und Lösung für y_random
get Get
y_random = sqrt(R^2 - x_random^2)
Jetzt haben wir y_random
Edit: Dies funktioniert nur, wenn Ihr Bogen ein Kreisbogen ist und nicht ein elliptischer Bogen
diese Antwort auf eine Ellipse anzupassen, müssen Sie verwenden anstelle der Gleichung eines Kreises dieser Gleichung
(x^2/a^2) + (y^2/b^2) = 1
, wo a
der Radius entlang der x axis
b
und der Radius entlang y axis
Einfache Skript Daten aus einer Datei data.txt
und berechnen eine Reihe von y_random
Werte und schreibt sie in eine out.txt
import math
def fromFile():
fileIn = open('data.txt', 'r')
output = ''
for line in fileIn:
data = line.split()
# line of data should be in the following format
# x h k r
x = float(data[0])
h = float(data[1])
k = float(data[2])
r = float(data[3])
y = math.sqrt(r**2 - (x-h)**2)+k
if ('\n' in line):
output += line[:-1] + ' | y = ' + str(y) + '\n'
else:
output += line + ' | y = ' + str(y)
print(output)
fileOut = open('out.txt', 'w')
fileOut.write(output)
fileIn.close()
fileOut.close()
if __name__ == '__main__':
fromFile()
data.txt
sollten als solche
x0 h0 k0 r0
x1 h1 k1 r1
x2 h2 k2 r2
... for as many lines as required
Ich dachte Gleichung für Kreis ist (x - h)^2 + (y - k)^2 = r^2. Liege ich falsch? h, k Mittelpunkt eines Kreises. – aidas
@aidas h und k werden verwendet, um den Kreis entlang der x- und y-Achse zu verschieben. Wenn Sie den Kreis nicht übersetzen, h = 0, k = 0, dann erhalten Sie x^2 + y^2 = r^2 – francium
, aber in meinem Fall h und k ist nicht 0.Ich könnte den Ursprung mit jedem Bogen in dem Programm, das ich mache, auf Null setzen. aber ich hoffe, dass es eine sauberere Methode gibt. – aidas
- 1. Punkte auf einem Bogen zeichnen
- 2. Suche nach Bogen/Kreismitte bei 2 Punkten und Radius
- 3. Wie Bogen mit dem Radius zeichnen und starten und stoppen Winkel
- 4. Wie berechne ich die gerenderte Position der Ecken eines Textblocks?
- 5. Wie berechne ich einen Punkt auf dem Kreisumfang?
- 6. Wie berechne ich mit dem Padding
- 7. Wenn ich die Operatoren + und = überladen habe, muss ich + = überladen?
- 8. Wie berechne ich die Position auf einem Kreis mit einem bestimmten Winkel?
- 9. Wie berechne ich NSNumber
- 10. Wie berechne ich einen vierfarbigen Farbverlauf?
- 11. Wie kann ich Bogen mit Core Graphics ziehen und wie kann ich drehen, dass arc
- 12. Wie konfiguriere ich mehrere Mount-Punkte und zwei separate Playlists auf dem einzelnen Icecast-Server?
- 13. Wie berechne ich CR zwischen Originalbild und dekomprimiertem Bild?
- 14. position: absolute innerhalb border-radius und overflow: hidden
- 15. Wie berechne ich die Seitentabellengröße?
- 16. Wie finde ich alle Punkte eines gleichschenkligen Dreiecks mit dem Eckpunkt, dem Basismittelpunkt und der Basisbreite?
- 17. Wie berechne ich den verschlüsselten Passwort-Wert von Access-Request-RADIUS-Paket
- 18. Ich habe auf
- 19. Wie kann ich die Länge und Position der Fußzeile konfigurieren?
- 20. Angular - Wie kann ich aus dem DOM ein Element entfernen, auf dem ich $ compile verwendet habe?
- 21. Wie berechne ich die Geschwindigkeit mit dem Core-Standort?
- 22. Mongoose finden geo Punkte von Radius
- 23. Wie berechne ich die Ähnlichkeit zweier Ganzzahlen?
- 24. Wie berechne ich den Durchschnitt, wenn die Zahlen gruppiert werden
- 25. Wie beschleunige ich große Objekte, wenn ich viel RAM habe?
- 26. Wie kann ich einen gefüllten Bogen zeichnen, d. H. Regenbogen?
- 27. Wie berechne ich die Zeitspanne von Zeitstempeln?
- 28. Wie kann ich Kommas und Punkte aus einem String entfernen?
- 29. Wie nehme ich einen ByteArrayInputStream und habe seinen Inhalt als Datei auf dem Dateisystem gespeichert
- 30. Wie entferne ich den oberen und unteren Padding von UIButton, wenn ich ihn mit dem automatischen Layout erstellt habe?
Sie nur y_random wollen Sie oder wollen Sie den Winkel als auch? – francium
x = R cos (Theta), also Theta = Arccos (x/R), y = R sin (Theta). Möglicherweise müssen Sie möglicherweise sicherstellen, dass Sie sich im richtigen Quadranten befinden. – Obromios
Entschuldigung, ich habe das nicht erwähnt, aber seinen Kreisbogen. – aidas