Module: Géométrie


Problem

5 /7


Maître de ramassage

Theory Click to read/hide

Intersection

Point d'intersection de lignes

a1, b1, c1 - coefficients de la première ligne,
a2, b2, c2 - les coefficients de la deuxième ligne,
x, y - point d'intersection.

\(x = {-(c1 \cdot b2 - c2 \cdot b1) \over (a1 \cdot b2 - a2 \cdot b1)} \\ y = {-(a1 \ cdot c2 - a2 \cdot c1) \over (a1 \cdot b2 - a2 \cdot b1)} \)

Nous savons déjà comment vérifier l'intersection des lignes (elles ne sont pas parallèles) et trouver leur point d'intersection.

Apprenons maintenant à faire cela avec des segments

Tout d'abord, apprenons à vérifier simplement leur intersection.

Les segments se croisent si les extrémités de l'un sont sur les côtés opposés de l'autre et vice versa (ceci est facilement vérifié par le produit croisé).  Le seul cas où cela ne fonctionnera pas - les segments se trouvent sur une ligne droite. Pour cela, vous devez vérifier l'intersection de ce qu'on appelle. boîte englobante (boîte englobante du segment) - vérifie l'intersection de la projection des segments sur X et Y.

haches.

Maintenant que nous savons comment vérifier l'intersection des segments, apprenons à trouver le point (ou segment) de leur intersection :
- s'ils ne se coupent pas, alors il est clair qu'un tel point n'existe pas ;
- sinon, nous construirons des droites sur lesquelles reposent ces segments.

S'ils sont parallèles, alors les segments se trouvent sur la même ligne, et nous devons trouver le segment d'intersection - du maximum des bords gauches des segments au minimum des bords droits (le point est inférieur à l'autre point, s'il est à gauche, en cas d'égalité X-coordonnées - s'il est inférieur).

Si les lignes ne sont pas parallèles, trouvez le point de leur intersection et renvoyez-le.

Problem

Venceslav a récemment lu un nouveau livre de ramassage et maintenant il veut tester ses connaissances dans le parc. Pour simplifier, imaginons le parc comme un ensemble de chemins, qui sont des segments sur un plan. Wenceslas s'est déjà promené dans ce parc, et il sait quelle fille marche le long de quel chemin. Le problème est que Wenceslas est très paresseux et ne marche que sur un seul chemin. Et il est aussi trop paresseux pour savoir quel genre de filles il peut rencontrer en cours de route, et c'est pourquoi il a demandé à vous, son meilleur ami, de l'aider dans cette affaire difficile.
 
Entrée
La première ligne contient les coordonnées des extrémités du chemin (X1, Y1) et ( X2, Y2), le long de laquelle marche Wenceslas (\(- 20 <= X1, Y1, X2, Y2 <= 20\)).
La deuxième ligne contient un entier N - le nombre de chemins empruntés par les filles (\(0 <= N <= 5\) < /span>).
Dans les lignes N suivantes, entrez les coordonnées des extrémités des chemins le long desquels les filles marchent (Xi1, Yi1< /sub>) et (Xi2, Yi2 ), par i -ème chemin marchant i-ème fille (\(-20 <= X_{i1}, Y_ {i1}, X_{i2 }, Y_{i2} <= 20\))
 
Sortie
Sur la première ligne, imprimez le nombre M - le nombre de filles dont les chemins se croiseront avec le chemin de Wenceslas (toucher les chemins est considéré comme une intersection).
Sur la deuxième ligne, écrivez les nombres M - nombres de filles que notre héros rencontrera. Les filles sont numérotées à partir d'un !
 
Exemples
0 0 2 2
1
0 2 2 0
# Entrée Sortie
1 1
1