Deux segments se coupent-ils ?
Vérifiez si deux segments finis se rencontrent vraiment : celui de (0 ; 0) à (4 ; 4) et celui de (0 ; 4) à (4 ; 0) se croisent en (2 ; 2), à mi-chemin de chacun. Contacts en bout et recouvrements compris. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- X1
- 0
- Y1
- 0
- X2
- 4
- Y2
- 4
- X3
- 0
- Y3
- 4
- Type
- proper
- X
- 2
- Y
- 2
- T
- 0,5
Ce vérificateur d'intersection de segments répond à une question classique de géométrie plane : étant donnés deux segments de droite fermés par leurs quatre extrémités, se croisent-ils ou se touchent-ils, et le cas échéant où ? Vous fournissez huit nombres finis—x1, y1, x2, y2 pour le segment AB et x3, y3, x4, y4 pour le segment CD—et le moteur résout les équations paramétriques A plus t fois (B moins A) égale C plus u fois (D moins C), les deux paramètres restant dans l'intervalle unitaire fermé. Lorsqu'une solution existe, il renvoie intersects true, le type de contact (croisement propre, contact d'extrémité ou chevauchement colinéaire), les coordonnées d'un point partagé et les paramètres t et u. Lorsque les segments se manquent, il renvoie intersects false avec kind none et omet les champs du point.
Ce que signifie l'intersection de segments et en quoi elle diffère des droites infinies
En géométrie euclidienne du plan, un segment de droite est l'ensemble fermé des points entre deux extrémités, et non la droite infinie qui les prolonge. Deux segments s'intersectent lorsqu'ils partagent au moins un point commun : ils peuvent se croiser dans leurs intérieurs relatifs (intersection propre), se rencontrer seulement en une extrémité (jonction en T ou sommet partagé), ou reposer sur la même droite support et se chevaucher sur un sous-segment ou un seul point (contact colinéaire).
L'intention de recherche se regroupe autour de phrases telles que deux segments se coupent-ils, calculateur d'intersection de segments, vérifier le croisement de segments et trouver l'intersection de deux segments à partir des coordonnées. Cette intention diffère volontairement d'un solveur de droites infinies : prolonger les deux segments en droites complètes peut inventer un croisement loin des bords finis qui comptent pour les polygones, les collisions et les liaisons cartographiques.
Le calculateur traite les segments comme fermés, de sorte qu'un contact extrémité à extrémité compte comme intersection et non comme un échec silencieux, conformément à la convention habituelle des segments fermés dans les manuels de géométrie computationnelle et les problèmes scolaires.
Où les contrôles d'intersection de segments s'insèrent dans l'étude, la conception et le code
Les élèves rencontrent l'intersection de segments en étudiant la géométrie analytique, les arêtes de polygones et la distinction entre intervalles ouverts et fermés sur une droite. Un manuel peut donner quatre extrémités et demander si les segments se croisent, ou présenter une figure où seule l'extension en droite infinie se rencontrerait ; ce vérificateur renvoie un booléen clair plus des coordonnées en cas de contact et kind none sinon.
Architectes, géomètres et concepteurs de niveaux de jeu ont souvent besoin de savoir si deux murs, routes ou arêtes de chemin se rencontrent réellement dans leurs longueurs finies avant de traiter un plan comme connecté. Les développeurs appellent le même contrat depuis des scripts pour semer des vecteurs de test déterministes dans des bibliothèques de géométrie, illustrer des tests d'orientation en outils pédagogiques, ou satisfaire des énoncés de programmation exigeant des réponses exactes segment–segment.
Associez-le aux outils de milieu et de formule de section lorsque vous connaissez déjà un segment et avez besoin de points intérieurs, au calculateur d'intersection de droites infinies lorsque vous voulez le croisement des droites supports même hors des segments, et aux aides d'aire de polygones lorsque les intersections d'arêtes alimentent des figures planes plus grandes.
Cas d’usage
Exercices de segments pour devoirs et examens
Élèves et correcteurs confirment si deux segments se rencontrent à partir de huit coordonnées d'extrémités, y compris croisements propres, contacts d'extrémité et manques clairs, sans système d'algèbre computationnelle local.
Contrôle d'arêtes en maillages, CAO et cartes
Les outils qui valident arêtes de polygones, liaisons routières ou murs peuvent demander si deux segments finis partagent un point avant de traiter un graphe comme connecté.
Questions fréquentes
Combien coûte le vérificateur d'intersection de segments ?
Il est gratuit dans votre navigateur sur cette page.
Quelles entrées sont obligatoires ?
Huit coordonnées finies : x1,y1,x2,y2 pour le segment AB et x3,y3,x4,y4 pour le segment CD. La précision optionnelle fixe les décimales de 0 à 15 (défaut 10).
Comment l'intersection est-elle calculée ?
Forme paramétrique P = A + t(B−A) = C + u(D−C). On résout t et u via le produit vectoriel 2D des vecteurs direction ; les deux paramètres doivent être dans [0,1] pour un contact de segment fermé.
Que se passe-t-il si une coordonnée manque ou n'est pas un nombre ?
Des extrémités non numériques ou infinies ne produisent jamais un point d'intersection inventé.
Pourquoi deux droites se coupent-elles alors que leurs segments non ?
Les droites sont infinies : deux droites non parallèles finissent toujours par se rencontrer. Les segments s'arrêtent à leurs extrémités, et le croisement des droites peut tomber en dehors ; la réponse est alors qu'il n'y a pas de contact.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/geom/segment-intersection \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x1":0,"y1":0,"x2":4,"y2":4,"x3":0,"y3":4,"x4":4,"y4":0}'const res = await fetch("https://api.kit.forhosting.com/geom/segment-intersection", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 4,
"x3": 0,
"y3": 4,
"x4": 4,
"y4": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geom/segment-intersection",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 4,
"x3": 0,
"y3": 4,
"x4": 4,
"y4": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geom/segment-intersection", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x1":0,"y1":0,"x2":4,"y2":4,"x3":0,"y3":4,"x4":4,"y4":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x1":0,"y1":0,"x2":4,"y2":4,"x3":0,"y3":4,"x4":4,"y4":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geom/segment-intersection", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 4,
"x3": 0,
"y3": 4,
"x4": 4,
"y4": 0
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geom.segment_intersection",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Des extrémités manquantes ou non numériques échouent immédiatement avec invalid_input, de sorte que la validation échouée n'est pas facturée.
Ce que signifie l'intersection de segments et en quoi elle diffère des droites infinies
Les élèves veulent un oui ou non numérique avec coordonnées face à un corrigé ; les développeurs, un oracle déterministe pour des tests arête–arête dans les maillages, régions d'interface et validateurs de concours ; les géomètres et assistants CAO veulent un JSON structuré à coller dans des rapports sans réimplémenter l'orientation ou Cramer dans chaque langage. Fournir intersects, kind et des champs de point optionnels en JSON facilite les assertions d'intégration continue, les pipelines plus larges ou les notes.
Comment les extrémités sont validées et comment l'intersection est calculée
Le calcul utilise la forme paramétrique standard : P égale A plus t fois (B moins A) et aussi P égale C plus u fois (D moins C) ; on forme le système deux par deux dont le déterminant est le produit vectoriel bidimensionnel des vecteurs direction, puis on résout t et u. Lorsque le déterminant est clairement non nul et que les deux paramètres tombent dans l'intervalle unitaire fermé, les segments se rencontrent en ce P ; le contact d'extrémité est signalé lorsqu'un paramètre vaut zéro ou un. Lorsque le déterminant s'annule, les droites supports sont parallèles : si les extrémités ne sont pas colinéaires, il n'y a pas d'intersection ; si elles le sont, le moteur vérifie si une extrémité d'un segment gît sur l'autre et, en cas de chevauchement, signale intersects true avec un point partagé représentatif plutôt qu'un intervalle de solutions. Il n'y a pas de troisième segment, ni d'ajustement aux moindres carrés, ni de conversion d'unités des coordonnées ; l'arithmétique suppose un repère cartésien partagé. Envoyez un corps JSON avec les huit champs obligatoires x1, y1, x2, y2, x3, y3, x4 et y4. Chaque champ doit être un nombre fini ; les nombres JSON et les chaînes décimales sont acceptés, et des alias courts comme ax, ay, bx, by, cx, cy, dx et dy se mappent sur les mêmes coordonnées. Le moteur rejette les champs manquants, les chaînes vides, NaN et les infinis avec invalid_input, de sorte que ces appels échoués ne sont pas facturés et n'inventent jamais un faux croisement.
Où les contrôles d'intersection de segments s'insèrent dans l'étude, la conception et le code
Les enseignants peuvent pré-générer des corrigés listant intersects et le point pour des cas propres, d'extrémité et parallèles, et s'appuyer sur invalid_input pour les lignes incomplètes au lieu d'un blanc ou d'un Infinity silencieux. Sur cette page le travail s'exécute entièrement dans votre navigateur ; via l'API chaque consultation réussie coûte $0.002, la validation échouée n'est pas facturée et rien n'est stocké après la réponse. Cette scission—exploration interactive gratuite et API identique payante—correspond au catalogue KIT de niveau A et vous permet de passer d'une démo de classe à un pipeline automatisé sans changer le résultat mathématique.
Cas d'intégration
Fixtures déterministes de géométrie
Les pipelines qui sèment tests unitaires, validateurs de concours et assertions de CI peuvent appeler un oracle pur d'intersection de segments au lieu de réimplémenter des produits vectoriels paramétriques dans chaque langage.
Questions techniques
Les contacts d'extrémité comptent-ils comme intersections ?
Oui. Des segments fermés qui ne partagent qu'un sommet ou se rejoignent en T signalent intersects true avec kind endpoint.