Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

plasma tree algoritam

[es] :: Matematika :: plasma tree algoritam

[ Pregleda: 1256 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Hari Haler

Član broj: 179542
Poruke: 68
62.68.100.*



+1 Profil

icon plasma tree algoritam23.12.2010. u 12:00 - pre 163 meseci
pozdrav,
kolega i ja smo uzeli za temu iz seminarskog vizuelizaciju zvuka. mislili smo otprilike da radimo spektralnu analizu signala, izdvajamo nekoliko dominantnih frekvencija, pridruzimo im odgovarajuce boje i zatim to iscrtavamo u vidu nekog stilizovanog spektrograma. to iscrtavanje smo planirali uraditi slicno ovom:

http://www.chromeexperiments.com/detail/plasmatree/

ali svako "drvce" bi predstavljalo spektralnu komponentu (par njih) i rasli bi simetricno (kao spektralna karakteristika). nakon sto sva izrastu, polako bi se vracala nazad pa zatim ponovo iscrtavala sa novim vrijednostima. izrazenija komponenta - vise drvo. prvih par pokusaja da dobijemo rast kao na gornjem linku su zavrsili neuspjesno. prvo smo mislili da inkrementujemo y, a x variramo po nekom slucajnom obrascu. onda da varijacije radimo sa odredjenim zakasnjenjem, a da grane u medjuvremenu rastu po dodijeljenoj putanji (k u y=kx+n), ali nista od toga ne radi. pa me zanima, zna li neko od vas kakavim algoritmom bi mogli opisati ovaj gore primjer? hvala na pomoci.
svako dobro
 
Odgovor na temu

Hari Haler

Član broj: 179542
Poruke: 68
188.124.195.*



+1 Profil

icon Re: plasma tree algoritam25.12.2010. u 14:24 - pre 163 meseci
problem rijesen ;)
pz
 
Odgovor na temu

Sini82

Član broj: 234605
Poruke: 479
62.101.141.*

Jabber: Sini82@elitesecurity.org


+33 Profil

icon Re: plasma tree algoritam25.12.2010. u 15:01 - pre 163 meseci
Kako ste riješili problem?
 
Odgovor na temu

Hari Haler

Član broj: 179542
Poruke: 68
188.124.208.*



+1 Profil

icon Re: plasma tree algoritam29.12.2010. u 09:29 - pre 162 meseci
prilično jednostavno u stvari. nakon što nacrtamo jedan kug, koordinate svakog sljedećeg računamo tako da na prethodni dodamo vrijednost deltaX i deltaY koje računamo kao cos(alfa)*distanca i sin(alfa)*distanca. ugao alfa računamo kao neki slučajan broj koji uzima vrijednost od 0 do pi/10, tako da nam skretanje ne bi bilo previše oštro. dodali smo i uslov da ukoliko generisani broj bude manji od 0.5 (pošto pi/10 množimo sa slučajno generisanim brojem) ugao bude negativan, a u suprotnom pozitivan. isto tako, nasumično generišemo i vrijeme kada će se desiti skretanje i grananje, a broj grana koje će nastaviti rasti je takođe slučajan broj, ali ograničen na vrijednost od 1-3.
 
Odgovor na temu

Sini82

Član broj: 234605
Poruke: 479
62.101.141.*

Jabber: Sini82@elitesecurity.org


+33 Profil

icon Re: plasma tree algoritam30.12.2010. u 14:04 - pre 162 meseci
Dobra ideja, imam par prijedloga:

1. Distanca bi trebala da se generiše kao neki slučajan broj između dvije pozitivne vrijednosti (iz segmenta[d, d+deltaD]), na slici vidimo da nije uvijek ista.

2. Umjesto uslova da je generisani broj veći ili manji od 0,5 treba uzeti uslov da je veći ili manji od 0,5*(pi/10). Tada su jednake vjerovatnoće da će ugao biti pozitivan, odnosno negativan. Možda da umjesto ugla alfa generišete deltaAlfa pa u proračunima za deltaX i deltaY koristite alfa + deltaAlfa (alfa je ugao prethodne grane u odnosu na horizontalu; za korijen drveta uzeti za ugao alfa pi/2; deltaAlfa je zavisno od generisane slučajne vrijednosti pozitivan, odnosno negativan), umjesto alfa.

3. pi/10=18 stepeni. Na slici mi se čini da je negdje taj ugao i veći.

4. Takođe, na slučajan način, treba generisati grane koje na slici nisu prave linije (imaju i širinu) i iscrtavati krugove samo u "vrhovima" drveta.
 
Odgovor na temu

Hari Haler

Član broj: 179542
Poruke: 68
62.68.100.*



+1 Profil

