1 svar
76 visningar
elikamedmc2 är nöjd med hjälpen
elikamedmc2 119
Postad: 4 okt 2021 15:59

Hur får jag vektorn att "studsa"?

Hej, 

Har fastnat lite på ett problem... Jag försöker få en pixel att åka åt ett håll och, när den träffar väggar, studsa. Det är en 30*20 matris som är färgkodad för att enklare se hur den studsar. Målet är att täcka hela ytan, men får börja med att få den att studsa.

Jag funderar på om jag behöver B1, B2... eller om jag ska sätta ett nytt värde på alla väggarna i sig, t.ex: 3, 4, 5 och 6, och när då figuren studsar mot väggen så byter den riktning. 

Är inte säker på var under while-loopen jag behöver sätta in vad som skulle behövas. Kanske en if-loop? 

Bifogar även en bild hur jag har tänkt. (Startpunkten ska kunnas sättas var som helst i slutet, men börjar enkelt)

x = 2;

y = 2;

grass = [0 0.7 0.2

         0.4 0.6 0

         0.4 0.2 0];

A = ones(30, 20);

A(:, 1) = 2; B1 = A(:,1);

A(:,20) = 2; B2 = A(:,20); 

A(30,:) = 2; B3 = A(30,:); 

A(1,:) = 2; B4 = A(1,:); 

A(2, 2) = 0;

imagesc(A)

colormap(grass)

axis equal

hold on

while sum(A) ~= 0 

    while A(x,y) ~= 2 

       A(x,y) = 0;

       y = y + 1;

       x = x + 1; 

       imagesc(A) 

       axis equal

       pause(0.01)

    end

end

Dr. G 9359
Postad: 4 okt 2021 19:34

De här raderna 

y = y + 1;

x = x + 1; 

behöver modifieras. Om x (eller y) når sitt maxvärde så ska du istället räkna ner till dess att du når minvärdet. 

Svara Avbryt
Close