 |
Coders' city Nasza pasja to programowanie!
|
| Zobacz poprzedni temat :: Zobacz następny temat |
| Autor |
Wiadomość |
mp Gość
|
Wysłany: Pią Wrz 22, 2006 5:03 pm Temat postu: Projekt programistyczny |
|
|
Uwaga: to pytanie dotyczy VB w wersji >= 7 (VB.NET)!
Witam wszystkich programistów VB .net!
Nowa platforma programistyczna Microsoftu na dobre zamierza zadomowić się w każdym komputerze, dlatego myślę, że nie warto pozostawać w tyle i pisać programy właśnie w .net! Nawet Borland wspomaga już tą platformę (w Delphi)!
Programuję w VB poczawszy od wersji 1.0 już około 8 lat, platformę .net poznałem 2 lata temu, nadal jednak jest to pełne pole ekploracji niezmierzonych przestrzeni nazw :) Obecnie studiuję na Wydziale Matematyki i Informatyki na Uniwersytecie Wrocławskim więc do programistów .net mam w zasadzie nieograniczony dostęp, jednak na uczelni nikt nie zajmuje się większymi projektami programistycznymi, stąd pojawiam się tu na forum!
Pomysł projektu, do którego chce Was zaprosić zrodził się całkowicie nagle - wszak dawniej dużo czasu poświęcałem na wymyślenie tematu: "co by tu zaprogramować" :)
Plan jest na razie skromny, mimo to - ambitny! Chodzi o stworzenie interpretera (a w przyszłości-nie wiadomo jak bliskiej/dalekiej-edytora) grafiki wektorowej. Nie jest to porywanie się z motyką na słońce - drugiego Corela nie będzie - chociaż nie ukrywam, że chciałbym by w projekcie zaimplementować jak najwięcej.
Co mogę wnieść do projektu: -kod i pomysły -wizję koordynacji pracy -posiadam stosunkowo dużą (z programistycznego punktu widzenia) wiedzę na temat matematyki, którą to studiuję już kolejny rok
Co już mam (zacząłem dziś rano :): -wyznaczanie dowolnie długiej krzywej Beziera -efekt wygładzania krzywej - "pisanej odręcznie"
Czego potrzeba: -podstawowe figury geometrzyczne w formie węzłowej -wypełnianie węzłowej krzywej zamkniętej -obrót o zadany kąt wokół zadanego punktu -transpozycje wielkości i położenia -...i dużo innych, ale przede wszystkim - strategii kształtowania architektury programu, którą należy dostosować.
Kogo szukam: każdego, kto mógłby pomóc, jest pasjonatem(ką), posiada wiedzę z dziedziny oraz umiejętność nieśmiecenia w kodzie i pracy z dokumentacją techniczną.
Czekam na pytania na forum. Pozdrawiam, 007mp@op.pl (VB.NET) |
|
| Powrót do góry |
|
 |
|
|
Gość
|
Wysłany: Pią Wrz 22, 2006 6:53 pm Temat postu: |
|
|
Dobra jak wykonasz jedno zadanie to chetnie do ciebie dolacze, wczesniej jednak pokaz, ze umisz programowac i (jak twierdzisz) znasz matme! Zadanie: Napisz funkcje, ktora jako dwa parametry przyjmuje dwie wspolrzedne (Point(X,Y)) oraz jako trzeci punkt przyjmuje liczbe calkowita (L). Mam wiec: 1)punkt1 2)punkt2 3)L -liczba calkowita
Funkcja rozklada rownomiernie co L, punkty poczawszy od punkt1 do punkt2 -lub od punkt2 do punkt1 (zaleznie jakie to sa punkty).
Przyklad:
Public Function RozlozRownomiernie(punkt1 as Point,punkt2 as Point, L as integer) as ArrayList ... End Function
Uzytkownik kilka w dowolnym miejscu i mamy punkt1, nastepnie klika w innym i mamy punkt2. Wywolujemy funkcje z parametrami punkt1,punkt2,7 (co 7px. rozkladaj punkty).
Funkcja zwraca tablice typu ArrayList wypelniona obiektami typu Point -zaczynajac od pierwszego parametru poprzez punkty wyznaczone az do parametru 2.
Wyknaj to zadanie to pokazesz troszke matmy i VB.
Pozdrawiam! (VB.NET) |
|
| Powrót do góry |
|
 |
