Space Geometry
Estás programando el motor gráfico para un juego de naves retro estilo \(\textit{Shoot 'em up}\) diseñado para consolas de 32 bits.
En este juego, cuando los enemigos son destruidos, dejan una estela de daño expansivo con forma perfectamente circular. Un problema conocido en el desarrollo de videojuegos 2D es calcular exactamente el área de la pantalla que está cubierta por estas explosiones, especialmente cuando dos explosiones ocurren muy cerca y sus áreas se superponen.
Para optimizar el \(\textit{hitbox}\) del jugador, el motor del juego te envía las coordenadas en pantalla de dos explosiones simultáneas y sus respectivos radios de daño. Tu objetivo es escribir el algoritmo que calcule el área total cubierta por la unión de ambas explosiones.
Entrada
La primera línea contiene tres enteros \(X_A\), \(Y_A\) y \(R_A\) (\(-100 \leq X_A, Y_A \leq 100\), \(1 \leq R_A \leq 100\)), representando la coordenada y el radio de la primera explosión.
La segunda línea contiene tres enteros \(X_B\), \(Y_B\) y \(R_B\) (\(-100 \leq X_B, Y_B \leq 100\), \(1 \leq R_B \leq 100\)), representando la coordenada y el radio de la segunda explosión.
Salida
Imprimir el área exacta que abarcan ambas explosiones combinadas. El motor gráfico aceptará tu respuesta como válida si el error absoluto o relativo es como máximo \(10^{-6}\).
\(\textbf{Ayuda para el formato de salida:}\) Para imprimir un número de punto flotante r con precisión podés usar:
En Python: \(print(f"{r:.10f}")\)
En C++: \(std::cout << std::fixed << std::setprecision(10) << r << "\n";\)
Ejemplo
Entrada 1
1 1 1
2 2 1
Salida 1
5.7123889804
Entrada 2
1 1 1
3 3 1
Salida 2
6.2831853072
Comentarios