Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem geometryczny w mySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
kitol
Mam tabelę zawierającą koordynaty końców odcinków w przesrzeni 2D (X1,Y1,X2,Y2) Potrzebuję zapytania które zwróci mi współrzędne przecięcia (lu
 NULL gdy odcinki się nie przecinają) każdego z odcinków z zadanym w zapytaniu o
cinkiem. Kombinowałem ze wzorem na punkt przecięcia prostych, ale to zbyt kompli
uje zapytanie a całość ma szybko działać. Czy ktoś już rozwiązywał podobny problem?
nevt
to raczej zbyt skomplikowane zadanie dla SQL - w praktyce da się napisać ale będzie wybitnie niewydajne. wg mnie właściwym podejściem do problemu, to wyłowienie z bazy "podejrzanych" odcinków spełniających jakieś proste kryterium (np. kryterium prostokątów, to znaczy, że warukniem koniecznym - ale nie wystarczającym - przecinania się dwóch odcinków jest nakładanie się na siebie obszarów prostokątów których przekątnymi są badane odcinki). właściwą obróbkę tak przesianych danych zrobiłbym po stronie np. PHP czy w jakimkolwiek narzędziu wspierającym zaawansowane liczenie (choćby excel...) a pytanko jest wtedy stosunkowo proste, zakładając, że badamy odcinek AB o współrzędnych końców Ax, Ay i Bx, By:
  1. SELECT * FROM odcinki WHERE ((Ax BETWEEN X1 AND X2) OR (Bx BETWEEN X1 AND X2)) AND ((Ay BETWEEN Y1 AND Y2) OR (BY BETWEEN Y1 AND Y2));


powodzenia smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.