Estoy trabajando en un problema de geometría que requiere encontrar la intersección de dos arcos parabólicos en cualquier rotación. Pude intersectar una línea y un arco parabólico girando el plano para alinear el arco con un eje, pero dos parábolas no pueden alinearse con un eje. Estoy trabajando para obtener las fórmulas, pero me gustaría saber si hay un recurso disponible para esto.Código o fórmula para la intersección de dos parábolas en cualquier rotación
Respuesta
Me defino primero la ecuación para el arco parabólico en 2D sin rotaciones:
x(t) = ax² + bx + c
y(t) = t;
Ahora puede aplicar la rotación mediante la construcción de una matriz de rotación:
s = sin(angle)
c = cos(angle)
matrix = | c -s |
| s c |
Aplicar esa matriz y obtendrá la ecuación paramétrica girada:
x' (t) = x(t) * c - s*t;
y' (t) = x(t) * s + c*t;
Esto le dará dos ecuaciones (para xey) de sus arcos parabólicos.
Haga eso para sus dos arcos girados y restelos. Esto le da una ecuación como esta:
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)
Cada una de estas ecuaciones es solo un polinomio de orden 2. Estos son fáciles de resolver.
Para encontrar los puntos de intersección, resuelva la ecuación anterior (por ejemplo, encuentre las raíces).
Obtendrá hasta dos raíces para cada eje. Cualquier raíz que sea igual en xey es un punto de intersección entre las curvas.
Obtener la posición es fácil ahora: Simplemente conecte la raíz en su ecuación paramétrica y puede obtener directamente x e y.
Desafortunadamente, la respuesta general requiere la solución de un polinomio de cuarto orden. Si transformamos coordenadas para que una de las dos parábolas esté en la forma estándar y = x^2, entonces la segunda parábola satisface (ax + by)^2 + cx + dy + e == 0. Para encontrar la intersección, resuelve ambas al mismo tiempo. Sustituyendo en y = x^2 vemos que el resultado es un polinomio de cuarto orden: (ax + bx^2)^2 + cx + dx^2 + e == 0. La solución de Nils por lo tanto no funcionará (su error: cada uno es un polinomio de segundo orden en cada variable por separado, pero juntos no lo están).
Es fácil si tiene un CAS a mano.
Ver la solución en Mathematica.
Elija una parábola y cambie las coordenadas para que su ecuación se convierta en y (x) = a x^2 (forma normal).
La otra parábola tendrá la forma general:
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)
Vamos a resolver un caso numérico:
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 -> -0.641445}, {x -> 0.379567- 0.76948 I}, {x -> 0.379567+ 0.76948 I}} parcela
Hagámosle:
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]]]
}]}]
La solución general consiste en calcular las raíces de:
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
que se realiza fácilmente en cualquier CAS.
- 1. cualquier intersección de dos colecciones
- 2. algoritmo para eliminar elementos en la intersección de dos conjuntos
- 3. Intersección de dos expresiones regulares
- 4. La intersección de dos matrices ordenadas
- 5. intersección de dos mapas STL
- 6. Encontrar la intersección entre dos columnas
- 7. Intersección de dos listas en Bash
- 8. Algoritmo para la intersección de 2 líneas?
- 9. Encontrar la intersección de dos tablas de datos .NET
- 10. Intersección de dos conjuntos (Listas) de datos
- 11. Dos segmentos de línea paralela intersección
- 12. Prueba de intersección de dos idiomas regulares
- 13. Intersección entre dos rectángulos en 3D
- 14. Determine si se usa una celda (valor) en cualquier fórmula
- 15. Comprobando la intersección de dos colecciones a través de HQL
- 16. sabiendo eficientemente si la intersección de dos listas está vacía o no, en python
- 17. Buscar cualquier elemento que exista en dos colecciones
- 18. Determine el área de la intersección de dos rectángulos
- 19. área de intersección entre dos círculos
- 20. ¿Cómo eliminar la advertencia de "rotación de dos etapas"?
- 21. git identificar la intersección más reciente de dos ramas
- 22. código Ruby para obtener la fecha del próximo lunes (o cualquier día de la semana)
- 23. Deshabilitar la rotación automática en Jquery Mobile o PhoneGap
- 24. OpenCV - Intersección entre dos imágenes binarias
- 25. ¿Cómo se calcula la intersección de dos conjuntos?
- 26. la adición de dos Ajuste [Cualquier]
- 27. intersección de dos listas de objetos diferentes en java
- 28. intersección entre dos listas no trabaja
- 29. Intersección de ruta en android
- 30. Conseguir unión, intersección, o diferencia de conjuntos en C++
Cómo resolver este sistema de ecuaciones en C++ (por lo tanto, no con las funciones integradas de Matlab) http://math.stackexchange.com/questions/1894043/solve-squared-non-linear-system-with-two -ecuaciones –
@ Mr.Sheep Disculpe, no le explicaré la solución. Tampoco he usado nunca Matlab, así que puedo ayudar aquí. –
Lo averiguaré, sin embargo, realmente aprecio su solución aquí, gracias. –