mp Gość
|
Wysłany: Pią Wrz 22, 2006 7:33 pm Temat postu: |
|
|
No cóż, proszę bardzo - nie testowalem wiele, napisałem w 15 minut - a teraz musze uciekać. Powinno działać:
| Kod: |   Public Function RozlozRownomiernie(ByVal punkt1 As Point, ByVal punkt2 As Point, ByVal L As Integer) As Point()
  'funkcja rozklada rownomiernie punkty od punkt1 do punkt2 co ~L pikseli
  'ze wzgledu na nature pikseli (są to liczby całkowite) rozklad bedzie rownomierny, jednak nie dokladnie co L pikseli
  
  'zobaczmy, ile L pikselowych krokow jestesmy w stanie wykonac
  Dim ilosckrokow As Integer
  ilosckrokow = odleglosc / L
  
  'definiujemy wektor przesuniecia od punkt1 do punkt2:
  Dim wprzes As Point
  wprzes.X = Math.Abs(punkt1.X - punkt2.X)
  wprzes.Y = Math.Abs(punkt1.Y - punkt2.Y)
 
  'wyznaczamy wektor przesuniecia punktow "rozkladu"
  Dim wmprzes As Point
  wmprzes.X = (L ^ 2 / (1 + (wprzes.Y / wprzes.X) ^ 2)) ^ 0.5
  wmprzes.Y = (L ^ 2 / (1 + (wprzes.X / wprzes.Y) ^ 2)) ^ 0.5
  
  'tablica punktow rozkladu
  Dim punkty(ilosckrokow) As Point
  punkty(0) = punkt1
  punkty(ilosckrokow) = punkt2
  
  Dim i As Integer
  For i = 1 To ilosckrokow - 1
  punkty(i) = punkty(i - 1) + wmprzes
  
  Next
  RozlozRownomiernie = punkty
  End Function
|
(VB.NET) |
|
| Powrót do góry |
|
 |
Gość
|
Wysłany: Pią Wrz 22, 2006 8:09 pm Temat postu: |
|
|
Czegos ci chyba zabraklo?! Czym jest zmienna odleglosc? Powiedzmy, ze ktos kilka 2* i ma:
punkt1(10,6) punkt2(0,0) L=7
Rozkladamy punkty w kierunku malejacym. (VB.NET) |
|
| Powrót do góry |
|
 |
