-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathl_c
106 lines (73 loc) · 1.69 KB
/
l_c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#definicao da bola
v = PVector(0,0)
p = PVector(400,400)
r = 10
#incrementos e verfificadores de movimento
inc = PVector(0,0)
ver = False
class Bola:
def __init__(self,p,v,r):
self.v = v
self.p = p
self.r = r
def move(self,dt):
self.p.add(self.v*dt)
def xlr8(self,dt):
F = self.v.copy()
F.mult(-0.1*F.mag()**2)
F.mult(dt)
self.v.add(F)
b = Bola(p,v,r)
def colide(b, s):
vy = s.mult(b.v.dot(s))
vx = b.v - vy
vy = vy.mult(-1)
b.v = vx.add(vy)
t = millis()
xmin = ymin = 200
xmax = ymax = 600
def setup():
size(800,800)
def draw():
global t, xmin, xmax, ymin, ymax
oldt = t
t = millis()
dt = t-oldt
background(0)
rectMode(CORNERS)
noFill()
stroke(255)
rect(xmin,ymin,xmax,ymax)
b.move(dt)
#b.xlr8(dt)
if b.p.x <= xmin+b.r:
colide(b, PVector(1,0))
elif b.p.x >= xmax-b.r:
colide(b, PVector(-1,0))
elif b.p.y <= ymin+b.r:
colide(b, PVector(0,1))
elif b.p.y >= ymax-b.r:
colide(b, PVector(0,-1))
fill(255)
noStroke()
ellipse(b.p.x,b.p.y, 2*b.r, 2*b.r)
noFill()
stroke(255)
ellipse(b.p.x,b.p.y, 2*b.r+20, 2*b.r+20)
print(ver)
print(inc)
def mouseDragged():
global inc, ver
if sqrt((mouseX - p.x)**2 + (mouseY-p.y)**2) <= r+10:
ver = True
if ver:
inc.x = p.x - mouseX
inc.y = p.y - mouseY
stroke(255,0,0)
line(p.x,p.y,mouseX,mouseY)
def mouseReleased():
global inc, ver
if ver:
b.v.add(inc.div(500))
inc = PVector(0,0)
ver = False