icon Re: plasma tree algoritam30.12.2010. u 15:27 - pre 162 meseci
sini pozdrav,
hvala na odgovoru i na prijedlozima. zanimljivo da si napisao skoro sve što smo i uradili :) gdje si bio ranije :) distancu smo mislili mijenjati, ali ne da uzimamo slučajan broj već da je smanjujemo kako se prečnik kruga bude smanjivao. isto tako, što prečnik bude manji i vrijednost za koju se umanjuje po koraku će se takođe smanjiti. ugao alfa i računamo kao alfa plus nova generisana slučajna vrijednost za ugao. za korijen drveta smo uzeli pi/2. pi/10 smo uzeli onako, kroz par pokušaja. kad se finalno sredi algoritam za kompletno iscrtavanje onda ćemo podešavati te vrijednosti.
ne znam da li sam te dobro shvatio za grane. kod nas se grane isto iscrtavaju kao i drvo. tako da se i proces grananja odvija slučajno, ali po istom principu kao rast drveta. stablo se dijeli na 1-3 grane, a onda svaka grana na nove 1-3 grane itd.
ako možeš objasniti ovaj dio oko izbora pozitivnog ili negativnog ugla? evo našeg koda:

public double randomAlfa()
{
Random rand = new Random();
return (rand.NextDouble()* Math.PI/10) * ((rand.NextDouble() >0.5)? -1:1);
}

u pitanju je c#.
trenutno imamo problema sa generisanjem slučajnog broja u trenutku kad se desi grananje, pošto u dve instance grane uzme istu vrijednost. planiramo na neki način pored slučajnog broja još generisati i guid pa iz njega izvući neku malu slučajnu vrijednost. i nemam pojma kako da dobijemo ovako lijepe boje kao kod ovog tipa :) pokušavali smo sa transparentnim krugovima, ali to nije to. njegovi su transluentni. imaš li možda neku ideju oko toga? hvala još jednom što si se uključio.
svako dobro

p.s. nemoj gledati samo sliku. klikni na launch experiment i uživaj u predstavi :)
 
Odgovor na temu

Sini82

Član broj: 234605
Poruke: 479
62.101.141.*

Jabber: Sini82@elitesecurity.org


+33 Profil

icon Re: plasma tree algoritam31.12.2010. u 11:42 - pre 162 meseci
Citat:
Hari Haler:
ne znam da li sam te dobro shvatio za grane.


Moraćeš isprogramirati da se debljina grana što se ide dalje od korijena prema vrhovima drveta smanjuje i da su grane predstavljene ne pravim linijama nego na slučajan način generisanim dvodimenzionalnim krivama (krive linije sa širinom). Proporcionalnu smanjivanju debljina grana smanjuju se i poluprečnici krugova na njihovim vrhovima.



Citat:
Hari Haler:
ako možeš objasniti ovaj dio oko izbora pozitivnog ili negativnog ugla?


Odredimo vjerovatnoće sledećih događaja:

A - slučajno generisani broj x je iz poluintervala [0,), tj. za slučajno izabrani broj x iz [0, vrijedi x<;

B - slučajno generisani broj x je iz segmenta [,], tj. za slučajno izabrani broj x iz [0, vrijedi .

i ;

E - izabrani broj je iz segmenta [0, (skup elementarnih događaja).

Ako je realizovan događaj A ugao je pozitivan, ako je realizovan događaj B ugao je negativan. Pošto su vjerovatnoće realizacija događaja A i B iste, iste su i vjerovatnoće da će slučajno generisani uglovi biti pozitivni ili negativni. Da vjerovatnoće nisu iste drvo bi ti u većini slučajeva "naginjalo" na lijevu ili desnu stranu (u tvom slučaju za izbor granice 0,5 na desnu jer je ), ovako je podjednako vjerovatno da će na jednu ili drugu stranu.



Za ovo ostalo pitajte u podforumu za C#, ne mogu vam pomoći, sigurno će neko znati da vam odgovori. Takođe, sve najbolje.



Citat:
Hari Haler:
p.s. nemoj gledati samo sliku. klikni na launch experiment i uživaj u predstavi :)


Uživao sam, srećno.

[Ovu poruku je menjao Sini82 dana 31.12.2010. u 13:02 GMT+1]
 
Odgovor na temu

Sini82

Član broj: 234605
Poruke: 479
62.101.141.*

Jabber: Sini82@elitesecurity.org


+33 Profil

icon Re: plasma tree algoritam31.12.2010. u 13:01 - pre 162 meseci
Ne samo da je , vrijedi . Odatle, za svaki slučajno generisani broj važiće nejednakost , pa će svaki ugao biti negativan. Dobićeš, u većini slučajeva, ne drvo nego žalosnu vrbu. Umjesto 0.5 uzmi (u opštem slučaju ako je donja granica segmenta kao što je ovdje slučaj 0, uzmi polovinu gornje granice istog tog segmenta iz kojeg se generiše slučajan broj; ako generišeš slučajan broj iz segmenta uzmi ).
 
Odgovor na temu

Sini82

Član broj: 234605
Poruke: 479
62.101.141.*

Jabber: Sini82@elitesecurity.org


+33 Profil

icon Re: plasma tree algoritam31.12.2010. u 16:04 - pre 162 meseci
Na ovaj način dobićeš drvo koje nije simetrično. Kada je ugao manji, granaće se nadesno a kada je veći, nalijevo. Najbolje je da generišeš slučajan broj iz skupa {-1,1} i na taj način biraš orijentaciju (za -1 orijentacija ugla je pozitivna a za 1 negativna; primjera radi sam uzeo brojeve 1 i -1). Na taj način orijentacija neće zavisiti od veličine ugla.
 
Odgovor na temu

[es] :: Matematika :: plasma tree algoritam

[ Pregleda: 1256 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.