Gość
|
Wysłany: Pią Wrz 22, 2006 10:40 pm Temat postu: |
|
|
| Anonymous napisał: | Czegos ci chyba zabraklo?! Czym jest zmienna odleglosc?
|
Racja, źle wkleiłem (ponadto pomyliłem się z tymi wartościami bezwzględnymi!
| Kod: |   Public Function RozlozRownomiernie(ByVal punkt1 As Point, ByVal punkt2 As Point, ByVal L As Integer) As Point()
  'funkcja rozklada rownomiernie punkty od punkt1 do punkt2 co ~L pikseli
  'ze wzgledu na nature pikseli (są to liczby całkowite) rozklad bedzie rownomierny, jednak nie dokladnie co L pikseli
  Dim odleglosc As Single = ((punkt1.X - punkt2.X) ^ 2 + (punkt1.Y - punkt2.Y) ^ 2) ^ 0.5
  
  'zobaczmy, ile L pikselowych krokow jestesmy w stanie wykonac
  Dim ilosckrokow As Integer
  ilosckrokow = odleglosc / L
  
  'definiujemy wektor przesuniecia od punkt1 do punkt2:
  Dim wprzes As Point
  wprzes.X = punkt2.X - punkt1.X
  wprzes.Y = punkt2.Y - punkt1.Y
  
  'wyznaczamy wektor przesuniecia punktow "rozkladu"
  Dim wmprzes As Point
  wmprzes.X = (L ^ 2 / (1 + (wprzes.Y / wprzes.X) ^ 2)) ^ 0.5 * Math.Sign(wprzes.X)
  wmprzes.Y = (L ^ 2 / (1 + (wprzes.X / wprzes.Y) ^ 2)) ^ 0.5 * Math.Sign(wprzes.Y)
  
  'tablica punktow rozkladu
  Dim punkty(ilosckrokow) As Point
  punkty(0) = punkt1
  punkty(ilosckrokow) = punkt2
  
  Dim i As Integer
  For i = 1 To ilosckrokow - 1
  punkty(i) = punkty(i - 1) + wmprzes
  
  Next
  RozlozRownomiernie = punkty
  End Function
|
Dla podanych przez Ciebie danych kod zwraca punkty (10,6),(4,2),(0,0), czyli co 7 pikseli (ostatni skok jest dł 5 pikseli z uwagi na długość całości).
Jak napisal marcin_an (czemu usunal swoj post???), to jakies zadanie domowe?
PS: Skupmy się na TEMACIE! (VB.NET) |
|
| Powrót do góry |
|
 |
marcin_an Site Admin
Dołączył: 26 Maj 2005 Posty: 17273 Skąd: z drugiej strony Kabla
|
Wysłany: Pią Wrz 22, 2006 11:16 pm Temat postu: |
|
|
| mp napisał: | | Jak napisal marcin_an (czemu usunal swoj post???), to jakies zadanie domowe? | Bo był zmęczony i zamiast wysłać poprawiony post - wysłał to, co było w schowku. Nie sądzę, by kogoś interesowały wyniki działania mojego programu (to było w schowku), więc post został skasowany. I tak nie wnosił niczego ciekawego do dyskusji. (VB.NET) _________________ Matematyka to taki twór, który pozwala opisać sokowirówkę jako urządzenie pobierające ujemne odpadki i produkujące z nich sok. "Lameria atakuje" | RTFM | UMLet - edytor UML inaczej | Wykłady ks.Pawlukiewicza |
|
| Powrót do góry |
|
 |
s_molik Gość
|
Wysłany: Sob Wrz 23, 2006 11:16 am Temat postu: |
|
|
Bardzo zaciekawil mnie ten projekt!!!!!!!!!!! Bede go z uwaga sledzil!!! (VB.NET) |
|
| Powrót do góry |
|
 |
mp Gość
|
Wysłany: Nie Wrz 24, 2006 2:27 pm Temat postu: |
|
|
Aktualnie jestem w trakcie prac nad klasą podstaw geometrii.
Obecnie zaimplementowałem: -skalowanie -algorytm triangulacji
Będę implementować: -algorytm wypełnienia wielokąta - dzielenie na wielokąty wypukłe i ich triangulacja (VB.NET) |
|
| Powrót do góry |
|
 |
Gość
|
Wysłany: Nie Wrz 24, 2006 2:38 pm Temat postu: |
|
|
Chetnie bym Ci pomógl, ale mam zbyt niski poziom wiedzy jesli chodzi o matme:( Jesli bedziesz potrzebowal utworzyc jakies klasy nie zwiazane z matma to chetnie Ci cos napisze. (VB.NET) |
|
| Powrót do góry |
|
 |
mp Gość
|
Wysłany: Nie Wrz 24, 2006 3:19 pm Temat postu: |
|
|
Gościu, bardzo dziękuję za zainteresowanie! Zostaw kontakt do siebie, lub najlepiej napisz na mój mail ( 007mp@op.pl ).
Generalnie, potrzebne są zawsze matematyczne podstawy, ale tak, czy tak - co trudniejsze rzeczy znajduje się w internecie - np. algorytm triangulacji Da Lanuay'a, czy też algorytm triangulacji krzywej łamanej zamkniętej ( http://theory.lcs.mit.edu/~indyk/6.838-old/handouts/lec4.pdf#search=%22split%20a%20polygon%20algorithm%22 ) - jest tam dokładnie opisane, co trzeba zrobić, krok po kroku, wystarczy tylko przepisać z języka potocznego na język programowania :)
Pozdrawiam i czekam na kontakt, oraz w dalszym ciągu zapraszam do współpracy! Poszukuję także osób znających się na webmasteringu (do zrobienia strony projektu) oraz znających język angielski (dokumentacja techniczna (ta posiada też wersję polską) i nomenklatura w kodach źródłowych jest angielska). (VB.NET) |
|
| Powrót do góry |
|
 |
|
|
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Możesz dodawać załączniki na tym forum Możesz pobierać pliki z tego forum
|
 Debug: strone wygenerowano w 0.09205 sekund, zapytan = 7
|