Próbuję napisać kod za pomocą programu matlab, który emuluje wskaźnik laserowy w sposób, w jaki mój kot będzie się cieszył ściganiem go na ekranie. To, co zrobiłem do tej pory:Efektywne emulowanie wskaźnika laserowego dla mojego kota przy użyciu Matlab
figure('menubar','none','color','k')
h = plot(0,'r.','MarkerSize',20);
xlim([-1 1]); ylim([-1 1])
axis off
phi1=(1+sqrt(5))/2;
phi2=sqrt(3);
step= 0.0001; % change according to machine speed
for t=0:step:100
set(h,'xdata',sin(t+phi1*t),'ydata',cos(phi2*t))
drawnow
end
„Issues” z tego kodu są następujące:
wskaźnik porusza się mniej lub bardziej ze stałą prędkością i nie zwalniać do prawie całkowitego zatrzymania, a następnie nieoczekiwanie kontynuować.
Trajektoria nieco się powtarza, chociaż starałem się ją wykorzystywać na liczbach nieracjonalnych, ogólne ruchy są ciągłe od prawej do lewej. Myślę, że pomoże nam ostrzejsza zmiana trajektorii.
Wiem, że to nie jest tradycyjne pytanie programistyczne, ale nadal chcę rozwiązać problem programistyczny. Byłbym wdzięczny za twoją pomoc i oczywiście na nowe sposoby udzielania odpowiedzi na moje pytanie, które nie używa kodu, który dodałem.
Fantastyczny projekt . Ale kosztem potencjalnego poświęcenia monitora ?! – voxeloctree
można zaimplementować pojęcie pozycji, prędkości i przyspieszenia, z parametrami do sterowania każdym. Szukaj inspiracji w http://gamedev.stackexchange.com – Amro
Zabawa. Możesz nawet nauczyć się nowych rzeczy. Symuluj [dziwny atraktor] (http://mathworld.wolfram.com/StrangeAttractor.html) lub inny chaotyczny atraktor. :-) Słynny [atraktor Lorenza] (http://en.wikipedia.org/wiki/Lorenz_attractor) jest całkiem łatwy do zrobienia. Możesz też zajrzeć do [2-D przypadkowych spacerów] (http://en.wikipedia.org/wiki/Random_walk) i [procesy Wiener] (http://en.wikipedia.org/wiki/Wiener_process), aby dowiedzieć się, jak dodać szum do innego systemu/procesu. – horchler