def xfrac(idx): theta = (idx * dt) % twopi frac = theta / twopi return frac for i in range(n + 1): tc0.append(xfrac(i)) tc1.append(1.0) tc0.append(xfrac(i)) tc1.append(0.0) tc0.append(xfrac(i + 1)) tc1.append(0.0) tc0.append(xfrac(i)) tc1.append(1.0) tc = np.array((tc0, tc1)).T wc = cyl.texcoord2worldcoord(tc) if 1: fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot( wc[:, 0], wc[:, 1], wc[:, 2], ) ax.set_xlabel('x') ax.set_ylabel('y') ax.set_zlabel('z') fig.savefig('cyl.svg')
cyl = Cylinder(base=vec3(0,0,0), axis=vec3(0,0,1), radius=0.5) tc0 = [] tc1 = [] n = 32 twopi = 2*np.pi dt = twopi/n def xfrac(idx): theta = (idx*dt)%twopi frac = theta/twopi return frac for i in range(n+1): tc0.append( xfrac(i) ); tc1.append( 1.0 ) tc0.append( xfrac(i) ); tc1.append( 0.0 ) tc0.append( xfrac(i+1) ); tc1.append( 0.0 ) tc0.append( xfrac(i) ); tc1.append( 1.0 ) tc = np.array( (tc0, tc1) ).T wc = cyl.texcoord2worldcoord(tc) if 1: fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot( wc[:,0], wc[:,1], wc[:,2], ) ax.set_xlabel('x') ax.set_ylabel('y') ax.set_zlabel('z') fig.savefig('cyl.svg')
v3, faces = generate_text_cube() observer_pos_all = np.repeat(observer_pos, v3.shape[1], axis=1) wc = cyl.get_first_surface(observer_pos_all.T, v3.T) tc = cyl.worldcoord2texcoord(wc) elif mode == 'edge': observer_pos_all = np.repeat(observer_pos, verts_world1.shape[1], axis=1) wc = cyl.get_first_surface(observer_pos_all.T, verts_world1.T) tc = cyl.worldcoord2texcoord(wc) rez = 512 V, U = np.mgrid[0:1:rez * 1j, 0:1:rez * 1j] tc_grid = np.array([U.ravel(), V.ravel()]).T dense_geom = cyl.texcoord2worldcoord(tc_grid) diff = dense_geom - observer_pos[:, 0] #oVec = normalize(diff) oVec = diff oVec = diff + 1 geom_image = np.zeros((rez, rez, 3)) if 0: geom_image[:, :, 0].flat = diff[:, 0] geom_image[:, :, 1].flat = diff[:, 1] geom_image[:, :, 2].flat = diff[:, 2] elif 0: geom_image[:, :, 0].flat = U.flat geom_image[:, :, 1].flat = 0 geom_image[:, :, 2].flat = 0
mode = 'cubemap' if mode=='cubemap': v3, faces = generate_text_cube() observer_pos_all = np.repeat( observer_pos, v3.shape[1], axis=1) wc = cyl.get_first_surface( observer_pos_all.T, v3.T ) tc = cyl.worldcoord2texcoord( wc ) elif mode=='edge': observer_pos_all = np.repeat( observer_pos, verts_world1.shape[1], axis=1) wc = cyl.get_first_surface( observer_pos_all.T, verts_world1.T ) tc = cyl.worldcoord2texcoord( wc ) rez = 512 V,U = np.mgrid[0:1:rez*1j,0:1:rez*1j] tc_grid = np.array([U.ravel(),V.ravel()]).T dense_geom = cyl.texcoord2worldcoord(tc_grid) diff = dense_geom-observer_pos[:,0] #oVec = normalize(diff) oVec = diff oVec = diff+1 geom_image = np.zeros( (rez,rez,3) ) if 0: geom_image[:, :, 0].flat = diff[:,0] geom_image[:, :, 1].flat = diff[:,1] geom_image[:, :, 2].flat = diff[:,2] elif 0: geom_image[:, :, 0].flat = U.flat geom_image[:, :, 1].flat = 0 geom_image[:, :, 2].flat = 0