nemakuphp Posted November 29, 2011 Report Share Posted November 29, 2011 Ir uzdevums iekš C++ - Dotas divu trīsstūru virsotņu koordinātes. Atrast trīsstūru kontūru kopīgos punktus. Kopīgos punktus atrod, viss ir OK, bet problēmas sākas tad, kad trijstūra malas pārklājas. Kā varētu noteikt to, vai dotās trijstūra malas pārklājas? Pašreizējais kods ir šāds - http://paste.php.lv/e665c1555a789a8e359c0514a1140928?lang=cpp double k = a1x/a2x; if (b1y/b2y == k && c1/c2 == k) { cout << tr1i + 1 << ". trijstūra mala (" << x1 << ", " << y1 <<"),(" << x2 << ", " << y2 << ") krusto " << tr2i + 1 << ".trijstūra malu (" << x3 << ", " << y3 << "),(" << x4 << ", " << y4 << ") neierobežotā skaitā punktu (malas pārklājas)" << endl; } Problēma ir šeit, jo pārbaudīšana ar koeficientu nav pareiza, var rasties nepareizi rezultāti. Tātad, kāds būtu labākais veids, lai noteiktu, vai malas pārklājas. Nav jāzin kādā intervālā pārklājas, galvenais, vai vispār pārklājas. Ceru, ka spēsiet palīdzēt, sliktākajā gadījumā ar linku, kur ir kaut kas vairāk par šo. Link to comment Share on other sites More sharing options...
waplet Posted November 30, 2011 Report Share Posted November 30, 2011 (edited) Nu kā a + b > c a+c > b b+c > a Divām trījstūra malām jābūt lielākam par trešo.. , ja ir vienādas tad tas ir nogrieznies, un ja mazāka, tad tas nemaz nav trijstūris.! Vai arī ir domāti krustpunkti tiem nogriežņiem? Edited November 30, 2011 by waplet Link to comment Share on other sites More sharing options...
nemakuphp Posted November 30, 2011 Author Report Share Posted November 30, 2011 Es domāju, ka biju visu pietiekami skaidri izklāstījis, bet tomēr kāds nesaprot. Kopumā ir izdevies izveidot kodu, kas strādā uz man vēlamiem ievaddatiem, būs ok pagaidām, ja noveiksies. Jo nu reāli pārējiem, cik skatījos, tie uzdevumi bija normāli izpildāmi bez kaut kādām pro zināšanām ģeometrijā. Link to comment Share on other sites More sharing options...
draugz Posted November 30, 2011 Report Share Posted November 30, 2011 Nekas sarežģīts īsti nav, pameklē lineārā algebra nogriežņi plaknē vai kas tāds.. bet šķiet tev varētu noderēt šis te: http://en.wikipedia.org/wiki/Line-line_intersection Tur pat ir formula kā aprēķināt divu nogrižņu krustpunktu, tiesa jāpapēta, ko tas algoritms atgriež ja šie nogriežņi nemaz nekrustojas... Link to comment Share on other sites More sharing options...
Kavacky Posted November 30, 2011 Report Share Posted November 30, 2011 Taišņu vienādojums normālformā sakrītošām būs vienāds. Atliek pārbaudīt, vai nogriežņi pārklājas. Link to comment Share on other sites More sharing options...
nemakuphp Posted November 30, 2011 Author Report Share Posted November 30, 2011 (edited) Krustpunktiem izmantošu draugz doto variantu, par pārklāšanos kaut kādu itkā Google beigās iedeva, laikam gan kārtīgi nestrādāja, bet ar maniem testa datiem strādā. Izskatās tas kaut kā šādi - http://pastebin.com/0ytPQueb Edited November 30, 2011 by nemakuphp Link to comment Share on other sites More sharing options...
Recommended Posts