<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-33122967</id><updated>2011-04-21T21:29:17.350+02:00</updated><title type='text'>Wachu - DevLog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33122967.post-1289627401508934993</id><published>2009-01-11T11:40:00.001+01:00</published><updated>2009-01-11T11:40:50.287+01:00</updated><title type='text'>Tutaj mieszkam :)</title><content type='html'>&lt;div class="wlWriterEditableSmartContent" id="scid:84E294D0-71C9-4bd0-A0FE-95764E0368D9:a9b3f580-6a76-40eb-9917-d605c54d13ec" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;a href="http://maps.live.com/default.aspx?v=2&amp;amp;cp=52.21778~20.97808&amp;amp;lvl=17&amp;amp;style=r&amp;amp;mkt=en-us&amp;amp;FORM=LLWR" id="map-79f0ccb6-9e63-47e1-8f2b-f2658021d7d3" alt="Kliknij, aby wyświetlić tę mapę w witrynie Live.com" title="Kliknij, aby wyświetlić tę mapę w witrynie Live.com"&gt;&lt;img src="http://lh3.ggpht.com/_p2nkD3FZad8/SWnMsa7g4wI/AAAAAAAAASE/HROT9C8xKGU/map-9764b21a288d.jpg?imgmax=800" width="320" height="240" alt="Obraz mapy"&gt;&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-1289627401508934993?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/1289627401508934993/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=1289627401508934993&amp;isPopup=true' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/1289627401508934993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/1289627401508934993'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2009/01/tutaj-mieszkam.html' title='Tutaj mieszkam :)'/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_p2nkD3FZad8/SWnMsa7g4wI/AAAAAAAAASE/HROT9C8xKGU/s72-c/map-9764b21a288d.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-5261550940411041175</id><published>2007-03-04T18:51:00.000+01:00</published><updated>2008-11-13T04:06:55.815+01:00</updated><title type='text'></title><content type='html'>Witam, dzisiaj przedstawie rozwiazanie problemu testowania kolizji obb za pomoca konstrukcji 3-ciej metryki. Nasz rysunek pomocniczy wyglada w tak:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_p2nkD3FZad8/ResUXQ0MB4I/AAAAAAAAAAM/traLxWriyWM/s1600-h/obb_metric.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_p2nkD3FZad8/ResUXQ0MB4I/AAAAAAAAAAM/traLxWriyWM/s320/obb_metric.jpg" alt="" id="BLOGGER_PHOTO_ID_5038142998027437954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Metryki d1, d2 przedstawiaja przykladowe kule w metrykach opisujacych obb. Metryka d3 jest tworzona na podstawie dwoch poprzednich. Na rysunku na szaro sa zaznaczone odpowiednio metryki d1' i d2' czyli lekko zmodyfikowane metryki d1 i d2.  Metryka d3 powstaje przez maximum z metryk d1' i d2', a zostaje ona wyznaczona przez krzywa ktora zakresla srodek obb w momencie stykania sie z drugim obb ( konsekwencja pomyslu ze jeden obb powiekszamy, a drugi zmniejszamy do punktu - czyli srodka ). Problem jaki sie pojawia mozna latwo odgadnac z rysunku: o jaki promien powinnismy rozszerzyc kazda z metryk, aby otrzymac metryke d3? Aby odpowiedziec na to pytanie musimy zdefiniowac metryke dla prostokata:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;max{ |(c1.x - x) cos(-α) - (c1.x - x) sin(-α)| , |(c1.y - y) sin(-α) + (c1.y - y)cos(-α)|  * f}&lt;/li&gt;&lt;/ul&gt;Jak widac jest to standardowa metryka, tyle ze dodalismy wspolczynnik f wyrazony jako stosunek szerokosci prostokata do jego wysokosci ( czyli promien jest jego szerokoscia, a r / f wysokoscia ). Teraz bierzemy dwa wierzcholki obb podstawiamy ich wspolrzedne do metryki drugiego obb ( wzgledem srodka pierwszego obb) obliczamy jego odleglosc po x i po y, bierzemy max z x'ow i max z y'kow. Obliczamy wspolczynnik proporcjonalnosci dla nowych metryk d1' i d2'. Promienie obb powiekszamy o max z x'ow i testujemy czy srodek jednego obb nalezy do kuli w metryce d3.&lt;br /&gt;&lt;br /&gt;Testowy program i kod: &lt;a href="http://www.ex_xerox.republika.pl/test.rar"&gt;http://www.ex_xerox.republika.pl/test.rar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-5261550940411041175?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/5261550940411041175/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=5261550940411041175&amp;isPopup=true' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/5261550940411041175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/5261550940411041175'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2007/03/witam-dzisiaj-przedstawie-rozwiazanie.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_p2nkD3FZad8/ResUXQ0MB4I/AAAAAAAAAAM/traLxWriyWM/s72-c/obb_metric.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-2648338965582353065</id><published>2007-02-24T19:12:00.000+01:00</published><updated>2007-02-24T19:16:20.610+01:00</updated><title type='text'></title><content type='html'>Chcialbym przedstawic rozwiniecie sposobu na wykrycie kolizji metoda rozwiazania ukladu rownan:&lt;br /&gt;max{ |(c1.x - x) cos(-α) - (c1.x - x) sin(-α)| , |(c1.y - y) sin(-α) + (c1.y - y)cos(-α)| } = r1&lt;br /&gt;max{ |(c2.x - x) cos(-β) - (c2.x - x) sin(-β)| , |(c2.y - y) sin(-β) + (c2.y - y)cos(-β)| } = r2&lt;br /&gt;&lt;br /&gt;Jak widac rozwiazanie tego ukladu nie jest proste(wiele przypadkow). Najlepszym sposobem byloby tylko okreslenie czy uklad ma rozwiazanie.&lt;br /&gt;&lt;br /&gt;OBB mozna przedstawic rowniez za pomoca innej metryki:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    d(a, b) = |(a.x - b.x) cos(-φ-π/4) - (a.x - b.x) sin(-φ-π/4)| + |(a.y - b.y) sin(-φ-π/4) + (a.y - b.y)cos(-φ-π/4)|&lt;/li&gt;&lt;/ul&gt;Nie jestem przekonany czy to prostszy sposob :)&lt;br /&gt;&lt;br /&gt;Przedstawione tutaj metody maja jedna wspolna wade: nie poprawiaja zlozonosci obliczeniowej w stosunku do najprostrzego podejscia wykrywania kolizji obb(policzenie rownan prostych przechodzacych przez wierzcholki obb i rozwiazanie ukladow rownan). Jedyna zaleta przedstawionej metody jest taka, ze w ogole nie trzeba znac pozycji wierzchokow.&lt;br /&gt;&lt;br /&gt;Jesli ta metoda bedzie w przyszlosci przezemnie rozwijana to pewnie tylko w kierunku szacowania ilosci rozwiazan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-2648338965582353065?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/2648338965582353065/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=2648338965582353065&amp;isPopup=true' title='Komentarze (6)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/2648338965582353065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/2648338965582353065'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2007/02/chcialbym-przedstawic-rozwiniecie.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-116038715432123004</id><published>2006-10-09T11:26:00.000+02:00</published><updated>2007-02-24T11:28:04.717+01:00</updated><title type='text'></title><content type='html'>Witam po dluzszej przerwie! Ostatnio mowilem o zastosowaniu przestrzeni metrycznych w wykrywaniu kolizji obb - obb.&lt;br /&gt;&lt;br /&gt;Wynikiem tych rozwazan jest maly programik prezentujacy dzialanie tych kolizji w prkatyce... wynik jest daleki od idealu, bo nie dokladny.  Na lepsza wersje tego programu + zrodla bedzie trzeba jeszcze poczekac. Test pokazuje za to ze samo wykrycie czy jakis punkt nalezy do obb czy nie, dziala poprawnie i jest bardzo prosty w implementacji.&lt;br /&gt;&lt;br /&gt;Tymczasem link do programu + zrodla: &lt;a href="http://www.wachu.i365.pl/obb_test.rar"&gt;www.wachu.i365.pl/obb_test.rar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Plany na przyszlosc sa nastepujace, tzn. mozliwe drogi rozwoju:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;trzeba znalesc 3 metryke laczaca te 2 w ktorej bedzie mozna testowac kolizje obb&lt;/li&gt;&lt;li&gt;mozna sprobowac rozwiazac uklad rownan: poszukac punktow dla ktorych odleglosc od jednej i drugiej kulki sa odpowiednio r1 i r2&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-116038715432123004?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/116038715432123004/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=116038715432123004&amp;isPopup=true' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/116038715432123004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/116038715432123004'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2006/10/witam-po-dluzszej-przerwie-ostatnio.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-115661826091661212</id><published>2006-08-26T20:25:00.001+02:00</published><updated>2006-09-20T16:39:15.963+02:00</updated><title type='text'></title><content type='html'>Czesc, dzisiaj bedzie kolejna czesc zastosowania przestrzeni metrycznych. Wczoraj przeprowadzilem krotka dyskusje na ten temat z moim kolega aod'em i doszlismy do wniosku ze warto rozwinac ten temat. To co tutaj dzisiaj przedstawie nie zostalo przezemnie udowodnione i raczej nalezy to traktowac jako ciekawostke.&lt;br /&gt;&lt;br /&gt;Jak mowilem ostatnio przy odpowiednim zdefiniowaniu metryki moze ona sie przydac do wielu roznych rzeczy. Zacznijmy od wprowadzenia definicji kuli:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;K(p, r) = { x: d(p, x) &lt; r }&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; Jak widac jest to zbior punktow oddalonych od punktu p o promien r w metryce d. Wiemy rowniez ze jesli zmienimy metryke kula wcale nie musi byc okragla a na przyklad moze byc kwadratem.&lt;br /&gt;&lt;br /&gt;Skoro tak to wpadlem na pomysl na nowe podejscie do rozwiazanie problemu kolizji dwoch obb (oriented bounding box) .&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3974/3632/1600/oob_collision.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3974/3632/320/oob_collision.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;Kazdy OBB mozna przedstawic za pomoca kata obrotu, pozycji i promienia (dzisial bede mowil tylko o kwadratach). Teraz pojawia sie problem jak wygladalaby metryka w ktorej kula moglaby wygladac jak dowolny obb. Zmodyfikujmy troche metryke maksimum (zalozmy srodek w punkcie a i kat obrotu &lt;span class="texhtml"&gt;φ&lt;/span&gt;):&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;d(a, b) = max{ |(a.x - b.x) cos&lt;span class="texhtml"&gt;(-φ)&lt;/span&gt; - (a.x - b.x) sin&lt;span class="texhtml"&gt;(-φ)&lt;/span&gt;&lt;span class="texhtml"&gt;| , &lt;/span&gt;&lt;br /&gt;|(a.y - b.y) sin&lt;span class="texhtml"&gt;(-φ)&lt;/span&gt; + (a.y - b.y)cos&lt;span class="texhtml"&gt;(-φ)&lt;/span&gt;| }&lt;/li&gt;  &lt;/ul&gt; Kolejny problem jaki sie pojawia to taki ze skoro mamy jedna metryke to narazie mozemy testowac kolizje tylko z obiektami ktore maja ta sama metryke.&lt;br /&gt;&lt;br /&gt;I ten punkt musi byc jeszcze dopracowany, bo nie znam odpowiedzi na pytanie jak sprawdzac przeciecia kul w roznych metrykach.&lt;br /&gt;&lt;br /&gt;To o czym tutaj powiedzialem to tylko moje domysly i pewne wyczucie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-115661826091661212?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/115661826091661212/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=115661826091661212&amp;isPopup=true' title='Komentarze (15)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115661826091661212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115661826091661212'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2006/08/czesc-dzisiaj-bedzie-kolejna-czesc_26.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-115652842793157194</id><published>2006-08-25T19:17:00.000+02:00</published><updated>2006-08-25T20:40:40.550+02:00</updated><title type='text'></title><content type='html'>Witam ponownie, tak jak powiedzialem ostatnio dzisiaj bedzie o &lt;a href="http://pl.wikipedia.org/wiki/Liczby_zespolone"&gt;liczabach zespolonych&lt;/a&gt;. Pomysl na napisanie kilku slow na ten temat podsnal mi moj kolega. Do rzeczy...&lt;br /&gt;&lt;br /&gt;Za pomoca liczb zespolonych mozna w bardzo latwy sposob przedstawic obrot punktu wokol osi o podany kat. Wikipedia mowi nawet ze liczby zespolone mozna traktowac jak szczegolny przypadek kwaternionow. Zbadalem troche jak takie obroty mialyby wygladac i oto rezultaty.&lt;br /&gt;&lt;br /&gt;Kazda liczbe zespolona najczesciej przedstawia sie w postaci: z = a + ib. Gdzie ReZ = a, ImZ = b (czesc rzeczywista i czesc urojona). Liczby rzeczywiste zawieraja sie w zbiorze liczb zespolonych i wystepuja w takiej postaci: a + i0.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3974/3632/1600/complex.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3974/3632/320/complex.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Wprowadzmy teraz kilka oznaczen i definicji.&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;sprzezenie liczby z = a - ib&lt;/li&gt;   &lt;li&gt;ArgZ mozemy interpretowac jako kat pomiedzy wektorem (a, b) i prosta OX&lt;/li&gt;&lt;li&gt;modul liczby z oznaczamy przez |z| = sqrt( a&lt;sup&gt;2&lt;/sup&gt; + b&lt;sup&gt;2&lt;/sup&gt; )&lt;/li&gt;  &lt;/ul&gt;Liczbe zespolona mozna przedstawic w postaci trygonometrycznej:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;span class="texhtml"&gt;&lt;i&gt;z&lt;/i&gt; = | &lt;i&gt;z&lt;/i&gt; | ( cos φ + &lt;i&gt;i&lt;/i&gt;sin φ )&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; Mnozenie liczb zespolonych wyraza sie wzorem (postac trygonometryczna):&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;span class="texhtml"&gt;&lt;i&gt;z1 * z2&lt;/i&gt; = | &lt;i&gt;z1&lt;/i&gt; || z2 | ( cos (φ1 + &lt;/span&gt;&lt;span class="texhtml"&gt;φ2&lt;/span&gt;&lt;span class="texhtml"&gt;) + &lt;i&gt;i&lt;/i&gt;sin &lt;/span&gt;&lt;span class="texhtml"&gt;(φ1 + &lt;/span&gt;&lt;span class="texhtml"&gt;φ2&lt;/span&gt;&lt;span class="texhtml"&gt;)&lt;/span&gt;&lt;span class="texhtml"&gt; )&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span class="texhtml"&gt;φ1, &lt;/span&gt;&lt;span class="texhtml"&gt;&lt;/span&gt;&lt;span class="texhtml"&gt;φ2 - sa to kolejno Arg z1 i Arg z2&lt;/span&gt;&lt;span class="texhtml"&gt;&lt;/span&gt;&lt;span class="texhtml"&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Teraz mozemy przejsc do liczenia obrotow. Jak widac ze wzoru na mnozenie liczb zespolonych w postaci trygonometrycznej jesli modul jednej z liczb jest rowny 1 to wynikiem bedzie "obrot punktu" o kat &lt;span class="texhtml"&gt;φ (bez zmieniania "odleglosci tego punktu od osi obrotu").&lt;br /&gt;&lt;br /&gt;Teraz &lt;/span&gt;pojawia sie problem jak obrocic jakis punkt znajac tylko kat o jaki chcemy go obrocic i jego pozycje? Wystarczy odpowiednio przeksztalcic ponizsze wzory:&lt;br /&gt;&lt;br /&gt;cos&lt;span class="texhtml"&gt;φ = a / |z| &lt;/span&gt;&lt;br /&gt;&lt;span class="texhtml"&gt;&lt;/span&gt;sin&lt;span class="texhtml"&gt;φ = b / |z|&lt;br /&gt;&lt;br /&gt;Mamy wiec wszystkie dane do wzoru na mnozenie liczb zespolonych w postaci trygonometrycznej. Jest jednak jeszcze jeden sposob na pomnozenie dwoch liczb zespolonych, bardziej tradycyjny:&lt;br /&gt;&lt;br /&gt;(a, b) * (c, d) = (ac - bd, ad + bc)&lt;br /&gt;&lt;br /&gt;przeksztalcamy wzory:&lt;br /&gt;&lt;br /&gt;a = |z|cos&lt;/span&gt;&lt;span class="texhtml"&gt;φ&lt;br /&gt;&lt;/span&gt;&lt;span class="texhtml"&gt;b = |z|sin&lt;/span&gt;&lt;span class="texhtml"&gt;φ&lt;br /&gt;&lt;br /&gt;i podstawiamy spowrotem do wzoru na mnozenie:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="texhtml"&gt;(a, b) * (&lt;/span&gt;&lt;span class="texhtml"&gt;|z|cos&lt;/span&gt;&lt;span class="texhtml"&gt;φ&lt;/span&gt;&lt;span class="texhtml"&gt;, &lt;/span&gt;&lt;span class="texhtml"&gt;|z|sin&lt;/span&gt;&lt;span class="texhtml"&gt;φ&lt;/span&gt;&lt;span class="texhtml"&gt;) = (a&lt;/span&gt;&lt;span class="texhtml"&gt;|z|cos&lt;/span&gt;&lt;span class="texhtml"&gt;φ&lt;/span&gt;&lt;span class="texhtml"&gt;&lt;/span&gt;&lt;span class="texhtml"&gt; - b&lt;/span&gt;&lt;span class="texhtml"&gt;|z|sin&lt;/span&gt;&lt;span class="texhtml"&gt;φ&lt;/span&gt;&lt;span class="texhtml"&gt;,  a&lt;/span&gt;&lt;span class="texhtml"&gt;|z|sin&lt;/span&gt;&lt;span class="texhtml"&gt;φ&lt;/span&gt;&lt;span class="texhtml"&gt; + b&lt;/span&gt;&lt;span class="texhtml"&gt;|z|cos&lt;/span&gt;&lt;span class="texhtml"&gt;φ&lt;/span&gt;&lt;span class="texhtml"&gt;&lt;/span&gt;&lt;span class="texhtml"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;W ten sposob mamy gotowy wzor na obrot punktu wokol punktu (0, 0). Obrot wokol dowolnego punktu mozna zrobic przez przesuciecie punktu do (0, 0), obrot i ponowne przesuniecie.&lt;br /&gt;&lt;br /&gt;Wada przedstawiania obrotow na liczbach zespolonych jest to ze kat o jaki mozna obrocic punkt musi byc z przedzialu [0, 360). Oczywiscie przy odrobinie kreatywnosci mozna i ten problem przeskoczyc.&lt;br /&gt;&lt;br /&gt;Najwieksza zaleta? Pozbycie sie macierzy z przestrzeni dwu wymiarowej, gdzie stosunek ich rozmiaru do zastosowania przechyla sie za bardzo na ich nie korzysc (wystarczy popatrzec na powyzsze wzory i pomyslec jak bardzo mozna je zoptymalizowac).&lt;br /&gt;&lt;span class="texhtml"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-115652842793157194?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/115652842793157194/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=115652842793157194&amp;isPopup=true' title='Komentarze (5)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115652842793157194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115652842793157194'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2006/08/witam-ponownie-tak-jak-powiedzialem.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-115634572282993413</id><published>2006-08-23T16:27:00.001+02:00</published><updated>2006-08-23T17:12:07.236+02:00</updated><title type='text'></title><content type='html'>Witam, dzisiaj nie będzie tak jak zapowiadałem o texturowaniu terenu, a o matematyce :) Przez ostatni rok studiowałem ten przedmiot na Politechnice Warszawskiej i mimo tego, żę 99% rzeczy mi sie nie przyda w programowaniu o tyle chce dzisiaj powiedziec o czyms co niektórym sie moze przydac. Dzisiaj bedzie o: przestrzeniach metrycznych.&lt;br /&gt;&lt;br /&gt;Kazdy mial kontakt z przestrzeniami metrycznymi chociaz pewnie nawet sobie z tego nie zdawal sprawy. Najczesciej spotykana metryka jest metryka euklidesowa czyli wszystkim znany wzor na odlegosc dwuch punktow od siebie: d(x, y) = sqrt( (a.x - b.x)&lt;sup&gt;2&lt;/sup&gt; + (a.y - b.y)&lt;sup&gt;2&lt;/sup&gt; ).&lt;br /&gt;&lt;br /&gt;Jak widac odleglosc jest zdefiniowana jako funkcja. Skoro mozna ja zdefiniowac tak to mozna tez inaczej, jednak nowa funkcja musi spelniac nastepujace warunki:&lt;ol&gt;   &lt;li&gt;&lt;i&gt;d&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;,&lt;i&gt;y&lt;/i&gt;)=0 wtedy i tylko wtedy, gdy &lt;i&gt;x&lt;/i&gt;=&lt;i&gt;y&lt;/i&gt;&lt;/li&gt;   &lt;li&gt;&lt;i&gt;d&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;,&lt;i&gt;y&lt;/i&gt;)=&lt;i&gt;d&lt;/i&gt;(&lt;i&gt;y&lt;/i&gt;,&lt;i&gt;x&lt;/i&gt;)&lt;/li&gt;   &lt;li&gt;&lt;i&gt;d&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;,&lt;i&gt;z&lt;/i&gt;) ≤ &lt;i&gt;d&lt;/i&gt;(&lt;i&gt;x&lt;/i&gt;,&lt;i&gt;y&lt;/i&gt;)+&lt;i&gt;d&lt;/i&gt;(&lt;i&gt;y&lt;/i&gt;,&lt;i&gt;z&lt;/i&gt;) (tzw. &lt;i&gt;&lt;a href="http://pl.wikipedia.org/wiki/Nier%C3%B3wno%C5%9B%C4%87_tr%C3%B3jk%C4%85ta" title="Nierówność trójkąta"&gt;nierówność trójkąta&lt;/a&gt;&lt;/i&gt;).&lt;/li&gt; &lt;/ol&gt; Postaram sie teraz przedstawic kilka najpopularniejszych metryk:&lt;ul&gt;   &lt;li&gt;metryka centrum (oznaczmy przez dE metryke euklidesowa): d(a, b) = dE(0, a) + dE(0, b)&lt;/li&gt;   &lt;li&gt;metryka dyskretna: d(a, b) = { 1 - jesli a != b; 0 - jesli a = b}&lt;/li&gt;   &lt;li&gt;metryka Manhattan: d(a, b) = |a.x - b.x| + |a.y - b.y|&lt;/li&gt;   &lt;li&gt;metryka maksimum: d(a, b) = max{ |a.x - b.x|, |a.y - b.y| }&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3974/3632/1600/metryki.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3974/3632/320/metryki.jpg" alt="" border="0" /&gt;&lt;/a&gt;Zastosowanie metryk:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;czesto na forach jest zadawane pytanie, jak w grach o widoku izometrycznym sprawdzic w ktore pole kliknieto. Jesli troche zmodyfikujemy metryke Manhattan bedziemy mieli latwa odpowiedz na to pytanie&lt;/li&gt;&lt;li&gt;metryka maksimum tez jest bardzo ciekawa, bo mozna latwo sprawdzic czy cos lezy wewnatrz jakiegos kwadratu(po drobnych zmianach rowniez prostokat)&lt;/li&gt;&lt;li&gt;najtrudniej znalezc zastosowanie dla metryki centrum, postac jaka zaprezentowalem powyzej jest malo przydatna (szczegolnie z mierzeniem odleglosci od punktu (0, 0)), jednak mozna ja bardziej uogolnic. Teraz nie znajduje dla niej zastosowania ale jakies jest napewno :)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3974/3632/1600/matryka_centrum.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3974/3632/320/matryka_centrum.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Na jutro moze napisze cos o liczbach zespolonych i ich wykorzystaniu w reprezenatacji obrotow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-115634572282993413?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/115634572282993413/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=115634572282993413&amp;isPopup=true' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115634572282993413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115634572282993413'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2006/08/witam-dzisiaj-nie-bdzie-tak-jak.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-115627058132443703</id><published>2006-08-22T19:25:00.002+02:00</published><updated>2006-08-22T20:16:21.383+02:00</updated><title type='text'></title><content type='html'>Ostatnio troche czasu spedzilem nad tworzeniem oswietlenia do mojego silnika i chcialbym dzisiaj zaprezentowac moje przemyslenia na ten temat.&lt;br /&gt;&lt;br /&gt;Zalozenia jakie sobie postawilem byly dosc proste: swiatla punktowe w dowolnym kolorze, oswietlajace tylko te obiekty ktore sa pod nimi i pozostawiajace nie oswietlone te obiekty ktore sa "wyzsze od swiatla", do tego wszystkiego chcialem zrobic cienie. "Wyzsze od swiatel" jest umowne bo moj silnik jest przeznaczony dla gier 2d z widokiem z gory, wiec tak naprawde nie ma sposobu na okreslenie wysokosci obiektow.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3974/3632/1600/light.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3974/3632/320/light.png" alt="" border="0" /&gt;&lt;/a&gt;Pierwszym problem jaki napotkalem bylo jak zrobic zeby obszar gdzie nie ma swiatla byl zaciemniony? Zrobilem to tak ze najpierw renderuje wszystkie obiekty normalnie, pozniej renderuje swiatla do textury. Robie to w ten sposob ze podmieniam tylko backbuffer natomiast zbuffer pozostawiam bez zmian. Przed renderowaniem swiatel czyszcze caly ekran na jakis okreslony kolor ktory przyjmuje za brak oswietlenia.&lt;br /&gt;Pozostawiajac Z buffor wypelniony wartosciami Z obiektow mam pewnosci ze beda oswietlone tylko te obiekty ktore sa pod swiatlem, a obiekty nad swiatlem pozostana nie oswietlone.&lt;br /&gt;Oto stany mieszania jakich uzywam (DirectX 9):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;engine-&gt;setRenderState(D3DRS_SRCBLEND,  D3DBLEND_ONE);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;engine-&gt;setRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uzylem, D3DBLEND_ONE poniewaz w rzeczywistosci miejsca oswietlane przez dwa swiatla sa bardziej oswietlone niz te oswietlone tylko jednym swiatlem.&lt;br /&gt;&lt;br /&gt;Po wyrenderowaniu wszystkich swiatel, wyswietlam texture do ktorej renderowalem na calym ekranie. Z takim mieszaniem kolorow:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;engine-&gt;setRenderState(D3DRS_SRCBLEND,   D3DBLEND_ZERO);&lt;/span&gt;  &lt;span style="font-style: italic;font-family:courier new;" &gt;engine-&gt;setRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Dzieki temu powstaje odpowiedni efekt oswietlenia.&lt;br /&gt;&lt;br /&gt;Kolejnym punktem jaki chcialem zrealizowac to rzucanie cieni. W obecnej wersji cienie nie sa rzucane przez mesh, a przez obiekt Collidera (z tego wzgledu ze jako jedyny ma wyroznione krawedzie).&lt;br /&gt;&lt;br /&gt;Na tym screenie widac poprawnie wyswietlony cien:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3974/3632/1600/cien2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3974/3632/320/cien2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Obiekt z duza czerwona kropka jest wyzszy od pozostalych i jak widac poprawnie rzuca na nie cien. Pozostale obiekty sa na tej samej wysokosci i nie rzucaja na siebie cieni.&lt;br /&gt;&lt;br /&gt;Rzucanie cieni odbywa sie w ten sposob, ze bierzemy obiekt i swiatlo. Znajdujemy wszystkie krawedzie dla ktorych iloczyn skalarny wektora z pozycji swiatla do srodka krawedzi i normalnej dla tej krawedzi jest &gt; 0. Na podstawie tych krawedzi dodajemy dodatkowe trojkaty przedstawiajace rzucany cien. Dlugosc cienia jest wprost proporcjonalna do odleglosci od zrodla swiatla. W kilku artykulach na sieci widzialem, ze wystepuje problem gdy zrodlo swiatla zawiera sie w obiekcie. U mnie jest to tak rozwiazane wlasnie przez okreslanie dlugosci cienia oraz zalozenia ze swiatlo jest zawsze nad obiektem (nawet jesli teoretycznie leza na tej samej plaszczyznie).&lt;br /&gt;&lt;br /&gt;Kolejnym problemem jaki trzeba rozwiazac przy rzucaniu cieni jest obszar pozbawiony swiatla bardzo rzadko jest w stu procentach czarny (moze byc np. poranek lub wieczor) wiec jesli obiekt bedzie na granicy zasiegu swiatla bedzie rzucal cien ale sam cien bedzie juz poza zasiegiem i bedzie tworzyl dziwny efekt przyciemniania obszaru gdzie nie ma swiatla. Moim rozwiazaniem jest wprowadzenie przezroczystosci cienia w zaleznosci od odleglosci od zrodla swiatla. Jesli cien jest na granicy dzialania swiatla to jest calkowicie przezroczysty. Oprocz tego wprowadzilem brak przezroczystosci cienia najblizej obiektu i prawie calkowita przezroczystosc w obszarze najbardziej oddalonym od obiektu.&lt;br /&gt;&lt;br /&gt;Ostatecznie otrzymalem taki dosc ladny jak mi sie wydaje efekt:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3974/3632/1600/efekt_koncowy.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3974/3632/320/efekt_koncowy.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Na srodku widac co sie dzieje gdy swiatlo jest idealnie nad obiektem.&lt;br /&gt;&lt;br /&gt;To na tyle dzisiaj. Pozdrawiam i zapraszam za jakiś czas. Teraz zajmuje sie texturowaniem terenu.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-115627058132443703?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/115627058132443703/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=115627058132443703&amp;isPopup=true' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115627058132443703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115627058132443703'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2006/08/ostatnio-troche-czasu-sped_115627058132443703.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-115624071633797794</id><published>2006-08-22T11:38:00.000+02:00</published><updated>2006-08-22T12:25:57.693+02:00</updated><title type='text'></title><content type='html'>Witam, dzisiaj chciałbym napisać o fizyce 2d bryły sztywnej którą ostatnio implementowałem.&lt;br /&gt;&lt;br /&gt;Pierwszym problemem jaki trzeba bylo rozwiacac to sprawdzanie kolizji OBB ( oriented bounding box ). W sieci znalazlem bardzo dobry &lt;a href="http://www.harveycartel.org/metanet/tutorials/tutorialA.html"&gt;artykuł &lt;/a&gt;na ten temat, a konkretniej wykrywanie kolizji za pomoca SAT (separate axis teorem). Algorytm ten gwarantuje nie tylko wykrycie kolizji ale rowniez sposob reakcji (minimalny wektor o jaki trzeba odsunac dwa obiekty zeby ze soboa nie kolidowaly).&lt;br /&gt;&lt;br /&gt;Zastosowanie tego algorytmu w moim silniku przedstawia sie mniej wiecej tak: kazdy obiekt jest dziedziczony po klasie iActor ktora implementuje podstawowe wlasciwoscie fizyczne takie jak masa, bezwladnosc, predkosc katowa, predkosc liniowa itp. oraz udostepnia interfejs do aplikowania nowych sil dzialajacych na ten obiekt. Kazdy obiekt ktory jest poddawany sprawdzaniu kolizji zawiera obiekt klasy Collider, ktora opisuje ksztalt naszego obiektu (lista krawedzi). Kolizje sa sprawdzane przez podanie pary obiektow do klasy CollisionCheck. W rezultacie dostajemy informacje czy kolizja zachodzi jesli tak to mamy rowniez takie dane: normalna punktu kolizji, punkt kolizji, minimalne przesuniecie o jakie trzeba dwa obiekty od siebie odsunac.&lt;br /&gt;&lt;br /&gt;Fizyczna reakcja na kolizje zajmuje sie klasa Physics ktora co staly okres czasu aktualizuje symulacje fizyczna. Materialy ktore mi poslozyly do opisanie relistycznego zachowania sie obiektów znalazlen na tej &lt;a href="http://www.d6.com/users/checker/dynamics.htm"&gt;stronie&lt;/a&gt;. Autor jednak nie przewidzial sily tarcia ktora dziala podczas zderzenia i ten element wzoru wyprowadzilem sam. Konkretniej, rzutowalem wektor predkosci po kolizji na prosta prostopadla do normalnej kolizji i przemnozylem przez wspolczynnik tarcia, odejmujac otrzymany wektor od wektora predkosci po kolizji.&lt;br /&gt;&lt;br /&gt;Prezentacje jak ta fizyka sie sprawuje w dzialaniu mozna zobaczyc na tym krotkim &lt;a href="http://wachu.i365.pl/physics.avi"&gt;filmiku&lt;/a&gt; (na ktorym jednak nie ma jeszcze zaimplementowanego tarcia).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-115624071633797794?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/115624071633797794/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=115624071633797794&amp;isPopup=true' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115624071633797794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115624071633797794'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2006/08/witam-dzisiaj-chciabym-napisa-o-fizyce.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-115619397227738623</id><published>2006-08-21T22:56:00.001+02:00</published><updated>2006-08-21T23:04:36.323+02:00</updated><title type='text'>Witam!</title><content type='html'>Witam w moim devlogu! Będę tutaj prezentował postepy w mojej pracy programistycznej. Zachęcam do czytania!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-115619397227738623?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/115619397227738623/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=115619397227738623&amp;isPopup=true' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115619397227738623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115619397227738623'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2006/08/witam.html' title='Witam!'/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33122967.post-115619395966575296</id><published>2006-08-21T22:56:00.000+02:00</published><updated>2006-08-21T23:02:56.660+02:00</updated><title type='text'></title><content type='html'>Witam w moim devlogu! Będę tutaj prezentował postepy w mojej pracy programistycznej. Zachęcam do czytania!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33122967-115619395966575296?l=wachu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wachu-dev.blogspot.com/feeds/115619395966575296/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33122967&amp;postID=115619395966575296&amp;isPopup=true' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115619395966575296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33122967/posts/default/115619395966575296'/><link rel='alternate' type='text/html' href='http://wachu-dev.blogspot.com/2006/08/witam-w-moim-devlogu-bd-tutaj.html' title=''/><author><name>Piotr Wach</name><uri>http://www.blogger.com/profile/10690088603061072643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
