回答編集履歴

1

Update

2022/01/05 04:38

投稿

melian
melian

スコア19825

test CHANGED
@@ -5,8 +5,6 @@
5
5
  from matplotlib import pyplot as plt
6
6
 
7
7
  from matplotlib.animation import ArtistAnimation
8
-
9
- import math
10
8
 
11
9
 
12
10
 
@@ -26,7 +24,7 @@
26
24
 
27
25
  for _ in range(100):
28
26
 
29
- prev = b[:]
27
+ prev = b[:]; newv = [1, 1]
30
28
 
31
29
  b[0] += v[0]; b[1] += v[1]
32
30
 
@@ -34,29 +32,27 @@
34
32
 
35
33
  b = [W, (v[1]/v[0])*(W-prev[0])+prev[1]]
36
34
 
37
- v[0] *= -1
35
+ newv[0] = -1
38
36
 
39
37
  if b[0] < 0:
40
38
 
41
39
  b = [0, (v[1]/v[0])*-prev[0]+prev[1]]
42
40
 
43
- v[0] *= -1
41
+ newv[0] = -1
44
42
 
45
43
  if b[1] > H:
46
44
 
47
- if 0 < b[0] < W:
45
+ b = [(v[0]/v[1])*(H-prev[1])+prev[0], H]
48
46
 
49
- b = [(v[0]/v[1])*(H-prev[1])+prev[0], H]
50
-
51
- v[1] *= -1
47
+ newv[1] = -1
52
48
 
53
49
  if b[1] < 0:
54
50
 
55
- if 0 < b[0] < W:
51
+ b = [(v[0]/v[1])*-prev[1]+prev[0], 0]
56
52
 
57
- b = [(v[0]/v[1])*-prev[1]+prev[0], 0]
53
+ newv[1] = -1
58
54
 
59
- v[1] *= -1
55
+ v = [v[0]*newv[0], v[1]*newv[1]]
60
56
 
61
57
  im = ax.scatter([b[0]], [b[1]], c="b")
62
58