Étant donné 4 points sur les plans 2D A, B, C, D
, calculez l'aire de la région d'intersection des triangles OAB
et OCD
, où O
est le centre du plan, en ayant les coordonnées (0, 0)
.
Les algorithmes qui s'exécutent en complexité temporelle constante (en termes d'opérations arithmétiques) sont encouragés, mais pas forcés.
Règles
- Chaque point est représenté par deux nombres réels, dénote leurs coordonnées X et Y.
- Facultativement, si votre langage de programmation (ou une bibliothèque de votre langage de programmation) a un type intégré
Point
ou équivalent, il est autorisé à prendre unPoint
objet en entrée.
- Facultativement, si votre langage de programmation (ou une bibliothèque de votre langage de programmation) a un type intégré
- L'entrée est donnée en 4 points, dans les formats, y compris mais sans s'y limiter:
- Une liste de 8 coordonnées.
- Une liste de 4 points, chaque point peut être représenté dans n'importe quel format pratique.
- Deux listes de 2 points.
- etc.
- Vous ne pouvez pas assumer un ordre particulier des points (ordre anti-horaire ou horaire)
- Vous ne pouvez pas supposer que le point
O
est passé en entrée. En d'autres termes, le programme ne doit pas prendre et utiliser une entrée étrangère. - Vous ne pouvez pas supposer que tous les points sont différents. En d'autres termes, les triangles peuvent être dégénérés. Vous devez également gérer ce cas (voir les cas de test ci-dessous)
- La différence absolue ou relative doit être inférieure à celle des exemples de cas de test ci-dessous.
10-3
Critères gagnants
C'est le code-golf , la réponse la plus courte en octets gagnant!
Exemples de cas de test
Ax Ay Bx By Cx Cy Dx Dy area
5 1 1 3 -1 0 0 -1 0
5 1 1 3 -1 0 0 0 0
5 1 1 3 0 0 0 0 0
5 1 1 3 3 4 4 -3 4.50418
5 1 1 3 1 2 2 1 1.5
5 1 1 3 -2 5 4 -2 1.74829
5 1 1 3 -2 5 5 4 2.96154
5 1 1 3 3 5 5 4 1.88462
5 1 1 3 3 5 3 1 3.92308
5 1 1 3 3 5 4 -1 5.26619
5 1 1 3 5 1 4 -1 0
5 1 1 3 5 1 1 3 7
1 3 1 3 5 1 1 3 0
1 3 1 3 1 3 1 3 0
4 8 4 -1 -2 6 -2 -3 0
1.2 3.4 -0.3 4.2 5 7.6 -1.1 2.4 2.6210759326188535
3.1 0.6 0.1 7.2 5.2 0.7 0.9 8 9.018496993987977
Si quelqu'un le souhaite, voici les sorties du premier groupe de cas de test sous leur forme exacte:
0
0
0
46375/10296
3/2
1792/1025
77/26
49/26
51/13
23345/4433
0
7
0
0
0
Image d'illustration pour le cas de test 5 1 1 3 3 4 4 -3
(la zone du quadrilatère vert est la sortie attendue):
[ ]