def rook(s, clr): rookbase = (-irit.surfprev( ( irit.ctlpt( irit.E2, 0.001, 0.55 ) + \ irit.ctlpt( irit.E2, 0.11, 0.55 ) + \ irit.ctlpt( irit.E2, 0.11, 0.63 ) + \ irit.ctlpt( irit.E2, 0.13, 0.63 ) + irit.cbspline( 3, irit.list( \ irit.ctlpt( irit.E2, 0.13, 0.53 ), \ irit.ctlpt( irit.E2, 0.05, 0.51 ), \ irit.ctlpt( irit.E2, 0.07, 0.29 ), \ irit.ctlpt( irit.E2, 0.18, 0.12 ), \ irit.ctlpt( irit.E2, 0.18, 0 ) ), irit.list( irit.KV_OPEN ) ) ) * irit.rx( 90 ) ) ) axs = irit.crefine( irit.creparam( irit.pcircle( ( 0, 0, 0 ), 1 ), 0, 1 ),\ 0, irit.list( 0.05, 0.1, 0.15, 0.2, 0.3, 0.35,\ 0.4, 0.45, 0.55, 0.6, 0.65, 0.7,\ 0.8, 0.85, 0.9, 0.95 ) ) scl = irit.cbspline( 2, irit.list( \ irit.ctlpt( irit.E2, 0, 0.01 ), \ irit.ctlpt( irit.E2, 0.5, 0.01 ), \ irit.ctlpt( irit.E2, 0.5, 1 ), \ irit.ctlpt( irit.E2, 1, 1 ), \ irit.ctlpt( irit.E2, 0, 0.01 ) ), irit.list( 0, 0, 0.7, 0.701, 1.999, 2,\ 3 ) ) scl = irit.creparam( scl + scl * irit.tx( 1 ) + scl * irit.tx( 2 ) + scl * irit.tx( 3 ) + scl * irit.tx( 4 ) + scl * irit.tx( 5 ) + \ irit.ctlpt( irit.E2, 6, 0.01 ), 0, 1 ) rookwall = irit.swpsclsrf( \ irit.ctlpt( irit.E2, (-0.08 ), 0 ) + \ irit.ctlpt( irit.E2, 0.08, 0 ) + \ irit.ctlpt( irit.E2, 0.08, 0.6 ) + \ irit.ctlpt( irit.E2, (-0.08 ), 0.6 ) + \ irit.ctlpt( irit.E2, (-0.08 ), 0 ), axs, scl, irit.point( 0, 0, 1 ), 2 ) * irit.sc( 0.12 ) * irit.tz( 0.63 ) irit.attrib(rookwall, "rgb", irit.GenStrObject("255,255,100")) irit.attrib(rookbase, "rgb", irit.GenStrObject(clr)) retval = irit.list(rookbase, rookwall) * irit.sc(s) return retval
def antantenna(): c = irit.pcircle((0, 0, 0), 0.03) * irit.ry(90) retval = (-irit.sfromcrvs( irit.list( c * irit.sy(1.4) * irit.rz(45) * irit.tx(0.1) * irit.ty((-0.15)), c * irit.rz(45) * irit.tx(0.2) * irit.ty(0.2), c * irit.sy(1.4) * irit.tx(0.3) * irit.ty(0.4), c * irit.rz((-55)) * irit.tx(0.4) * irit.ty(0.15), c * irit.sc(0.8) * irit.rz((-45)) * irit.tx(0.5) * irit.ty((-0.1)), c * irit.sc(0.65) * irit.rz((-45)) * irit.tx(0.58) * irit.ty( (-0.22)), c * irit.sc(0.001) * irit.rz((-45)) * irit.tx(0.58) * irit.ty( (-0.22))), 3, irit.KV_OPEN)) irit.attrib(retval, "rgb", irit.GenStrObject("255,50,50")) return retval
def skel2dcolor( prim1, prim2, prim3, eps, mzerotols, drawall, fname ): equapt = irit.skel2dint( prim1, prim2, prim3, 100, eps, 300, mzerotols ) if ( irit.SizeOf( equapt ) > 1 ): irit.printf( "%d solutions detected\n", irit.list( irit.SizeOf( equapt ) ) ) irit.color( equapt, irit.WHITE ) irit.adwidth( prim1, 2 ) irit.adwidth( prim2, 2 ) irit.adwidth( prim3, 2 ) tans = irit.nil( ) edges = irit.nil( ) circs = irit.nil( ) i = 1 while ( i <= irit.SizeOf( equapt ) ): e = irit.nth( equapt, i ) clrs = getrandomcolors( ) clr = irit.nth( clrs, 1 ) dclr = irit.nth( clrs, 2 ) d = irit.getattr( e, "prim1pos" ) irit.snoc( d, tans ) irit.snoc( setcolor( irit.coerce( irit.getattr( e, "prim1pos" ), irit.E2 ) + irit.coerce( e, irit.E2 ), dclr ), edges ) irit.snoc( irit.getattr( e, "prim2pos" ), tans ) irit.snoc( setcolor( irit.coerce( irit.getattr( e, "prim2pos" ), irit.E2 ) + irit.coerce( e, irit.E2 ), dclr ), edges ) irit.snoc( irit.getattr( e, "prim3pos" ), tans ) irit.snoc( setcolor( irit.coerce( irit.getattr( e, "prim3pos" ), irit.E2 ) + irit.coerce( e, irit.E2 ), dclr ), edges ) irit.snoc( setcolor( irit.pcircle( irit.Fetch3TupleObject(irit.coerce( e, irit.VECTOR_TYPE )), irit.dstptpt( d, e ) ), clr ), circs ) i = i + 1 irit.color( edges, irit.MAGENTA ) irit.color( tans, irit.GREEN ) if ( drawall ): all = irit.list( prim1, prim2, prim3, edges, tans, circs,\ equapt ) else: all = irit.list( prim1, prim2, prim3, circs ) if ( irit.SizeOf( irit.GenStrObject(fname) ) > 0 ): irit.save( fname, all ) irit.view( all, irit.ON )
ccrv = irit.compose(srf, crv) irit.color(ccrv, irit.CYAN) if (display == 1): irit.interact(irit.list(srf, crv, ccrv)) irit.save("cs2comps", irit.list(srf, crv, ccrv)) # ################################ srf = irit.sreparam( irit.surfprev( irit.ctlpt( irit.E3, 1, 0, (-1 ) ) + \ irit.ctlpt( irit.E3, 1, 0, 1 ) ), irit.COL, 0,\ 1 ) * irit.sc( 0.5 ) irit.color(srf, irit.MAGENTA) crv = irit.pcircle((0.45, 0.55, 0), 0.4) irit.color(crv, irit.YELLOW) ccrv = irit.compose(srf, crv) irit.color(ccrv, irit.CYAN) if (display == 1): irit.interact(irit.list(irit.GetAxes(), srf, crv, ccrv)) irit.save("cs3comps", irit.list(srf, crv, ccrv)) x = (-1.1) while (x <= 0.9): crv = irit.pcircle((x, 0.45, 0), 0.4) irit.color(crv, irit.YELLOW) ccrv = irit.compose(srf, crv)
irit.view(irit.list(irit.GetAxes(), c1, pt2, bisectcrv), irit.ON) t = t + 0.05 irit.save( "asect2d2", irit.list(c1, pt2, irit.calphasector(irit.list(c1, pt2), 0.1), irit.calphasector(irit.list(c1, pt2), 0.5), irit.calphasector(irit.list(c1, pt2), 1))) irit.pause() # ############################################################################ # # A point and a circle in the XY plane # c1 = irit.pcircle((0.3, 0.2, 0), 1.1) pt2 = irit.point((-0.5), 0.5, 0) c1 = irit.coerce(c1, irit.E2) irit.color(c1, irit.RED) irit.adwidth(c1, 3) irit.color(pt2, irit.RED) irit.adwidth(pt2, 3) t = 0 while (t <= 1.05): bisectcrv = irit.calphasector(irit.list(c1, pt2), t) irit.color(bisectcrv, irit.GREEN) irit.view(irit.list(irit.GetAxes(), c1, pt2, bisectcrv), irit.ON) t = t + 0.1
irit.pause() # Faster product using Bezier decomposition. iprod = irit.iritstate("bspprodmethod", irit.GenRealObject(0)) echosrc = irit.iritstate("echosource", irit.GenRealObject(0)) dlevel = irit.iritstate("dumplevel", irit.GenRealObject(256 + 1)) c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, (-1 ), 0.5, 2 ), \ irit.ctlpt( irit.E3, 0, 0, 2 ), \ irit.ctlpt( irit.E3, 1, (-1 ), 2 ), \ irit.ctlpt( irit.E3, 1, 1, 2 ) ) ) irit.attrib(c1, "width", irit.GenRealObject(0.02)) irit.attrib(c1, "color", irit.GenRealObject(14)) c2 = irit.pcircle((1, 2, 3), 1.25) c2 = irit.creparam(c2, 0, 1) irit.attrib(c2, "width", irit.GenRealObject(0.02)) irit.attrib(c2, "color", irit.GenRealObject(15)) s1 = irit.sbezier( irit.list( irit.list( irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 0.25, 1, 0.5 ), \ irit.ctlpt( irit.E3, 0.5, 0.25, 1 ) ), irit.list( \ irit.ctlpt( irit.E3, 0.5, (-1 ), 0 ), \ irit.ctlpt( irit.E3, 0.75, 0.25, 0.5 ), \ irit.ctlpt( irit.E3, 1, (-0.5 ), 1 ) ), irit.list( \ irit.ctlpt( irit.E3, 1, 0, 0 ), \ irit.ctlpt( irit.E3, 1.25, 1, 0.5 ), \ irit.ctlpt( irit.E3, 1.3, 0.25, 1 ) ) ) ) irit.attrib(s1, "color", irit.GenRealObject(7)) irit.attrib(s1, "rgb", irit.GenStrObject("244,164,96"))
s2 = irit.blhermite(c1, c2, d1, d2, csec1, n) irit.color(s2, irit.GREEN) s3 = irit.blhermite(c1, c2, d1, d2, csec2, n) irit.color(s3, irit.YELLOW) irit.save("blending1", irit.list(s1, s2, s3)) irit.interact(irit.list(irit.GetAxes(), s1, s2, s3)) # # Blend on a (polynomial approximation of a) sphere: # s = (-irit.surfprev( irit.cregion(irit.pcircle((0, 0, 0), 1), 0, 2) * irit.rx(90))) irit.attrprop(s, "u_resolution", irit.GenIntObject(3)) irit.attrprop(s, "v_resolution", irit.GenIntObject(3)) ds = irit.sderive(s, irit.ROW) c1 = (-irit.csurface(s, irit.ROW, 0.8)) c2 = (-irit.csurface(s, irit.ROW, 1.2)) d1 = (-irit.csurface(ds, irit.ROW, 0.8)) d2 = (-irit.csurface(ds, irit.ROW, 1.2)) s1 = irit.hermite(c1, c2, d1, d2) irit.color(s1, irit.RED) n = irit.csurface(s, irit.ROW, 1)
printtest("line", irit.isgeom(line, irit.GEOM_LINEAR, 1e-010), 1) line = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, 1, (-2 ) ), \ irit.ctlpt( irit.E3, 1, 2, (-2 ) ), \ irit.ctlpt( irit.E3, 4, 1, (-2 ) ) ) ) printtest("line", irit.isgeom(line, irit.GEOM_LINEAR, 1e-010), 0) # # Circle # printtest("circle", irit.isgeom(line, irit.GEOM_CIRCULAR, 0.001), 0) circ = irit.circle((0.1, 0.7, 3), math.pi) printtest("circle", irit.isgeom(circ, irit.GEOM_CIRCULAR, 1e-010), 1) pcirc = irit.pcircle((0.1, 0.7, 3), math.pi) printtest("circle", irit.isgeom(pcirc, irit.GEOM_CIRCULAR, 1e-010), 0) printtest("circle", irit.isgeom(pcirc, irit.GEOM_CIRCULAR, 0.01), 1) irit.free(circ) irit.free(pcirc) irit.free(line) # # Plane # pln = irit.ruledsrf( irit.ctlpt( irit.E3, 0, 0, 0 ) + \ irit.ctlpt( irit.E3, 1, 0, 0 ), \ irit.ctlpt( irit.E3, 0, 2, 0 ) + \ irit.ctlpt( irit.E3, 1, 1, 0 ) ) printtest("plane", irit.isgeom(pln, irit.GEOM_PLANAR, 1e-010), 1)
irit.adwidth(c2, 3) bisectsrf = irit.cbisector3d(irit.list(c1, c2), 1) irit.color(bisectsrf, irit.GREEN) irit.interact(irit.list(c1, c2, bisectsrf)) irit.save("bisectr2", irit.list(c1, c2, bisectsrf)) # ############################################################################ # # A line and a (approximation of a) circle. # c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, 0, (-1 ) ), \ irit.ctlpt( irit.E3, 0, 0, 1 ) ) ) c2 = irit.pcircle((0, 0, 0), 1) irit.color(c1, irit.RED) irit.adwidth(c1, 3) irit.color(c2, irit.RED) irit.adwidth(c2, 3) bisectsrf = irit.cbisector3d(irit.list(c1, c2), 1) irit.color(bisectsrf, irit.GREEN) irit.interact(irit.list(c1, c2, bisectsrf)) irit.save("bisectr3", irit.list(c1, c2, bisectsrf)) # ############################################################################ # # A line and a (approximation of a) circle.
# view_mat3d = irit.rotx((-90)) * irit.roty(130) * irit.rotx((-35)) * irit.scale( (0.5, 0.5, 0.5)) * irit.trans((0, (-0.5), 0)) view_mat2d = irit.scale((0.1, 0.1, 0.1)) * irit.trans((0, (-0.8), 0)) cross = irit.creparam( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 0.7, 0, 0 ), \ irit.ctlpt( irit.E3, 0.7, 0, 0.06 ), \ irit.ctlpt( irit.E3, 0.1, 0, 0.1 ), \ irit.ctlpt( irit.E3, 0.1, 0, 0.6 ), \ irit.ctlpt( irit.E3, 0.6, 0, 0.6 ), \ irit.ctlpt( irit.E3, 0.8, 0, 0.8 ), \ irit.ctlpt( irit.E3, 0.8, 0, 1.4 ), \ irit.ctlpt( irit.E3, 0.6, 0, 1.6 ) ), irit.list( irit.KV_OPEN ) ), 0, 6 ) wglasssrf = irit.surfprev(cross * irit.scale((1.6, 1.6, 1.6))) circ1 = irit.pcircle((0, 0, 0), 0.4) circ2 = irit.pcircle((0, 0, 0), 0.2) wglass = irit.trimsrf( wglasssrf, irit.list(circ1 * irit.trans((0.5, 5, 0)), circ1 * irit.trans((1.5, 5, 0)), circ1 * irit.trans((2.5, 5, 0)), circ1 * irit.trans((3.5, 5, 0)), circ2 * irit.trans((0.5, 1, 0)), circ2 * irit.trans((1.5, 1, 0)), circ2 * irit.trans((2.5, 1, 0)), circ2 * irit.trans( (3.5, 1, 0))), 0) irit.color(wglass, irit.YELLOW) irit.interact(irit.list(view_mat3d, wglass)) wgl_prisa = irit.prisa(wglass, samppercrv, (-0.1), irit.COL, (0, 0.25, 0), 0)
# tv2d = irit.tderive(tv2, irit.COL) irit.interact(tv2d) tv2d = irit.tderive(tv2, irit.ROW) irit.interact(tv2d) tv2d = irit.tderive(tv2, irit.DEPTH) irit.interact(tv2d) irit.save("trivar10", irit.list(tv2d)) irit.free(tv2d) # # Constructing via Ruled TV # s1 = irit.boolone(irit.pcircle((0, 0, 0), 1)) s2 = irit.boolone(irit.pcircle((0, 0, 1), 0.5)) irit.color(s1, irit.RED) irit.attrib(s1, "adwidth", irit.GenRealObject(3)) irit.color(s2, irit.RED) irit.attrib(s2, "adwidth", irit.GenRealObject(3)) tv1 = irit.ruledtv(s1, s2) irit.interact(irit.list(tv1, s1, s2)) # # Constructing via Extrusion # tv2 = irit.extrude(s1, (0, 1, 0.5), 0)
def queen(s, clr): queenbase = (-irit.surfprev( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E2, 0.001, 1.01 ), \ irit.ctlpt( irit.E2, 0.02, 1.01 ), \ irit.ctlpt( irit.E2, 0.02, 0.972 ), \ irit.ctlpt( irit.E2, 0.01, 0.972 ), \ irit.ctlpt( irit.E2, 0.01, 0.97 ), \ irit.ctlpt( irit.E2, 0.09, 0.96 ), \ irit.ctlpt( irit.E2, 0.1, 0.912 ), \ irit.ctlpt( irit.E2, 0.1, 0.911 ), \ irit.ctlpt( irit.E2, 0.12, 0.911 ), \ irit.ctlpt( irit.E2, 0.12, 0.91 ), \ irit.ctlpt( irit.E2, 0.09, 0.84 ), \ irit.ctlpt( irit.E2, 0.07, 0.76 ), \ irit.ctlpt( irit.E2, 0.07, 0.74 ), \ irit.ctlpt( irit.E2, 0.085, 0.74 ), \ irit.ctlpt( irit.E2, 0.085, 0.72 ), \ irit.ctlpt( irit.E2, 0.07, 0.72 ), \ irit.ctlpt( irit.E2, 0.07, 0.7 ), \ irit.ctlpt( irit.E2, 0.1, 0.68 ), \ irit.ctlpt( irit.E2, 0.1, 0.66 ), \ irit.ctlpt( irit.E2, 0.14, 0.64 ), \ irit.ctlpt( irit.E2, 0.14, 0.62 ), \ irit.ctlpt( irit.E2, 0.06, 0.57 ), \ irit.ctlpt( irit.E2, 0.09, 0.33 ), \ irit.ctlpt( irit.E2, 0.21, 0.14 ), \ irit.ctlpt( irit.E2, 0.21, 0 ) ), irit.list( irit.KV_OPEN ) ) * irit.rx( 90 ) ) ) queencrwn = (-irit.swpsclsrf( \ irit.ctlpt( irit.E2, (-0.1 ), 0 ) + \ irit.ctlpt( irit.E2, 0.1, 0 ) + \ irit.ctlpt( irit.E2, (-0.42 ), (-0.7 ) ) + \ irit.ctlpt( irit.E2, (-0.44 ), (-0.7 ) ) + \ irit.ctlpt( irit.E2, (-0.1 ), 0 ), irit.pcircle( ( 0, 0, 0 ), 1 ), irit.creparam( irit.coerce( irit.cbspline( 3, irit.list( \ irit.ctlpt( irit.E2, 0, (-0.3 ) ), \ irit.ctlpt( irit.E2, 1, 1.5 ), \ irit.ctlpt( irit.E2, 2, (-0.3 ) ), \ irit.ctlpt( irit.E2, 3, 1.5 ), \ irit.ctlpt( irit.E2, 4, (-0.3 ) ), \ irit.ctlpt( irit.E2, 5, 1.5 ), \ irit.ctlpt( irit.E2, 6, (-0.3 ) ), \ irit.ctlpt( irit.E2, 7, 1.5 ), \ irit.ctlpt( irit.E2, 8, (-0.3 ) ), \ irit.ctlpt( irit.E2, 9, 1.5 ), \ irit.ctlpt( irit.E2, 10, (-0.3 ) ), \ irit.ctlpt( irit.E2, 11, 1.5 ) ), irit.list( irit.KV_PERIODIC ) ), irit.KV_OPEN ), 0, 1 ), irit.point( 0, 0, (-1 ) ), 2 ) ) * irit.sc( 0.11 ) * irit.tz( 0.911 ) irit.attrib(queencrwn, "rgb", irit.GenStrObject("255,255,100")) irit.attrib(queenbase, "rgb", irit.GenStrObject(clr)) retval = irit.list(queenbase, queencrwn) * irit.sc(s) return retval
irit.ctlpt( irit.E2, 0.6, 0.75 ), \ irit.ctlpt( irit.E2, 0.6, 0.9 ), \ irit.ctlpt( irit.E2, 0.4, 0.9 ), \ irit.ctlpt( irit.E2, 0.4, 0.75 ), \ irit.ctlpt( irit.E2, 0.2, 0.75 ), \ irit.ctlpt( irit.E2, 0.2, 0.25 ), \ irit.ctlpt( irit.E2, 0.5, 0.25 ) ), irit.list( irit.KV_OPEN ) ) tsrf1 = irit.trimsrf(srf1, tcrv1, 0) irit.attrib(tsrf1, "resolution", irit.GenIntObject(2)) crv1 = irit.compose(srf1, tcrv1) irit.free(srf1) irit.free(tcrv1) irit.color(crv1, irit.GREEN) pc = irit.crefine(irit.pcircle(((-1.7), (-1), 1), 0.4), 0, irit.list(1, 2, 3)) srf2 = irit.ruledsrf( irit.ceditpt( irit.ceditpt( pc, irit.ctlpt( irit.E3, (-2.1 ), (-1 ), 1.2 ), 9 ), \ irit.ctlpt( irit.E3, (-1.3 ), (-1 ), 1.2 ), 3 ), pc * irit.tz( 1 ) ) * irit.rotz( (-90 ) ) * irit.trans( ( 2.7, (-0.7 ), 0 ) ) crv2 = irit.csurface(srf2, irit.ROW, 0) irit.color(crv2, irit.GREEN) irit.free(pc) tan1 = irit.symbdiff( crv1 * irit.scale((0.6, 0.4, 1)) * irit.trans((0.7, 0.6, 0)), crv1) tan2 = irit.pcircle((0, 0, 3), 0) blend = irit.hermite(crv1, (-crv2), tan1 * irit.sc(1), (-tan2) * irit.sc(1)) irit.color(blend, irit.RED) irit.attrib(blend, "width", irit.GenRealObject(0.02)) all = irit.list(blend, tsrf1, (-srf2))
crv6 = crv1 * irit.rz(260) crv7 = crv1 * irit.rz(310) crvs = irit.list( crv1, crv2, crv3, crv4, crv5, crv6,\ crv7 ) irit.view(irit.list(irit.GetViewMatrix(), crvs), irit.ON) tris = raytraptris(crvs, 0.001, 1e-010) irit.interact(irit.list(crvs, tris)) irit.save("raytrap2", irit.list(crvs, tris)) # ############################################################################ crv1 = irit.pcircle(((-0.75), (-0.75), 0), 0.5) crv2 = crv1 * irit.sc(1.5) * irit.tx(2) crv3 = crv1 * irit.sc(0.5) * irit.tx(0.2) * irit.ty(0.6) crvs = irit.list(crv1, crv2, crv3) irit.view(irit.list(crvs), irit.ON) tris = raytraptris(crvs, 0.001, (-1e-010)) irit.interact(irit.list(crvs, tris)) irit.save("raytrap3", irit.list(crvs, tris)) # ############################################################################ crv1 = irit.pcircle(((-0.75), (-0.75), 0), 0.5) crv2 = crv1 * irit.sc(0.75) * irit.tx(2) crv3 = crv1 * irit.sc(0.75) * irit.tx(2) * irit.ty(2) crv4 = crv1 * irit.sc(0.5) * irit.tx((-0.5)) * irit.ty(1.6)
dc = irit.cderive(c) retval = (irit.ctangent(c, 0, 0) == irit.coerce(irit.ceval( dc, 0), irit.VECTOR_TYPE)) & (irit.ctangent(c, 0.1, 0) == irit.coerce( irit.ceval(dc, 0.1), irit.VECTOR_TYPE)) & (irit.ctangent(c, 0.3, 0) == irit.coerce( irit.ceval(dc, 0.3), irit.VECTOR_TYPE)) & (irit.ctangent( c, 0.5, 0) == irit.coerce(irit.ceval( dc, 0.5), irit.VECTOR_TYPE)) & (irit.ctangent( c, 0.9, 0) == irit.coerce(irit.ceval( dc, 0.9), irit.VECTOR_TYPE)) & (irit.ctangent( c, 1, 0) == irit.coerce( irit.ceval(dc, 1), irit.VECTOR_TYPE)) return retval irit.printf( "tangent evaluations for\n\trational - %d\n\tpolynomial - %d\n", irit.list( checktangenteval( irit.creparam( irit.circle( ( 0, 0, 0 ), 1 ), 0, 1 ) ),\ checktangenteval( irit.creparam( irit.pcircle( ( 0, 0, 0 ), 1 ), 0, 1 ) ) ) ) z = irit.iritstate("cmpobjeps", z) irit.free(z) # # # Surface and Curve normals. # irit.save( "bspline4", irit.list(irit.cnormal(cb, 0), irit.cnormal(cb, 0.1), irit.cnormal(cb, 0.3), irit.cnormal(cb, 0.5), irit.cnormal(cb, 0.9), irit.cnormal(cb, 1), irit.snormal(sb, 1, 3),
import math import irit # # # A cork blug. # # Gershon Elber, Dec 1999 # # Can you compute the volume of this thing!? # save_mat = irit.GetViewMatrix() irit.SetViewMatrix(irit.sc(0.4)) cork = irit.ruledsrf(irit.pcircle((0, 0, 0), 1), irit.pcircle((0, 0, 0), 1) * irit.sx(0) * irit.tz(2)) irit.interact( irit.list( irit.GetViewMatrix(), cork * irit.rx((-90)) * irit.tx((-1.2)) * irit.ty(0.4), cork * irit.tx((-1.2)) * irit.ty((-1.2)), cork * irit.rx((-90)) * irit.ry(90) * irit.tx(1.2) * irit.ty(0.4), cork * save_mat * irit.tx(1.2) * irit.ty((-1.8)))) irit.save("corkplug", cork) corkcross = irit.nth(irit.prisa(cork, 256, 1, irit.COL, (0, 0, 0), 1), 1) irit.color(corkcross, irit.MAGENTA)
irit.coerce(kn, irit.VECTOR_TYPE) * irit.coerce(kn, irit.VECTOR_TYPE))) k2 = irit.FetchRealObject(irit.ccrvtreval(c, t)) if (abs(k1 - k2) > 1e-05): irit.printf( "mismatch in curve curvature evaluation (%.13f vs. %.13f)\n", irit.list(k1, k2)) t = t + dt c = irit.circle((0, 0, 0), 2) comparecurvaturecrvevals(c) comparecurvaturecrvevals(irit.creparam(c, 0, 1000)) comparecurvaturecrvevals(irit.creparam(c, 0, 0.001)) c = irit.pcircle((0, 0, 0), 0.5) comparecurvaturecrvevals(c) comparecurvaturecrvevals(irit.creparam(c, 0, 1000)) comparecurvaturecrvevals(irit.creparam(c, 0, 0.001)) c = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E3, (-0.168 ), 0.794, 0 ), \ irit.ctlpt( irit.E2, (-0.118 ), 0.637 ), \ irit.ctlpt( irit.E2, 0.071, 0.771 ), \ irit.ctlpt( irit.E2, 0.237, 0.691 ), \ irit.ctlpt( irit.E2, (-0.091 ), 0.452 ), \ irit.ctlpt( irit.E2, 0.134, 0.039 ), \ irit.ctlpt( irit.E2, 0.489, 0.223 ), \ irit.ctlpt( irit.E2, 0.39, 0.439 ), \ irit.ctlpt( irit.E2, 0.165, 0.187 ), \ irit.ctlpt( irit.E2, 0.111, 0.439 ), \ irit.ctlpt( irit.E2, 0.313, 0.529 ), \
irit.ctlpt( irit.E2, 0.423, (-0.00924 ) ), \ irit.ctlpt( irit.E2, 0.198, (-0.192 ) ), \ irit.ctlpt( irit.E2, 0.263, 0.376 ), \ irit.ctlpt( irit.E2, 0.432, 0.478 ), \ irit.ctlpt( irit.E2, 0.521, (-0.0762 ) ) ), irit.list( irit.KV_OPEN ) ) irit.color( c4, irit.MAGENTA ) c4a = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E3, 0.53, 0.35, (-0.3 ) ), \ irit.ctlpt( irit.E3, 0.423, (-0.01 ), 0.3 ), \ irit.ctlpt( irit.E3, 0.198, (-0.19 ), 0.4 ), \ irit.ctlpt( irit.E3, 0.263, 0.38, (-0.2 ) ), \ irit.ctlpt( irit.E3, 0.432, 0.48, (-0.3 ) ), \ irit.ctlpt( irit.E3, 0.521, (-0.08 ), 0.4 ) ), irit.list( irit.KV_OPEN ) ) irit.color( c4a, irit.MAGENTA ) c5 = irit.pcircle( ( 0, 0, 0 ), 0.2 ) irit.color( c5, irit.GREEN ) pts = irit.nil( ) i = 0 while ( i <= 20 ): irit.snoc( irit.point( math.cos( 2 * math.pi * i/20 ) + irit.random( (-0.1 ), 0.1 ), \ math.sin( 2 * math.pi * i/20 ) + irit.random( (-0.1 ), 0.1 ), \ irit.random( (-0.1 ), 0.1 ) ), \ pts ) i = i + 1 c6 = irit.cbspline( 3, pts, irit.list( irit.KV_PERIODIC ) ) irit.free( pts ) c6 = irit.coerce( c6, irit.KV_OPEN ) irit.color( c6, irit.RED )
d = irit.duality(irit.coerce(c, irit.KV_OPEN)) irit.color(d, irit.YELLOW) irit.interact(irit.list(c, d)) # # An exact circle # c = irit.circle((0, 0, 0), 1.1) d = irit.duality(irit.coerce(c, irit.KV_OPEN)) irit.color(d, irit.YELLOW) irit.interact(irit.list(c, d, irit.GetAxes())) c1 = irit.pcircle((0, 0, 0), 1.1) d1 = irit.duality(irit.coerce(c1, irit.KV_OPEN)) irit.color(d1, irit.YELLOW) irit.interact(irit.list(c, d, c1, d1, irit.GetAxes())) # # A piecewise linear curve # c = irit.cbspline( 2, irit.list( irit.ctlpt( irit.E2, (-0.227 ), 0.243 ), \ irit.ctlpt( irit.E2, (-0.0522 ), 0.203 ), \ irit.ctlpt( irit.E2, (-0.151 ), (-0.0858 ) ), \ irit.ctlpt( irit.E2, (-0.142 ), (-0.219 ) ), \ irit.ctlpt( irit.E2, (-0.00121 ), (-0.288 ) ), \ irit.ctlpt( irit.E2, 0.125, (-0.21 ) ), \ irit.ctlpt( irit.E2, 0.143, (-0.0708 ) ), \
all = irit.list(irit.GetAxes() * irit.sc(1.1), reflectlns, rf, s) irit.interact(all) irit.attrib( s, "rflctlines", irit.list((0, 0, 1), irit.list(((-3), 2, 0), ((-1.5), 2, 0), irit.point(0, 2, 0), irit.point(1.5, 2, 0), irit.point(3, 2, 0)))) all = irit.list(reflectlns, s) irit.interact(all) irit.save("rflct2ln", all) # ############################################################################ s = irit.surfprev(irit.cregion(irit.pcircle((0, 0, 0), 1), 1, 3) * irit.ry(90)) irit.color(s, irit.MAGENTA) reflectlns = irit.nil() x = (-3) while (x <= 3): irit.snoc( irit.ctlpt( irit.E3, x, 2, (-10 ) ) + \ irit.ctlpt( irit.E3, x, 2, 10 ), reflectlns ) x = x + 1.5 irit.color(reflectlns, irit.CYAN) irit.adwidth(reflectlns, 2) irit.SetResolution(2) rf = irit.rflctln( s, (0, 0, 1), irit.list(
if ( irit.dstptpt( irit.coerce( pt1, irit.POINT_TYPE ), irit.coerce( pt2, irit.POINT_TYPE ) ) > diam ): diam = irit.dstptpt( irit.coerce( pt1, irit.POINT_TYPE ), irit.coerce( pt2, irit.POINT_TYPE ) ) diamline = pt1 + pt2 irit.snoc( irit.list( pt1 + pt2, pt1 * irit.tx( 0 ), pt2 * irit.tx( 0 ) ), retval ) i = i + 1 irit.color( retval, irit.YELLOW ) irit.color( diamline, irit.CYAN ) irit.adwidth( diamline, 3 ) irit.snoc( irit.list( diamline ), retval ) return retval # ############################################################################ c1 = irit.pcircle( ( 0.1, 0.2, 0.3 ), 0.7 ) * irit.sy( 0.5 ) apline1 = evalantipodalptsoncrv( c1 ) irit.interact( irit.list( irit.GetAxes(), apline1, c1 ) ) c2 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0.707, 0.304 ), \ irit.ctlpt( irit.E2, 0.317, (-0.1 ) ), \ irit.ctlpt( irit.E2, (-0.052 ), 0.147 ), \ irit.ctlpt( irit.E2, (-0.159 ), 0.682 ), \ irit.ctlpt( irit.E2, (-0.592 ), 0.039 ), \ irit.ctlpt( irit.E2, (-0.646 ), (-0.254 ) ), \ irit.ctlpt( irit.E2, (-0.313 ), (-0.532 ) ), \ irit.ctlpt( irit.E2, (-0.568 ), (-0.145 ) ), \ irit.ctlpt( irit.E2, (-0.402 ), 0.336 ), \ irit.ctlpt( irit.E2, (-0.272 ), 0.134 ), \
irit.SetResolution(50) bisectcrv = irit.contour(bisectsrf, irit.plane(0, 0, 1, epsilon)) irit.color(bisectcrv, irit.GREEN) irit.adwidth(bisectcrv, 3) irit.interact(irit.list(irit.GetAxes(), c1, c2, bisectcrv, bisectsrf)) irit.save("cbisect2a", irit.list(c1, c2, bisectcrv, bisectsrf)) # ############################################################################ # # A line and a (approximation of a) circle. # c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E2, 0, (-1 ) ), \ irit.ctlpt( irit.E2, 0, 1 ) ) ) c2 = irit.coerce( irit.creparam( irit.pcircle( ( 0, 0, 0 ), 1 ), 0, 1 ),\ irit.E2 ) irit.color(c1, irit.YELLOW) irit.color(c2, irit.YELLOW) irit.adwidth(c1, 3) irit.adwidth(c2, 3) bisectsrf = irit.cbisector3d(irit.list(c1, c2), 4) * irit.sz(0.1) irit.color(bisectsrf, irit.RED) irit.SetResolution(150) bisectcrv = irit.contour(bisectsrf, irit.plane(0, 0, 1, epsilon)) irit.color(bisectcrv, irit.GREEN) irit.adwidth(bisectcrv, 3) irit.interact(irit.list(c1, c2, bisectcrv, bisectsrf))
def antbody(): save_res = irit.GetResolution() c = irit.pcircle((0, 0, 0), 1) body = (-irit.sfromcrvs( irit.list( c * irit.sc(1e-006) * irit.ty((-0.1)) * irit.tz(0.19), c * irit.sy(0.8) * irit.sc(0.07) * irit.ty((-0.1)) * irit.tz(0.19), c * irit.sy(0.8) * irit.sc(0.11) * irit.ty((-0.1)) * irit.tz(0.21), c * irit.sy(0.8) * irit.sc(0.14) * irit.ty((-0.1)) * irit.tz(0.23), c * irit.sy(0.8) * irit.sc(0.14) * irit.ty((-0.1)) * irit.tz(0.26), c * irit.sy(0.8) * irit.sc(0.11) * irit.ty((-0.1)) * irit.tz(0.28), c * irit.sy(0.8) * irit.sc(0.11) * irit.ty((-0.1)) * irit.tz(0.29), c * irit.sy(0.8) * irit.sc(0.24) * irit.ty( (-0.05)) * irit.tz(0.31), c * irit.sy(0.8) * irit.sc(0.27) * irit.ty( (-0.05)) * irit.tz(0.41), c * irit.sy(0.8) * irit.sc(0.19) * irit.ty( (-0.05)) * irit.tz(0.44), c * irit.sy(0.8) * irit.sc(0.19) * irit.ty( (-0.05)) * irit.tz(0.45), c * irit.sy(0.8) * irit.sc(0.3) * irit.ty( (-0.035)) * irit.tz(0.47), c * irit.sy(0.8) * irit.sc(0.32) * irit.ty( (-0.035)) * irit.tz(0.59), c * irit.sy(0.8) * irit.sc(0.24) * irit.ty( (-0.035)) * irit.tz(0.62), c * irit.sy(0.8) * irit.sc(0.24) * irit.ty( (-0.035)) * irit.tz(0.63), c * irit.sy(0.8) * irit.sc(0.3) * irit.ty((-0.03)) * irit.tz(0.65), c * irit.sy(0.8) * irit.sc(0.28) * irit.ty( (-0.03)) * irit.tz(0.76), c * irit.sy(0.8) * irit.sc(0.07) * irit.ty((-0.1)) * irit.tz(0.85), c * irit.sy(0.8) * irit.sc(0.07) * irit.ty((-0.1)) * irit.tz(0.87), c * irit.sy(0.8) * irit.sc(0.18) * irit.ty((-0.1)) * irit.tz(0.93), c * irit.sy(0.8) * irit.sc(0.18) * irit.ty((-0.1)) * irit.tz(1.03), c * irit.sy(0.8) * irit.sc(0.07) * irit.ty((-0.1)) * irit.tz(1.1), c * irit.sy(0.8) * irit.sc(0.07) * irit.ty((-0.1)) * irit.tz(1.12), c * irit.sy(0.8) * irit.sc(0.18) * irit.ty( (-0.06)) * irit.tz(1.18), c * irit.sy(0.8) * irit.sc(0.18) * irit.ty( (-0.03)) * irit.tz(1.32), c * irit.sy(0.8) * irit.sc(0.07) * irit.ty((-0)) * irit.tz(1.41), c * irit.sy(0.8) * irit.sc(0.07) * irit.ty((-0)) * irit.tz(1.43), c * irit.sy(0.8) * irit.sc(0.22) * irit.ty(0.05) * irit.tz(1.5), c * irit.sy(0.8) * irit.sc(0.2) * irit.ty((-0)) * irit.tz(1.66), c * irit.sy(0.8) * irit.sc(0.05) * irit.ty( (-0.22)) * irit.tz(1.85), c * irit.sy(0.8) * irit.sc(1e-006) * irit.ty( (-0.22)) * irit.tz(1.86)), 3, irit.KV_OPEN)) irit.SetResolution(15) eye1 = irit.sphere((0, 0, 0), 0.08) * irit.rx(20) * irit.ry( (-20)) * irit.trans((0.15, 0.05, 1.59)) eye2 = eye1 * irit.sx((-1)) irit.SetResolution(20) bodycut = body / eye1 ^ eye2 irit.attrib(bodycut, "rgb", irit.GenStrObject("255,50,50")) eye1cut = eye1 / body irit.attrib(eye1cut, "reflection", irit.GenStrObject("0.85")) irit.attrib(eye1cut, "rgb", irit.GenStrObject("15,15,15")) eye2cut = eye2 / body irit.attrib(eye2cut, "reflection", irit.GenStrObject("0.85")) irit.attrib(eye2cut, "rgb", irit.GenStrObject("15,15,15")) irit.SetResolution(save_res) retval = irit.list(bodycut, irit.list(eye1cut, eye2cut)) return retval
c1 = irit.cinterp(pl1, 3, 50, irit.GenIntObject(irit.PARAM_UNIFORM), 0) c2 = irit.coerce(c1, irit.E3) c1r1 = irit.knotremove(c1, 0.01) irit.printf("size of c1 is %d and c1r1 is %d\n", irit.list(irit.SizeOf(c1), irit.SizeOf(c1r1))) c1r2 = irit.coerce(c1r1, irit.E3) irit.color(c1r2, irit.MAGENTA) irit.adwidth(c1r2, 3) irit.interact(irit.list(c1r2, c2)) irit.save("crv2rdc", irit.list(c1r2, c2)) # ############################################################################ c1 = irit.pcircle((0, 0, 0), 1) c1r1 = irit.crefine( c1, 0, irit.list( 0.1, 0.3, 0.7, 1.5, 1.7, 1.7,\ 1.7, 1.7, 2.3, 2.3, 2.7, 3.5,\ 3.5, 3.5 ) ) c1r2 = irit.knotclean(c1r1) irit.save("crv3rdc", irit.list(c1r2 == c1, c1r2)) # ############################################################################ c1 = irit.circle((0, 0, 0), 1) c1r1 = irit.crefine( c1, 0, irit.list( 0.1, 0.3, 0.7, 1.5, 1.7, 1.7,\ 1.7, 2.3, 2.3, 2.7, 3.5, 3.5,\ 3.5 ) ) c1r2 = irit.knotclean(c1r1)
a = (-2) while (a <= 0): pt = (a, 0, 0) c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, (-0.2 ), (-1 ) ), \ irit.ctlpt( irit.E3, 0, (-3.2 ), 0 ), \ irit.ctlpt( irit.E3, 0, (-0.2 ), 1 ) ) ) bisectsrf = irit.cbisector3d(irit.list(c1, pt), 0) display(c1, pt, bisectsrf) a = a + 0.005 * speed # ############################################################################ # # A cubic # circ = irit.pcircle((0, 0, 0), 1) * irit.rz(90) * irit.ry((-90)) irit.ffcompat(c1, circ) pt = (0, 0, 0) a = 0 while (a <= 1): c1x = irit.cmorph(c1, circ, 0, a) bisectsrf = irit.cbisector3d(irit.list(c1x, pt), 0) display(c1x, pt, bisectsrf) a = a + 0.01 * speed a = 0 while (a <= 0.9): pt = (0, a, 0) bisectsrf = irit.cbisector3d(irit.list(circ, pt), 0)
import math import irit # # # Examples of surface accessibility analysis. # # Gershon Elber, December 1999 # # ############################################################################ # # Plane surface - sphere check surface example. # c = irit.cregion(irit.pcircle((0, 0, 0), 1), 1, 3) * irit.ry(90) psphere = irit.surfprev(c) * irit.sc(0.3) * irit.tz(1) irit.color(psphere, irit.YELLOW) pln = irit.ruledsrf( irit.ctlpt( irit.E3, (-1 ), (-1 ), 0 ) + \ irit.ctlpt( irit.E3, (-1 ), 1, 0 ), \ irit.ctlpt( irit.E3, 1, (-1 ), 0 ) + \ irit.ctlpt( irit.E3, 1, 1, 0 ) ) irit.color(pln, irit.RED) pts = irit.saccess(pln, irit.GenRealObject(0), psphere, irit.GenRealObject(0), 0.1, 1e-005) spts = irit.nil() sptserr = irit.nil()
irit.save( "warp2trv", all ) # ############################################################################ # # Let the Genie come out of the teapot... # teapot = teapotorig * irit.sc( 0.2 ) * irit.sx( (-1 ) ) * irit.rx( 90 ) * irit.rz( 180 ) s = irit.planesrf( (-1 ), (-1 ), 1, 1 ) * irit.sc( 1.7 ) discs = irit.list( s * irit.sc( 0.01 ) * irit.sx( 2 ) * irit.tx( 0.58 ) * irit.tz( 0.42 ), s * irit.sc( 0.01 ) * irit.sx( 2 ) * irit.tx( 0.62 ) * irit.tz( 0.46 ), s * irit.sc( 0.05 ) * irit.sx( 1.5 ) * irit.tx( 0.65 ) * irit.tz( 0.55 ), s * irit.sc( 0.07 ) * irit.sx( 1.5 ) * irit.tx( 0.7 ) * irit.tz( 0.7 ), s * irit.sc( 0.09 ) * irit.sx( 1.5 ) * irit.tx( 0.65 ) * irit.tz( 0.85 ), s * irit.sc( 0.08 ) * irit.sx( 1.5 ) * irit.tx( 0.7 ) * irit.tz( 1 ), s * irit.sc( 0.07 ) * irit.tx( 0.7 ) * irit.tz( 1.1 ) ) tv = irit.tfromsrfs( discs, 3, irit.KV_OPEN ) # Create a refined cylinder to warp out of the teapot... c = irit.creparam( irit.pcircle( ( 0.5, 0.5, 0.001 ), 0.45 ), 0, 1 ) srf = irit.extrude( c, ( 0, 0, 0.99 ), 0 ) srf = irit.srefine( irit.srefine( srf, irit.COL, 0, irit.list( 0.1, 0.2, 0.3, 0.4, 0.6, 0.7,\ 0.8, 0.9 ) ), irit.ROW, 0, irit.list( 0.1, 0.2, 0.3, 0.4, 0.5, 0.6,\ 0.7, 0.8, 0.9 ) ) warpedsrf = warpsurface( (-srf ), tv ) irit.attrib( warpedsrf, "ptexture", irit.GenStrObject("g.gif" )) irit.view( irit.list( teapot, warpedsrf ), irit.ON ) irit.save( "warp3trv", all ) irit.pause() # ############################################################################ irit.SetViewMatrix( save_mat2)
irit.ctlpt( irit.E3, 0, (-0.1 ) - a, 0 ), \ irit.ctlpt( irit.E3, 0, (-0.1 ), 1 ) ) ) c2 = irit.cbezier( irit.list( \ irit.ctlpt( irit.E3, (-1 ), 0.1, 0 ), \ irit.ctlpt( irit.E3, 0, 2.1, 0 ), \ irit.ctlpt( irit.E3, 1, 0.1, 0 ) ) ) bisectsrf = irit.cbisector3d(irit.list(c1, c2), 1) display(c1, c2, bisectsrf) a = a + 0.02 * speed # ############################################################################ # # A line and a circle # circ = irit.creparam(irit.pcircle((0, 0, 0), 1), 0, 1) * irit.rz( (-90)) * irit.ry(180) irit.ffcompat(c2, circ) a = 0 while (a <= 1): c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, 0, (-1 ) ), \ irit.ctlpt( irit.E3, 0, 0, 1 ) ) ) c2x = irit.cmorph(c2, circ, 0, a) bisectsrf = irit.cbisector3d(irit.list(c1, c2x), 1) display(c1, c2x, bisectsrf) a = a + 0.01 * speed # ############################################################################ # # A line and a circle (again)
# # Case 5 # c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, (-1 ), (-1 ), (-1 ) ), \ irit.ctlpt( irit.E3, (-0.5 ), 8, (-1 ) ), \ irit.ctlpt( irit.E3, 0, (-15 ), (-1 ) ), \ irit.ctlpt( irit.E3, 0.5, 8, (-1 ) ), \ irit.ctlpt( irit.E3, 1, (-1 ), (-1 ) ) ) ) c2 = c1 * irit.sc(0.7) * irit.tz(1.7) r1 = irit.ruledsrf(c1, c2) irit.awidth(r1, 0.007) c1 = irit.pcircle((0, 0, 0), 0.3) * irit.tz(2) c2 = c1 * irit.sc(0.5) * irit.tz((-3)) r2 = irit.ruledsrf(c1, c2) * irit.ry(90) irit.awidth(r2, 0.007) c = irit.nth( irit.rrinter(irit.cmesh(r1, irit.ROW, 0), irit.cmesh(r1, irit.ROW, 1), irit.cmesh(r2, irit.ROW, 0), irit.cmesh(r2, irit.ROW, 1), 50, 0), 1) irit.color(c, irit.RED) irit.adwidth(c, 3) irit.awidth(c, 0.02) irit.attrib(c, "gray", irit.GenRealObject(0.5))
#This is an IRIT script and as such requires both math and irit import: # import math import irit # # # Simple knots. # # Gershon Elber, 1997 # cross = irit.pcircle((0, 0, 0), 0.1) crv1 = irit.coerce( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, (-1 ), 0.9, 0 ), \ irit.ctlpt( irit.E3, 1, 0.9, 0 ), \ irit.ctlpt( irit.E3, 1, (-0.9 ), 0 ), \ irit.ctlpt( irit.E3, (-1 ), (-0.9 ), 0 ) ), irit.list( irit.KV_PERIODIC ) ), irit.KV_OPEN ) srf1 = irit.swpsclsrf(cross, crv1, irit.GenIntObject(1), irit.vector(0, 0, 1), 2) irit.attrib(srf1, "color", irit.GenIntObject(4)) crv2 = irit.coerce( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, (-1.3 ), 0, 0.75 ), \ irit.ctlpt( irit.E3, 1.3, 0, 0.75 ), \ irit.ctlpt( irit.E3, 1.3, 0, (-0.75 ) ), \ irit.ctlpt( irit.E3, (-1.3 ), 0, (-0.75 ) ) ), irit.list( irit.KV_PERIODIC ) ), irit.KV_OPEN ) srf2 = irit.swpsclsrf(cross, crv2, irit.GenIntObject(1), irit.vector(0, 1, 0), 2) irit.attrib(srf2, "color", irit.GenIntObject(2)) crv3 = irit.coerce( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 0, 0.5, 1.1 ), \ irit.ctlpt( irit.E3, 0, 0.5, (-1.1 ) ), \