Ich arbeite an einem Geometrieproblem, das die Suche nach dem Schnittpunkt zweier Parabelbögen in jeder Drehung erfordert. Ich konnte eine Linie und einen Parabolbogen inte- grieren, indem ich die Ebene rotierte, um den Bogen mit einer Achse auszurichten, aber zwei Parabeln können nicht beide mit einer Achse ausgerichtet sein. Ich arbeite daran, die Formeln abzuleiten, aber ich würde gerne wissen, ob es dafür bereits eine Ressource gibt.Code oder Formel für den Schnittpunkt zweier Parabeln in einer beliebigen Drehung
Antwort
Ich würde zuerst die Gleichung für die parabolische Bogen in 2D ohne Drehungen definieren:
x(t) = ax² + bx + c
y(t) = t;
Sie jetzt die Rotation durch den Aufbau einer Rotationsmatrix anwenden können:
s = sin(angle)
c = cos(angle)
matrix = | c -s |
| s c |
diese Matrix Nehmen und Sie erhalten die gedrehte parametrische Gleichung:
x' (t) = x(t) * c - s*t;
y' (t) = x(t) * s + c*t;
Dies wird Ihnen zwei Gleichungen geben (für x und y) Ihrer parabolischen Bögen.
Tun Sie dies für beide gedrehten Bögen und subtrahieren Sie sie. Dies gibt Ihnen eine Gleichung wie folgt:
xa'(t) = rotated equation of arc1 in x
ya'(t) = rotated equation of arc1 in y.
xb'(t) = rotated equation of arc2 in x
yb'(t) = rotated equation of arc2 in y.
t1 = parametric value of arc1
t2 = parametric value of arc2
0 = xa'(t1) - xb'(t2)
0 = ya'(t1) - yb'(t2)
Jede dieser Gleichung ist nur eine Ordnung 2-Polynom. Diese sind einfach zu lösen.
Um die Schnittpunkte zu finden, lösen Sie die obige Gleichung (z. B. die Wurzeln finden).
Sie erhalten bis zu zwei Wurzeln für jede Achse. Jede Wurzel, die auf x und y gleich ist, ist ein Schnittpunkt zwischen den Kurven.
Die Position ist jetzt einfach: Einfach die Wurzel in Ihre parametrische Gleichung einklinken und Sie können direkt x und y erhalten.
Leider erfordert die allgemeine Antwort die Lösung eines Polynoms vierter Ordnung. Wenn wir Koordinaten so transformieren, dass eine der beiden Parabeln in der Standardform y = x^2 ist, dann erfüllt die zweite Parabel (ax + by)^2 + cx + dy + e == 0. Um die Kreuzung zu finden, lösen Sie beide gleichzeitig. Durch Einsetzen von y = x^2 sehen wir, dass das Ergebnis ein Polynom vierter Ordnung ist: (ax + bx^2)^2 + cx + dx^2 + e == 0. Nils Lösung wird daher nicht funktionieren (sein Fehler: jeder ist ein Polynom 2. Ordnung in jeder Variablen getrennt, aber zusammen sind sie nicht).
Es ist einfach, wenn Sie ein CAS zur Hand haben.
Siehe die Lösung in Mathematica.
Wählen Sie eine Parabel und ändern Sie die Koordinaten, so dass ihre Gleichung y (x) = a x^2 (Normalform) wird.
A x^2 + B x y + CC y^2 + DD x + EE y + F == 0
where B^2-4 A C ==0 (so it's a parabola)
Werfen wir einen Fall numerisch lösen:
Die andere Parabel wird die allgemeine Form haben
p = {a -> 1, A -> 1, B -> 2, CC -> 1, DD -> 1, EE -> -1, F -> 1};
p1 = {[email protected]@Reduce[
(A x^2 + B x y + CC y^2 + DD x + EE y +F /. {y -> a x^2 } /. p) == 0, x]}
{{x -> -2,11769}, {x -> -,641445}, {x -> 0,379567 - 0,76948 I}, {x -> 0,379567+ 0.76.948 I}}
Lassen Sie uns Grundstück es:
Show[{
Plot[a x^2 /. p, {x, -10, 10}, PlotRange -> {{-10, 10}, {-5, 5}}],
ContourPlot[(A x^2 + B x y + CC y^2 + DD x + EE y + F /. p) ==
0, {x, -10, 10}, {y, -10, 10}],
Graphics[{
PointSize[Large], Pink, Point[{x, x^2} /. p /. p1[[1]]],
PointSize[Large], Pink, Point[{x, x^2} /. p /. p1[[2]]]
}]}]
Die allgemeine Lösung beinhaltet die Wurzeln der Berechnung:
4 A F + 4 A DD x + (4 A^2 + 4 a A EE) x^2 + 4 a A B x^3 + a^2 B^2 x^4 == 0
, die leicht in jedem CAS getan.
- 1. Zeigt den Schnittpunkt zweier Ausdrücke
- 2. Den Schnittpunkt zweier aktiver Datensatzrelationen erhalten, rails
- 3. Schnittpunkt zweier Listen in Bash
- 4. Wie erstelle ich den Schnittpunkt zweier Hashes?
- 5. Matlab, Schnittpunkt zweier Vektoren
- 6. Wie erhält man den Schnittpunkt zweier Vektoren?
- 7. Schnittpunkt zweier Listen von Variablen
- 8. Schnittpunkt zweier Listen mit Duplikaten?
- 9. Finden Sie den Schnittpunkt zweier Linien in Matlab
- 10. Wie findet man den Schnittpunkt zweier Liniensegmente in Python?
- 11. Wie berechne ich den Schnittpunkt zweier Linien in Python?
- 12. Wie bekomme ich den Schnittpunkt zweier JSON-Arrays mit jq
- 13. Wie erkennt man den Schnittpunkt zweier Bilder während der Animation?
- 14. Algorithmus für den Schnittpunkt von 2 Linien?
- 15. Funktion, die Schnittpunkt zweier TShapes zurückgibt, einschließlich TPaths?
- 16. Drehung basierend auf den Endpunkten
- 17. Den Schnittpunkt einer Kurve von Polyfit finden
- 18. Schnittpunkt zweier Array von Objekten Basis auf dem Wert
- 19. Wie zeichne Parabeln in C#?
- 20. Probleme mit der arithmetischen Genauigkeit beim Testen auf den Schnittpunkt zweier Liniensegmente
- 21. Algorithmus für den Vergleich zweier Signale
- 22. Excel-Formel in Java-Code
- 23. Bereich Schnittpunkt in Python
- 24. Equivalent von 'in' für den Vergleich zweier Numpy Arrays
- 25. VBA-Code zum Zusammenführen zweier Zellen
- 26. Pivot in Sql-Server mit einer Drehung
- 27. Den Schnittpunkt eines Dreiecks und einer Ebene bestimmen
- 28. Alphabetische GroupBy in Linq mit einer Drehung
- 29. Den Schnittpunkt zwischen einer Linie und einem QPainterPath finden
- 30. Formel für Bedingungen
Wie lösen Sie dieses Gleichungssystem in C++ (also nicht mit den eingebauten Matlab-Funktionen) http://math.stackexchange.com/questions/1894043/solve-squared-non-linear-system-with-two -eqations –
@ Mr.Sheep Tut mir leid, ich werde Sie nicht durch die Lösung gehen. Ich habe Matlab auch nie benutzt, also kann ich auch hier helfen. –
Ich werde es herausfinden, aber ich schätze wirklich Ihre Lösung hier - danke. –