def generate_plate()

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)