Skocz do zawartości

Ranking


Popularna zawartość

Wyświetla najczęściej polubioną zawartość w 04/29/18 uwzględniając wszystkie działy

  1. 1 punkt
    Edit: Dopiero przeczytalem że nie miało być z lini... no trudno na darmo się rozpisałem. I tak zostawię tutaj dla potomnych. Edit2: Chyba że konkretnie chodzi Ci o nie RYSOWANIE lini oraz nie używanie wbudowanych funkcji kolizyjnych, wtedy poniższe jest dla Ciebie. Edit3: Dobra koniec tych editów Nie wiem czy licencja którą wybrałem jest dobra, chodzi o to żeby było za darmo do użycie również komercyjnego bez potrzeby podawania autora w creditsach czy jakichkolwiek plikach. Edit4: Walić napisałem własną licencję. Daj Lajka bo się napracowałem kiedyś Sam tego potrzebowałem do rayguna do mojego projektu, więc zaadoptowałem takie coś, licencja kodu powiedzmy GNU General Public License, więc rób co chcesz z tym. ///lines_intersect(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2) // 90% of code adapted from C script by Gavin @ stackoverflow, //uses algorithm from "Tricks of the Windows Game Programming Gurus" //by Andre LaMothe // License: Free to view, modify and redistribute, both commercially // and for free without need to acknowledge original creator, as long // as original creator is credited within this code. It is therefore // not permitted to remove this comment attributing original creator. // This script is provided as-is with no warranty. Neither creator, // nor any person modifying this script takes any responsibility for // any damage caused by this script. // Original version by Przemek "LeD" Liedtke var ax1=argument0,ay1=argument1,ax2=argument2,ay2=argument3, bx1=argument4,by1=argument5,bx2=argument6,by2=argument7; var _ret; //Returned array _ret[0] = 0;//1 for found _ret[1] = 0;//x (if [0]=1) _ret[2] = 0;//y (if [0]=1) var s1_x,s1_y,s2_x,s2_y; s1_x = ax2 - ax1; s1_y = ay2 - ay1; s2_x = bx2 - bx1; s2_y = by2 - by1; var s,t,sp; sp = (-s2_x * s1_y) + (s1_x * s2_y); if sp=0 return _ret; s = ((-s1_y * (ax1 - bx1)) + (s1_x * (ay1 - by1))) / sp; t = (( s2_x * (ay1 - by1)) - (s2_y * (ax1 - bx1))) / sp; if (s >= 0 && s <= 1 && t >= 0 && t <= 1){ // Collision detected _ret[0] = 1; _ret[1] = ax1 + (t * s1_x); _ret[2] = ay1 + (t * s1_y); } return _ret; Zwraca: Tablicę jednowymiarową z trzeba pozycjami: [0]: Czy znalazło punkt styczności [1]: X [2]: Y Smacznego. A i zastosowanie: Użyc lines_intersect na każdym boku, np. tak: //_col to id obiektu ktory sprawdzamy. x1 = _col.bbox_left-1; x2 = _col.bbox_right+1; y1 = _col.bbox_top-1; y2 = _col.bbox_bottom+1; w1 = lines_intersect(x,y,xx,yy,x1,y1,x1,y2); //Left w2 = lines_intersect(x,y,xx,yy,x2,y1,x2,y2);; //Right w3 = lines_intersect(x,y,xx,yy,x1,y2,x2,y2); //Bottom w4 = lines_intersect(x,y,xx,yy,x1,y1,x2,y1); //Top Musisz każdy bok powiększyć o 1 pixel bo inaczej na IDEALNEJ styczności z rogiem nie wykryje go. Nie do końca rozumiem czemu.
  2. 1 punkt
    Okey po analizie wszystko ogarnąłem, dzięki za wytłumaczenie
  3. 1 punkt
    zamówiłem sobie terminal żeby postawić chmurę w domu - jak się okazało ma być już kolejnego dnia (dzisiaj), a ja liczyłem na jakiś tydzień żeby sobie ogarnąć cokolwiek na DVI. ci cholerni szybcy kurierzy.
×