Python Tutorials | (back to the list of tutorials) |
add_library('igeo') size( 480, 360, IG.GL ) #IG.open("surface1.3dm") #input geometry from 3dm file IG.open("surface1.obj") #input geometry from OBJ file surfs = IG.surfaces() for surf in surfs : unum = 8 vnum = 8 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum) : for j in range(vnum) : pt11 = surf.pt( i*uinc, j*vinc ) pt21 = surf.pt( (i+1)*uinc, j*vinc ) pt12 = surf.pt( i*uinc, (j+1)*vinc ) pt22 = surf.pt( (i+1)*uinc, (j+1)*vinc ) ISurface(pt11, pt21, pt22, pt12).clr(i*uinc,j*vinc,0) surf.del()
add_library('igeo') size( 480, 360, IG.GL ) #IG.open("surface1.3dm") #input geometry from 3dm file IG.open("surface1.obj") #input geometry from OBJ file surfs = IG.surfaces() for surf in surfs : unum = 8 vnum = 8 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum) : for j in range(vnum) : pt11 = surf.pt( i*uinc, j*vinc ) pt21 = surf.pt( (i+1)*uinc, j*vinc ) pt12 = surf.pt( i*uinc, (j+1)*vinc ) pt22 = surf.pt( (i+1)*uinc, (j+1)*vinc ) ISurface(pt11, pt21, pt22).clr(i*uinc,0,j*vinc) ISurface(pt22, pt12, pt11).clr(1-i*uinc) surf.del()
You can alternate the diagonal line by changing the sequence of points to create triangular surfaces.
add_library('igeo') size( 480, 360, IG.GL ) #IG.open("surface1.3dm") #input geometry from 3dm file IG.open("surface1.obj") #input geometry from OBJ file surfs = IG.surfaces() for surf in surfs : unum = 8 vnum = 8 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum) : for j in range(vnum) : pt11 = surf.pt( i*uinc, j*vinc ) pt21 = surf.pt( (i+1)*uinc, j*vinc ) pt12 = surf.pt( i*uinc, (j+1)*vinc ) pt22 = surf.pt( (i+1)*uinc, (j+1)*vinc ) ISurface(pt11, pt21, pt12).clr(0,i*uinc,j*vinc) ISurface(pt12, pt21, pt22).clr(1-i*uinc) surf.del()
add_library('igeo') size( 480, 360, IG.GL ) #IG.open("surface1.3dm") #input geometry from 3dm file IG.open("surface1.obj") #input geometry from OBJ file surfs = IG.surfaces() for surf in surfs : unum = 8 vnum = 8 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum) : for j in range(vnum) : if (i+j)%2 == 0 : pt1 = surf.pt( i*uinc, j*vinc ) pt2 = surf.pt( (i+1)*uinc, (j-1)*vinc ) pt3 = surf.pt( (i+1)*uinc, (j+1)*vinc ) ISurface(pt1, pt2, pt3).clr(0,i*uinc,j*vinc) else : pt1 = surf.pt( (i+1)*uinc, j*vinc ) pt2 = surf.pt( i*uinc, (j+1)*vinc ) pt3 = surf.pt( i*uinc, (j-1)*vinc ) ISurface(pt1, pt2, pt3).clr(1-i*uinc) surf.del()
To have clear edge and corner condition to fill the original rectangular area of the input surface, you use if conditions to create filling geometries at the corners and the edges.
add_library('igeo') size( 480, 360, IG.GL ) #IG.open("surface1.3dm") #input geometry from 3dm file IG.open("surface1.obj") #input geometry from OBJ file surfs = IG.surfaces() for surf in surfs : unum = 8 vnum = 8 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum) : for j in range(vnum) : if (i+j)%2 == 0 : pt1 = surf.pt( i*uinc, j*vinc ) if j > 0 : pt2 = surf.pt( (i+1)*uinc, (j-1)*vinc ) else : pt2 = surf.pt( (i+1)*uinc, j*vinc ) if j < vnum-1 : pt3 = surf.pt( (i+1)*uinc, (j+1)*vinc ) else : pt3 = surf.pt( (i+1)*uinc, j*vinc ) ISurface(pt1, pt2, pt3).clr(1,i*uinc,j*vinc) else : pt1 = surf.pt( (i+1)*uinc, j*vinc ) if j < vnum-1 : pt2 = surf.pt( i*uinc, (j+1)*vinc ) else : pt2 = surf.pt( i*uinc, j*vinc ) if j > 0 : pt3 = surf.pt( i*uinc, (j-1)*vinc ) else : pt3 = surf.pt( i*uinc, j*vinc ) ISurface(pt1, pt2, pt3).clr(1-i*uinc) surf.del()
add_library('igeo') size( 480, 360, IG.GL ) #IG.open("surface1.3dm") #input geometry from 3dm file IG.open("surface1.obj") #input geometry from OBJ file surfs = IG.surfaces() for surf in surfs : unum = 10 vnum = 10 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum+1) : for j in range(vnum) : if (i+j)%2 == 0 : pt1 = surf.pt( (i-1)*uinc, j*vinc ) pt2 = surf.pt( i*uinc, (j-1)*vinc ) pt3 = surf.pt( (i+1)*uinc, j*vinc ) pt4 = surf.pt( i*uinc, (j+1)*vinc ) ISurface(pt1, pt2, pt3, pt4).clr(.5,i*uinc,j*vinc) surf.del()
To have rectangular corners and edges, you use if conditions to create filling triangular surfaces.
add_library('igeo') size( 480, 360, IG.GL ) #IG.open("surface1.3dm") #input geometry from 3dm file IG.open("surface1.obj") #input geometry from OBJ file surfs = IG.surfaces() for surf in surfs : unum = 10 vnum = 10 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum+1) : for j in range(vnum) : if (i+j)%2 == 0 : if i > 0 : pt1 = surf.pt( (i-1)*uinc, j*vinc ) else : pt1 = surf.pt( i*uinc, j*vinc ) if i < unum : pt3 = surf.pt( (i+1)*uinc, j*vinc ) else : pt3 = surf.pt( i*uinc, j*vinc ) if j > 0 : pt2 = surf.pt( i*uinc, (j-1)*vinc ) else : pt2 = surf.pt( i*uinc, j*vinc ) if j< vnum-1 : pt4 = surf.pt( i*uinc, (j+1)*vinc ) else : pt4 = surf.pt( i*uinc, j*vinc ) ISurface(pt1, pt2, pt3, pt4).clr(i*uinc,j*vinc,.5) surf.del()