0
from __future__ import division, print_function
from visual import *
scene.width = 400
scene.height = 760
## constants and data
g = 9.8
mball = 0.03
L0 = 0.26
ks = 1.8
sf = .5
sf2 = 3
#Graphs
## objects (origin is at ceiling)
ceiling = box(pos=vector(0,0,0), length=0.2, height=0.01, width=0.2)
ball = sphere(pos=vector(0,-0.3,0), radius=0.025, color=color.orange)
spring = helix(pos=ceiling.pos, axis=ball.pos-ceiling.pos,color=color.cyan, thickness=.003, coils=40, radius=0.010)
#more constants
Lvec= (ball.pos-ceiling.pos)
Lhat = Lvec/mag(Lvec)
## initial values
pball = mball*vector(0,0,0)
Fgrav = mball*g*vector(0,-1,0)
t = 0
deltat = .01
Fspring = -ks*ball.pos
#arrow vectors
Fharr = arrow(pos=ball.pos, axis=vector(0,0,0), color=color.green) #parallel
Ftarr = arrow(pos=ball.pos, axis=vector(0,0,0), color=color.blue) #perpendicular
parr = arrow(pos=ball.pos, axis=vector(0,0,0), color=color.magenta)
#improve the display
scene.autoscale = False ## turn off automatic camera zoom
scene.center = vector(0,-L0,0) ## move camera down
#scene.waitfor ('click')
## calculation loop
while t <10:
rate(100)
#length of L
Lmag=abs(Lvec.y)
Lhat = Lvec/mag(Lvec)
#spring force
Fspring = -ks*(mag(Lvec)-L0)*Lhat
#updating position
Fnet = Fgrav + Fspring
pball = pball + Fnet*deltat
ball.pos = ball.pos + (pball/mball)*deltat
spring.axis = ball.pos - ceiling.pos
#perpendicuar and parrellel forces
phat = pball/mag(pball)
#parallel
FH = dot(Fnet,phat)*phat
#perpendicular
FT = Fnet - FH
#updating arrows
t = t + deltat
ここに私のコードがありますが、私の春は振動すると思われますが、それはありません。それはちょうど真っ直ぐに撃つ、引っ込めない、誰でも私を助けることができる?私は、私はその位置や何かをwhileループで更新する必要があると思うので、底に0の勢いに達すると、それは収縮するが、私は知らない。スプリングはvpythonを発振しません