in roboschool/models_household/dinnerware/generate.py [0:0]
def generate_plate(p, obj, collision_prefix):
contour = Contour()
belt_vlist_3d_prev = None
for step in range(p.N_VIZ+1):
angle = step/float(p.N_VIZ)*2*np.pi
if step % p.COLLISION_EVERY == 0:
vlist_3d = []
for x,y in p.belt_simple:
vlist_3d.append( [
np.cos(angle)*x*1.06,
np.sin(angle)*x*1.06,
y
] )
if belt_vlist_3d_prev:
obj2 = Obj(collision_prefix % (step / p.COLLISION_EVERY))
obj2.out.write("usemtl pan_tefal\n")
vlist = np.array( vlist_3d + belt_vlist_3d_prev )
vlist[len(vlist_3d):] *= 1.01 # break points on one plane
vlist[0,0:2] += 0.01*vlist[len(vlist_3d),0:2]
vlist[len(vlist_3d),0:2] += 0.01*vlist[0,0:2]
nlist = np.random.uniform( low=-1, high=+1, size=vlist.shape )
tlist = np.random.uniform( low=0, high=+1, size=(len(vlist),2) )
vind = [obj2.push_v(xyz) for xyz in vlist]
nind = [obj2.push_vn(xyz) for xyz in nlist]
convex_hull(vlist, vind, nind, None, obj2)
belt_vlist_3d_prev = vlist_3d
if step==p.N_VIZ: break
belt_v = []
belt_n = []
belt_t = []
for x,y,nx,ny in p.belt:
belt_v.append( np.array( [
np.cos(angle)*x,
np.sin(angle)*x,
y
] ) )
belt_n.append( np.array( [
np.cos(angle)*nx,
np.sin(angle)*nx,
ny
] ) )
if ny-nx >= 0:
belt_t.append( (
127.0/512 + np.cos(angle)*x/p.RAD_HIGH*105/512,
(512-135.0)/512 + np.sin(angle)*x/p.RAD_HIGH*105/512) )
else:
belt_t.append( (
382.0/512 + np.cos(angle)*x/p.RAD_HIGH*125/512,
(512-380.0)/512 + np.sin(angle)*x/p.RAD_HIGH*125/512) )
contour.belt(obj, belt_v, belt_n, belt_t)
contour.finish(obj)