grafika u VB-u presek linija
Prikazujem rezultate 1 do 20 od 20

Tema: grafika u VB-u presek linija

  1. #1
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano grafika u VB-u presek linija

    treba mi kod za nesto tipa :
    imam nacrtanu sliku crno na belo linije i sada hocu da kada misem kliknem na jednu tacku na slici, pa na drugu da mi povuce liniju izmedju kapis?
    e sad za*eban(ne znam ni ono prvo) ops: deo:
    linija koju sam ja povukao misem ce preseci neku liniju na slici u nekoj tacki npr. A.
    meni trebaju koordinate tacke A i tacke B (linija povucena misem sece vise linija na slici)itd...
    Znam da je pitanje komplikovano ali mi treba odgovor! :x



  2. #2
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    to je matematicko pitanje, ali sta je tu je.
    ne znam VB, ali evo u delphi-ju...mislim da nije problem prevesti:

    TLine je dat kao niz dva TPoint-a (pocetak i kraj)

    function linesintersect(line1,line2:TLine):boolean;

    procedure getequation(line:TLine;var slope,intercept:single);
    begin
    If line[1].x<>line[2].x
    then slope:=(line[2].y-line[1].y)/ (line[2].x-line[1].x)
    else slope:=1E10;
    intercept:=line[1].y-slope*line[1].x;
    end;

    var
    m1,m2,b1,b2:single;
    x:integer;
    begin
    result:=false;

    getequation(line1,m1,b1);
    getequation(line2,m2,b2);

    if m1<>m2 then
    begin
    x:=round((b2-b1)/(m1-m2));
    If (x>=min(line1[1].x,line1[2].x))
    and (x<=max(line1[1].x,line1[2].x))
    and (x>=min(line2[1].x,line2[2].x))
    and (x<=max(line2[1].x,line2[2].x))
    then result:=true;
    end;
    end;

  3. #3
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    Lose se ja snalazim u Delphi-ju tako da ne mogu ni da "prevedem" u VB. ops:
    jos neko? :?

  4. #4
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    pogledaj na google malo za matematicko resenje, sigurno ima milion stranica za to.
    u grubim crtama:
    izracunas jednacine pravih koje su date kroz dve tacke u obliku y = kx + n.
    onda ako sistem y1=k1x+n1 y2=k2x+n2 ima resenja tada se seku i resenje sistema je ta tacka, inace se ne seku.
    ukucaj na google line intersect i naci ces

    PS ne moze sve na gotovo, zar ne

  5. #5
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    @stormbringer THANX

    problem je u tome sto na crtezu gde su i krive linije treba naci presek

  6. #6
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    e sad...ako imas jednacine tih krivih onda resavaj sistem, ako ne...mozda ako su ti date kao skup tacaka, pa da prodjes kroz skupove tacaka i ako naidjes na neke dve iste onda se seku...ne znam trece

  7. #7
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    Citat Original postavio stormbringer
    e sad...ako imas jednacine tih krivih onda resavaj sistem, ako ne...mozda ako su ti date kao skup tacaka, pa da prodjes kroz skupove tacaka i ako naidjes na neke dve iste onda se seku...ne znam trece
    what???
    treba to uraditi! Mislim moze, ali treba vremena a i...
    OVERFLOW

  8. #8
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    cekaj, cekaj...kako su tebi date te prave krive i sta ja znam sta sve? ako su date jednacinama onda resavaj sisteme.
    a ako je slika vec nacrtana...ima da se iskozis da odredis koja ti je koja, pa je onda jos teze....
    pomozi mi da pokusam da ti pomognem ovako je prilicno neodredjeno sta konkretno imas a sta hoces da dobijes

  9. #9
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    Pa prvo sam mislio da stavim sliku ali sam onda i sam skapirao da ce biti pretesko, pa onda reko` da stavim sliku ali da sve linije budu oznacene jednacinama ali problem je sto slika treba da bude previse precizna tako da ima kosa da mi spadne sa glave dok ne nadjem resenje. :shock:
    Tako da cu verovatno cu da batalim celu stvar :?

  10. #10
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    a sta uopste radis?

  11. #11
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    imam na slici nacrtane izohipse i kada "user" klikne tu i jos negde(tamo) prog. povuce liniju izmedju i prikaze presek planine iz profila (kuda je prosla linija)

  12. #12
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    aha, pa onda i nije neki problem valjda
    pretpostavljam da se posle prebacis u pogled sa strane?
    ja bi to ovako uradio:
    posto tih izohipsi nema mnogo svaku bi stavio u poseban layer, tj slicku (posto ne mogu bas da se predstave matematicki lepo) i onda bi ih iscrtavao tranaparentno jednu preko druge.
    kad povuces pravu onda za svaki layer ides od 0 to duzina_slike i ispitujes da li je tackica crna i na pravoj i na krivoj (ako jeste eto preseka). onda na rezultatu dodas tacku na onoj visini koju ta izohipsa predstavlja a na X poziciji na kojoj je presek. kad nadjes sve te tacke samo ih ispovezi poligonalnom linijom

  13. #13
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    Citat Original postavio stormbringer
    pretpostavljam da se posle prebacis u pogled sa strane?
    DA
    Citat Original postavio stormbringer
    ja bi to ovako uradio:
    posto tih izohipsi nema mnogo svaku bi stavio u poseban layer, tj slicku (posto ne mogu bas da se predstave matematicki lepo) i onda bi ih iscrtavao tranaparentno jednu preko druge.
    ne kapiram!!!

    ostatak si 100% pogodio kako sam mislio da pravim 8)

  14. #14
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    evo jos pametnijeg resenja: 8)
    uzmes slicku koja predstavlja mapu (boja oznacava visinu, od zelene ka braon). onda tu sliku konvertujes u matricu koja je ista kao dimenzije slike s tim sto umesto boje na mesto i,j stoji visina koja odgovara boji te tacke na mapi. kad dobijes takvu matricu mozes da crtas i izohipse i pogled sa strane i 3d pogled i sta ti god padne na pamet...i to bez da trazis presek! samo ti treba onda j-na prave kroz dve tacke. onda za svaku tacku sa te prave ti iscrtas njenu visinu (koju vec imas u matrici)...tako je posao jedno 10x laksi

  15. #15
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    Citat Original postavio stormbringer
    onda tu sliku konvertujes u matricu
    pa u tome je i problem

  16. #16
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    kako problem?
    napravi funkciju koja za proizvoljnu boju vraca visinu koju ona predstavlja. ti pre-definisi recimo 20ak boja i visina koja im odgovara. u funkciji na osnovu toga racunaj kolika je visina neke proizvoljne boje.

  17. #17
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    Joj je8em ti sunce pa ja uopste nisam razmisljao. TO JE TO.
    Hvala ti!!!

  18. #18
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    eto vidis
    javi kad uradis nesto...cisto da vidim

  19. #19
    Aktivan član
    Učlanjen
    25.09.2004.
    Pol
    muški
    Lokacija
    C:\Windows\system32\&$*)#!@|
    Poruke
    1.031
    Reputaciona moć
    59

    Podrazumevano

    Mozda sam ja malo pritup, a mozda i nisam, u svakom slucaju nemoj se ljutis na glupo pitanje:
    Napravih Picture1 u koji ce korisnik da unosi boje, znas ono (CurrentX, Y ;vbBlue, bla bla) e sad ne mogu ja da iscitam svuda te boje. Ako je slika 600 x 600, onda moram da povucem liniju po horizontali = 300 i odatle da vucem boje, pa za svaku visinu itt.
    Ali kako da izvucem boje iz preseka (dajte mi CODE)???
    I jos gluplje pitanje (nisam pipao grafiku u programiranju): Kako da povucem liniju izmedju 2 tacke ops: ?

  20. #20
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    recimo da hoces liniju izmedju Start i ToPoint...
    Prvo Image1.Canvas.MoveTo(Start.X, Start.Y) onda image1.Canvas.LineTo(ToPoint.X, ToPoint.Y)

    a da malo analiziras liniju:
    k := (ToPoint.Y - Start.Y) / (ToPoint.X - Start.X);
    n := Start.Y - k * Start.X;
    to su koeficijenti za j-nu y=k*x+n
    onda ides ovako (pod uslovom da je Start levo od ToPoint, inace izvrni)
    for x := 0 to Image1.Width do
    //tacka na pravoj koja odgovara ovom X-u je (X, Round(k*X+n).
    tako obidjes celu pravu i dobijes visine svih tacaka sa nje. onda lepo to nacrtas na novu sliku i dobijes sliku iz profila
    npr
    for x := 0 to Image1.Width do
    LineTo(X, Visina(X, Round(k*X+n)))

Slične teme

  1. Linija
    Autor jamira u forumu Arhiva
    Odgovora: 110
    Poslednja poruka: 09.02.2009., 14:01
  2. Presek stanja... 2006, januar do danas
    Autor McMillan u forumu Arhiva
    Odgovora: 84
    Poslednja poruka: 22.08.2006., 03:31
  3. ZLATNI PRESEK
    Autor bobos u forumu Prirodne nauke
    Odgovora: 6
    Poslednja poruka: 25.01.2006., 12:05
  4. Zlatni presek
    Autor Truman u forumu Likovna umetnost
    Odgovora: 4
    Poslednja poruka: 06.06.2004., 20:34
  5. Zlatni presek
    Autor la la la u forumu Prirodne nauke
    Odgovora: 13
    Poslednja poruka: 29.03.2004., 16:02

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •