Strona 1 z 1

Symulacja soczewki

: 17 lut 2016 19:26
autor: matti_94
Cześć,
Czy w labVIEW da się zrobić symulację cienkiej soczewki? Wymyśliłem pewien projekcik którego zwieńczeniem jest właśnie taka symulacja. Bazując na równaniu soczewki (1/f)=(1/x)+(1/y), gdzie: f- ogniskowa soczewki, x-odległość przedmiotu od soczewki, y-odległość obrazu od soczewki.
Miałoby to polegać na tym że użytkownik wczytuje np. zdjęcie, obraz z dysku a następnie wpisuję dane parametry do powyższego równania, użytkownik miałby dowolność ich wpisania. Chciałbym, aby daną wyjściową była odległość obrazu od soczewki, a żeby użytkownik mógł tę odległość zmieniać zauważając zmianę ostrości, poprawę lub pogorszenie na wczytanym zdjęciu. Coś typu zabawa lupą, mam obraz, program obliczył odległość obrazu w której jest on ostry na podstawie parametrów które wpisał użytkownik(ogniskowa, odległość przedmiotu od soczewki). Następnie użytkownik miałby móc wpisać dowolną odległość obrazu od soczewki zauważając zmianę jego ostrości.

Myślałem również o najprostszym równaniu opisującym soczewkowanie grawitacyjne. Tutaj działałoby to inaczej, należałoby wprowadzić grafikę, następnie, można być wprowadzić koło o zmienialnej średnicy, na środku zdjęcia. W zależności od odległości od krawędzi tego koła obraz by się inaczej zakrzywiał, zgodnie z równaniem: α=(4GM)/(bc^2), gdzie G- stałą grawitacyjna, stały parametr niezmienialny, c-prędkość światła, oraz parametry które użytkownik miałby zmieniać to b- odległość od krawędzi koła, M-masa obiektu. Dokładna postać równaniu już nie jest tak ważna jak użyskanie efektu zakrzywiania w zależności od parametru masy i w szczególności odległości od krawędzi koła.
Czy to wgl da się wykonać, jeżeli tak to proszę o rady :), bo nawet nie wiem jak zacząć, z góry dzięki :)

Symulacja soczewki

: 19 lut 2016 19:49
autor: dajpanspokój
Jak ta soczewka ma działać?
Wczytujesz obraz, zamieniasz kursor w koleczko i jezdzisz tym koleczkiem po obrazie i w srodku kolka wyswieta sie kawałek tego obrazu rozciagnietego i rozmazanego? W kontrolkach mozesz zmieniac odleglosc soczewki od obrazu itp?
Na pewno się da. Najlepiej jakbys mial moduł Vision bo tam jest dużo funkcji do rozciagania obrazu, dużo filtrów do rozmazywania itp.
Robienie kółka z kursora też można wykombinować albo przez malowanie po obrazie, albo sa jakies tez sztuczki do tego: http://zone.ni.com/reference/en-XX/help ... curs_file/
Zrobiłbyś drugi obrazek, któremu updatowałbyś pozycje w property node taką samą jak pozycję kursora, wycinałbyś jakis obszar z tego obrazka pod spodem, stosowal te filrty i rozciaganie i wstawiał do tego drugiego obrazka i juz :)) proscizna :))) :ymparty:

Zarcik.

Mam nadzieje ze masz dobry komputer...

Mozesz jeszcze np kolkiem myszki sterowac przyblizanie i oddalanie soczewki

Re: Symulacja soczewki

: 20 lut 2016 09:53
autor: dajpanspokój
co do soczewki grawitacyjnej, to majac dany obrazek 2d nie jestes w stanie stwierdzic jakby to wygladalo naprawde, bo kat pod ktorym widisz obrazek jest inny niż promienie, które są zakrzywione przez tę masę.
Ale jeśli nie obchodzi cię prawdziwy efekt, tylko po prostu efekt, to tez nie jest to takie trudne. Musisz wziąc wszystkie piksele które leżą wokół masy w jakiejś tam odległości od niej i obliczyć piksel, który kopiujesz z orginalnego obrazu i wklejasz go w to miejsce.
Coś w tym stylu:
masa.PNG
masa.PNG (6.56 KiB) Przejrzano 8117 razy
Jak wiesz jak to zrobić w matlabie, to mozesz użyc mathscriptu