Kinematyka odwrotna na przykładzie węża

Odpowiedz Nowy wątek
2019-05-03 21:33

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

2

Cześć,

przeklejam swój wątek https://forum.lazarus.freepascal.org/index.php/topic,45282.0.html z forum Lazarusa. Może się przydać piszącym gry, chociaż napisałem to w celu testowym do obliczania kąta dla poszczególnych segmentów. Można ten projekt nawet potraktować jako wyjściowy etap do prostej gierki. Co kto lubi...

edytowany 2x, ostatnio: furious programming, 2019-05-03 23:12
Dorzuć źródła do załączników posta, tak aby nie trzeba było ich szukać nie wiadomo gdzie. - furious programming 2019-05-04 01:04

Pozostało 580 znaków

2019-05-11 23:44
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 17 minut temu

Lokalizacja: Tuchów

0

Wyszło całkiem nieźle, choć z tym wiatrem to miałem na myśli jedynie oś X. :]

No nic, czekam w takim razie na kod źródłowy.


Pozostało 580 znaków

2019-05-17 21:50

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

1

prościej chyba tego się nie da napisać (na pewno bardziej elegancko).. ;)

  • kod.7z (0 MB) - ściągnięć: 27

Pozostało 580 znaków

2019-05-20 18:27
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 17 minut temu

Lokalizacja: Tuchów

0

@machinebyte4: działać działa, ale ten wiatr wygląda słabo i dość nierealistycznie wygina to drzewko. Wszystko dlatego, że owy wiatr w Twoim kodzie nie jest parametrem wychylania gałęzi, a przyciągania ich końcówek do określonego punktu. Czyli działa to tak samo jak w przypadku węża, z tą różnicą, że teraz jest wiele węży połączonych ze sobą.

Poza tym nadal kod nie wygląda zbyt dobrze. Stosujesz złe praktyki, jeśli chodzi o nazewnictwo elementów (zmiennych, stałych, parametrów itd.), formatowanie kodu (głównie instrukcje warunkowe), nadal używasz zmiennych globalnych do przechowywania elementów, które globalnymi być nie powinny. No i nadal pitolisz się z gołymi macierzami, zamiast skorzystać z wygodniejszych i prostszych w użyciu kontenerów (np. z listy generycznej) oraz opakować drzewko w wygodną klasę, tak aby łatwo było zarządzać całą zawartością (czyli wszystkimi gałęziami).


Jeśli chcesz się jeszcze pobawić tym drzewkiem to popraw to o czym napisałem w powyższym paragrafie. Natomiast jeśli chodzi o sposób wyginania gałęzi, to zabierz się za to z d**y strony. Dosłownie – nie modyfikuj pozycji i kąta segmentów od czubków końcowych gałęzi, a idąc od pnia drzewa aż do końcowych segmentów. Czyli najpierw przechyl pień i wszystko wyżej, następnie przechyl gałęzie wychodzące z pnia i wszystko ponad nimi itd. itd., aż do samego końca (użyj rekurencji).

Jeśli chodzi o wiatr, to użyj tylko jednej liczby, która określi kierunek i siłę wiatru w osi X (skoro i tak korzystasz z rzutu bocznego). Im wyższa wartość, tym silniejszy przechył. Natomiast przechylenie gałęzi możesz zrealizować bazując na okręgu i zwiększeniu kąta. Wierzchołek danego segmentu bliższy pnia potraktuj jako środek okręgu, a długość segmentu jako promień. W takim przypadku przechylenie segmentu oznaczać będzie obliczenie punktu na tym okręgu według bieżącego konta plus (lub minus) siła wiatru razy mnożnik. Mnożnikiem może być numer segmentu licząc od pnia – im dalej od niego, tym wyższa wartość mnożnika, a więc mocniejszy przechył (à la im dalej od pnia, tym cieńsze gałęzie i bardziej podatne na odkształcanie).

Potem możesz dodać kolejne parametry, np. wyginanie się gałęzi (rysowane jako łuki) i pulsujący wiatr. ;)


edytowany 5x, ostatnio: furious programming, 2019-05-20 20:09

Pozostało 580 znaków

2019-06-12 21:59

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

2

Te dwa proste programy które tutaj zamieściłem (tak, wiem, że na tablicach) są testem-wstępem do tego projektu:

Powolutku może zacznę się ogarniać i z kodem i ze sprzętem, bo doprowadzenie tego do postaci wyżej zaprezentowanej było dość męczące ;)

Przy okazji, czy ma ktoś z Was doświadczenie z jakąkolwiek bezpłatną biblioteką do obsługi obrazu, czytaj śledzenia obiektu w czasie rzeczywistym? Taką którą mogę stosować z Lazarusem na RPi.

edytowany 2x, ostatnio: furious programming, 2019-06-12 22:19

Pozostało 580 znaków

2019-06-13 06:52

Rejestracja: 17 lat temu

Ostatnio: 6 godzin temu

1
machinebyte4 napisał(a):

...
Przy okazji, czy ma ktoś z Was doświadczenie z jakąkolwiek bezpłatną biblioteką do obsługi obrazu, czytaj śledzenia obiektu w czasie rzeczywistym? Taką którą mogę stosować z Lazarusem na RPi.

Nie mam w tym doświadczenia, ale może to się przyda: https://forum.lazarus.freepas[...]/index.php/topic,38121.0.html


pozdrawiam
paweld

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0