Intersectarea segmentelor, algoritmi geometrici, programmirovanie-dla-shhool

Lecția din seria "Algoritmi geometriali"

Bună ziua, draga cititor. Vom scrie alte trei funcții noi.

Funcția LinesCross () va determina dacă se intersectează două segmente. În acesta, aranjamentul relativ al segmentelor este determinat prin intermediul produselor vectoriale. Pentru a calcula produsele vectoriale, vom scrie funcția - VektorMulti ().







Funcția RealLess () va fi utilizată pentru implementarea operației de comparație "<” (строго меньше) для вещественных чисел.

Zadacha1. Două segmente sunt date de coordonatele lor. Creați un program care determină dacă aceste segmente se intersectează. nu găsind punctul de intersecție.

Soluția
Lăsați două intervale. Primul este dat de puncte. Al doilea este dat de puncte.

Intersectarea segmentelor, algoritmi geometrici, programmirovanie-dla-shhool

Aranjamentul reciproc al segmentelor poate fi verificat cu ajutorul produselor vectoriale:


Luați în considerare segmentul u al punctului u.







Intersectarea segmentelor, algoritmi geometrici, programmirovanie-dla-shhool
Punctul se află în partea stângă a liniei, deoarece produsul vector> 0, deoarece vectorii sunt orientați pozitiv.

Punctul este situat în partea dreaptă a liniei drepte, pentru care produsul vectorial <0, так как векторы отрицательно ориентированы.

Pentru ca punctele u, se află pe laturile opuse ale liniei, este suficientă condiția <0 ( векторные произведения имели противоположные знаки).

Un raționament similar poate fi efectuat pentru un segment u de puncte.

Deci, dacă, atunci segmentele se intersectează.

Pentru a testa această condiție, utilizați funcția LinesCross () și pentru a calcula produse vectoriale - funcția VektorMulti ().

Produsul vector al doi vectori se calculează cu formula:

ax, ay sunt coordonatele primului vector,

bx, prin coordonatele celui de-al doilea vector.

Rezultatele programului:

Introduceți coordonatele segmentelor: -1 1 2 2,52 2 1 -1 3
Da.

Am scris un program care determină dacă segmentele definite de coordonatele lor se intersectează.

În următoarea lecție, vom compune un algoritm care ne va ajuta să determinăm dacă punctul se află în interiorul triunghiului.

Dragă cititor. Ați întâlnit deja câteva lecții din seria "Algoritmi geometrizi". Este scris totul deschis? Voi fi foarte recunoscător dacă îți lași feedbackul asupra acestor lecții. Poate că ceva trebuie rezolvat în continuare.

Cu sinceritate, Vera Domnul.

Trimiteți-vă prietenilor







Trimiteți-le prietenilor: