def crveqlparamsegmarkers(c): crvswsegs = irit.nil() crvsbsegs = irit.nil() numsegs = 10 i = 1 while (i <= numsegs): irit.snoc(irit.cregion(c, (i - 1) / numsegs, (i - 0.5) / numsegs), crvswsegs) irit.snoc(irit.cregion(c, (i - 0.5) / numsegs, (i - 0) / numsegs), crvsbsegs) i = i + 1 irit.color(crvswsegs, irit.RED) irit.color(crvsbsegs, irit.YELLOW) retval = irit.list(crvswsegs, crvsbsegs) return retval
def srflineinter( srf, pt1, pt2, dir, param, numsegs,\ tol ): pta = irit.srinter(srf, irit.Fetch3TupleObject(pt1), dir, tol) ptb = irit.srinter( srf, irit.Fetch3TupleObject( ppblend(irit.Fetch3TupleObject(pt1), irit.Fetch3TupleObject(pt2), 2 / 3.0)), dir, tol) ptc = irit.srinter( srf, irit.Fetch3TupleObject( ppblend(irit.Fetch3TupleObject(pt1), irit.Fetch3TupleObject(pt2), 1 / 3.0)), dir, tol) ptd = irit.srinter(srf, irit.Fetch3TupleObject(pt2), dir, tol) crv = irit.bsp2bzr( irit.cinterp(irit.list(pta, ptb, ptc, ptd), 4, 4, irit.GenRealObject(param), 0)) crvs = irit.nil() i = 1 while (i <= numsegs): c = irit.cregion(crv, (i - 1) / float(numsegs), i / float(numsegs)) irit.color(c, i) irit.snoc(c, crvs) i = i + 1 retval = crvs return retval
def extractcrvregion( crv, t1, t2, idx ): if ( irit.FetchRealObject(t1) < 0 ): retval = irit.cregion( crv, irit.FetchRealObject(t1) + 1, 1 ) + irit.cregion( crv, 0, irit.FetchRealObject(t2) ) else: retval = irit.cregion( crv, irit.FetchRealObject(t1), irit.FetchRealObject(t2) ) retval = irit.creparam( retval, 0, 1 ) tn = irit.vector( 1, 0, 0 ) * irit.rz( irit.FetchRealObject( idx ) ) retval = irit.list( retval * irit.trans( irit.Fetch3TupleObject( tn * irit.sc( 0.15 ) ) ), irit.arrow3d( irit.coerce( irit.ceval( retval, 0.5 ), 3 ), tn, 0.35, 0.01, 0.1, 0.02 ) ) irit.attrib( retval, "width", irit.GenRealObject( irit.random( 0.007, 0.01 ) ) ) irit.attrib( retval, "gray", irit.GenRealObject( irit.random( 0.2, 0.8 ) ) ) irit.attrib( retval, "rgb", irit.GenStrObject( str(int(irit.random( 100, 255 ) ) ) + "," + str(int(irit.random( 100, 255 ) ) ) + "," + str(int(irit.random( 100, 255 ) ) ) ) ) return retval
def canonicalh(f, g, deg, c, ptype): net = irit.nil() t = irit.ceval(g, 1) g2 = g * irit.sc(1 / irit.FetchRealObject(irit.coord(t, 1))) f2 = irit.cregion(f, 0, irit.FetchRealObject(irit.coord(t, 1))) f_p = irit.coerce(f2, irit.POWER_TYPE) tmp = irit.ffsplit(f_p) i = 1 while (i <= c): bm = irit.coord(irit.coord(irit.nth(tmp, i), deg), 1) tmp2 = irit.coerce(irit.nth(tmp, i), irit.BEZIER_TYPE) * irit.sc( 1 / irit.FetchRealObject(bm)) irit.snoc( irit.coerce(irit.coerce(irit.compose(tmp2, g2), irit.BEZIER_TYPE), irit.E1), net) i = i + 1 retval = irit.ffmerge(net, ptype) return retval
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()
#This is an IRIT script and as such requires both math and irit import: # import math import irit # # # A model of a light mill. # # Gershon Elber, Dec 1998. # circ = irit.cregion( irit.circle((0, 0, 0), 0.6) * irit.rz(90) * irit.rx(90) * irit.tz(2.1), 0.1, 1.9) bodysec = ( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, (-0.5 ), 0, 0 ), \ irit.ctlpt( irit.E3, (-0.5 ), 0, 0.01 ), \ irit.ctlpt( irit.E3, (-0.1 ), 0, 0.05 ), \ irit.ctlpt( irit.E3, (-0.03 ), 0, 0.3 ), \ irit.ctlpt( irit.E3, (-0.03 ), 0, 0.75 ), \ irit.ctlpt( irit.E3, (-0.1 ), 0, 1 ), \ irit.ctlpt( irit.E3, (-0.1 ), 0, 1.1 ), \ irit.ctlpt( irit.E3, (-0.03 ), 0, 1.2 ), \ irit.ctlpt( irit.E3, (-0.03 ), 0, 1.3 ), \ irit.ctlpt( irit.E3, (-0.04 ), 0, 1.31 ), \ irit.ctlpt( irit.E3, (-0.08 ), 0, 1.32 ), \ irit.ctlpt( irit.E3, (-0.09 ), 0, 1.4 ), \ irit.ctlpt( irit.E3, (-0.08 ), 0, 1.5 ) ), irit.list( irit.KV_OPEN ) ) + (-circ ) + irit.cbspline( 3, irit.list( \ irit.ctlpt( irit.E3, (-0.07 ), 0, 2.7 ), \ irit.ctlpt( irit.E3, (-0.07 ), 0, 2.8 ), \
# sec1 = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, (-0.525 ), (-0.041 ), 0 ), \ irit.ctlpt( irit.E2, (-0.0935 ), 0.102 ), \ irit.ctlpt( irit.E2, 0.487, 0.14 ), \ irit.ctlpt( irit.E2, 0.882, 0.112 ), \ irit.ctlpt( irit.E2, 0.878, 0.198 ), \ irit.ctlpt( irit.E2, 0.559, 0.403 ), \ irit.ctlpt( irit.E2, (-0.183 ), 0.252 ), \ irit.ctlpt( irit.E2, (-0.525 ), (-0.04 ) ) ), irit.list( irit.KV_OPEN ) ) * irit.tx( (-0.2 ) ) * irit.ty( (-0.2 ) ) sec2 = sec1 * irit.sy(0.5) * irit.sc(1.2) * irit.tz(2.5) * irit.rz(30) bladeside = irit.ruledsrf(sec1, sec2) bladetop = irit.ruledsrf(irit.cregion(sec2, 0, 0.5), (-irit.cregion(sec2, 0.5, 1))) blademain = irit.list(bladeside, bladetop) * irit.tz(0.2) irit.free(bladeside) irit.free(bladetop) bladefillet = irit.sfromcrvs( irit.list(sec1 * irit.sc(1.35) * irit.sy(1.5) * irit.tz((-0.1)), sec1, sec1 * irit.tz(0.2)), 3, irit.KV_OPEN) irit.free(sec1) irit.free(sec2) blade = irit.list(blademain, bladefillet) * irit.tx(0.1) * irit.ry( 90) * irit.sc(0.285) * irit.tx(0.636) * irit.rx(20) irit.attrib(blade, "rgb", irit.GenStrObject("128,128,128"))
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)
a = a + 2 * speed circ2 = irit.creparam(irit.pcircle((0, 0, 0), 1), 0, 1) * irit.rz( (-90)) * irit.ry(270) * irit.ty(1) irit.ffcompat(c1x, circ2) a = 0 while (a <= 1): c1 = irit.cmorph(c1x, circ2, 0, a) bisectsrf = irit.cbisector3d(irit.list(c1, circ), 1) display(c1, circ, bisectsrf) a = a + 0.01 * speed a = 0 while (a <= 0.75): c1y = irit.cregion(c1, a, 1) bisectsrf = irit.cbisector3d(irit.list(c1y, circ), 1) display(c1y, circ, bisectsrf) a = a + 0.005 * speed c1z = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, 0, (-1 ) ), \ irit.ctlpt( irit.E3, 0, 0, 0 ) ) ) irit.ffcompat(c1z, c1y) a = 0 while (a <= 1): c1w = irit.cmorph(c1y, c1z, 0, a) bisectsrf = irit.cbisector3d(irit.list(c1w, circ), 1) display(c1w, circ, bisectsrf) a = a + 0.01 * speed
irit.color(irit.nref(arcs, i), irit.YELLOW) else: irit.color(irit.nref(arcs, i), irit.MAGENTA) i = i + 1 irit.printf("%d arcs were used in this approximation\n", irit.list(irit.SizeOf(arcs))) irit.color(crv, irit.CYAN) irit.interact(irit.list(irit.GetAxes(), crv, arcs)) irit.viewstate("pllnaprx", 1) irit.viewstate("pllnaprx", 1) # ###################################################### c1 = irit.cregion(irit.circle((0, 0, 0), 1), 0, 1) drawbiarcs(c1, 0.1, 180) drawbiarcs(c1, 1e-006, 180) drawbiarcs(c1, 1e-006, 10) # ###################################################### c1 = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E2, 1, 0 ), \ irit.ctlpt( irit.E2, 1, 1 ), \ irit.ctlpt( irit.E2, 0, 1 ) ), irit.list( irit.KV_OPEN ) ) drawbiarcs(c1, 0.5, 180)
printtest("mdivide", irit.nth(irit.tdivide(t, irit.COL, 0.5), 1), irit.coerce(irit.nth(irit.mdivide(mt, 0, 0.5), 1), irit.TRIVAR_TYPE)) printtest("mdivide", irit.nth(irit.tdivide(t, irit.COL, 0.5), 2), irit.coerce(irit.nth(irit.mdivide(mt, 0, 0.5), 2), irit.TRIVAR_TYPE)) printtest("mdivide", irit.nth(irit.tdivide(t, irit.ROW, 0.5), 1), irit.coerce(irit.nth(irit.mdivide(mt, 1, 0.5), 1), irit.TRIVAR_TYPE)) printtest("mdivide", irit.nth(irit.tdivide(t, irit.ROW, 0.5), 2), irit.coerce(irit.nth(irit.mdivide(mt, 1, 0.5), 2), irit.TRIVAR_TYPE)) printtest("mdivide", irit.nth(irit.tdivide(t, irit.DEPTH, 0.5), 1), irit.coerce(irit.nth(irit.mdivide(mt, 2, 0.5), 1), irit.TRIVAR_TYPE)) printtest("mdivide", irit.nth(irit.tdivide(t, irit.DEPTH, 0.5), 2), irit.coerce(irit.nth(irit.mdivide(mt, 2, 0.5), 2), irit.TRIVAR_TYPE)) printtest("mregion", irit.cregion(c, 0.3, 0.66), irit.coerce(irit.mregion(mc, 0, 0.3, 0.66), irit.CURVE_TYPE)) printtest("mregion", irit.sregion(s, irit.COL, 0.3, 0.66), irit.coerce(irit.mregion(ms, 0, 0.3, 0.66), irit.SURFACE_TYPE)) printtest("mregion", irit.sregion(s, irit.ROW, 0.44, 0.55), irit.coerce(irit.mregion(ms, 1, 0.44, 0.55), irit.SURFACE_TYPE)) printtest("mregion", irit.sregion(irit.coerce(ms2, 8), irit.COL, 0.3, 0.66), irit.coerce(irit.mregion(ms2, 0, 0.3, 0.66), irit.SURFACE_TYPE)) printtest("mregion", irit.sregion(irit.coerce(ms2, 8), irit.ROW, 0.44, 0.55), irit.coerce(irit.mregion(ms2, 1, 0.44, 0.55), irit.SURFACE_TYPE)) printtest("mregion", irit.sregion(irit.coerce(ms3, 8), irit.ROW, 0.44, 0.55), irit.coerce(irit.mregion(ms3, 1, 0.44, 0.55), irit.SURFACE_TYPE)) printtest("mregion", irit.tregion(t, irit.COL, 0.15, 0.27), irit.coerce(irit.mregion(mt, 0, 0.15, 0.27), 13)) printtest("mregion", irit.tregion(t, irit.ROW, 0.5, 0.7),
irit.color(as1, irit.YELLOW) irit.interact(irit.list(as1, c2, c2 * irit.ry(90))) as2 = irit.swungasum(circ, c2 * irit.ry(90)) irit.color(as2, irit.YELLOW) irit.interact(irit.list(as2, circ, c2)) as1 = irit.algsum(c2, circ) irit.color(as1, irit.YELLOW) irit.interact(irit.list(as1, circ, c2)) irit.free(circ) # # A circle and a periodic curve. # arc1 = irit.cregion(irit.circle((0, 0, 0), 1.5), 0, 2) * irit.rz(90) c2 = irit.coerce( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E2, 1, 0 ), \ irit.ctlpt( irit.E2, 0.2, 0.2 ), \ irit.ctlpt( irit.E2, 0, 1 ), \ irit.ctlpt( irit.E2, (-0.2 ), 0.2 ), \ irit.ctlpt( irit.E2, (-1 ), 0 ), \ irit.ctlpt( irit.E2, (-0.2 ), (-0.2 ) ), \ irit.ctlpt( irit.E2, 0, (-1 ) ), \ irit.ctlpt( irit.E2, 0.2, (-0.2 ) ) ), irit.list( irit.KV_PERIODIC ) ), irit.KV_OPEN ) irit.color(arc1, irit.MAGENTA) irit.color(c2, irit.GREEN) as2 = irit.swungasum(arc1, c2) irit.color(as2, irit.YELLOW) irit.interact(irit.list(as2, arc1, c2))
irit.ctlpt( irit.E3, (-1.5 ), (-0.9 ), 0.03 ), \ irit.ctlpt( irit.E3, (-1 ), (-0.7 ), 0.03 ), \ irit.ctlpt( irit.E3, (-0.5 ), (-0.4 ), 0.03 ), \ irit.ctlpt( irit.E3, 0.5, (-0.6 ), 0.03 ), \ irit.ctlpt( irit.E3, 0.5, 0, 0.03 ) ), irit.list( irit.KV_OPEN ) ) sandboxwall = irit.sweepsrf( ( irit.ctlpt( irit.E3, (-0.03 ), 0, (-0.05 ) ) + \ irit.ctlpt( irit.E3, (-0.03 ), 0, 0.05 ) + \ irit.ctlpt( irit.E3, 0.1, 0, 0.05 ) + \ irit.ctlpt( irit.E3, 0.1, 0, (-0.05 ) ) + \ irit.ctlpt( irit.E3, (-0.03 ), 0, (-0.05 ) ) ) * irit.rotx( 90 ), sandboxboundary, irit.vector( 0, 0, 1 ) ) irit.color( sandboxwall, irit.RED ) irit.attrib( sandboxwall, "rgb", irit.GenStrObject("244,50,50" )) irit.attrib( sandboxwall, "reflect", irit.GenRealObject(0.1 )) irit.attrib( sandboxwall, "resolution", irit.GenRealObject(4 )) sandboxsand = irit.ruledsrf( irit.cregion( sandboxboundary, 0, 0.4375 ), (-irit.cregion( sandboxboundary, 0.4375, 1 ) ) ) irit.color( sandboxsand, irit.WHITE ) irit.attrib( sandboxsand, "rgb", irit.GenStrObject("255,255,150" )) sandbox = irit.list( sandboxsand, sandboxwall ) irit.free( sandboxsand ) irit.free( sandboxwall ) irit.free( sandboxboundary ) # # Rounded Slide. # rslidehelix = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E3, 0, 1, 0 ), \ irit.ctlpt( irit.E3, 0.267697, 1, 0 ), \ irit.ctlpt( irit.E3, 0.78877, 0.77808, 0.125925 ), \ irit.ctlpt( irit.E3, 1.10908, (-0.011628 ), 0.251853 ), \
cb1 = irit.nth(cb_lst, 1) irit.color(cb1, irit.GREEN) cb2 = irit.nth(cb_lst, 2) irit.color(cb2, irit.YELLOW) irit.free(cb_lst) if (display == 1): irit.interact(irit.list(irit.GetAxes(), cb, cb1, cb2)) irit.free(cb1) irit.free(cb2) # # Region from curve. # cb = irit.cspiral(3, 0.7, 500, 6) cbr1 = irit.cregion(cb, 0.3, 0.6) irit.color(cbr1, irit.YELLOW) cbr2 = irit.cregion(cb, 0.5, 1) irit.color(cbr2, irit.GREEN) cbr3 = irit.cregion(cb, 0.3, 0) irit.color(cbr3, irit.BLUE) if (display == 1): irit.interact(irit.list(cb, cbr1, cbr2, cbr3)) irit.free(cbr1) irit.free(cbr2) irit.free(cbr3) # # Surface subdivision and merging. # sb = irit.sbspline( 3, 3, sbsp, irit.list( irit.list( 1, 1, 1, 2, 2, 2 ),\
irit.view( irit.list( unitsquare, dms, dms * irit.ty( 1 ), dms * irit.ty( (-1 ) ), c4 * m ), irit.ON ) i = 1 while ( i <= 360.0/step ): crvsdm = irit.nth( dms, i ) irit.adwidth( crvsdm, 2 ) irit.color( crvsdm, irit.YELLOW ) theta = 360 * irit.FetchRealObject( irit.coord( irit.coord( irit.nth( crvsdm, 1 ), 0 ), 1 ) ) vdir = ( irit.ctlpt( irit.E2, 0, 0 ) + \ irit.ctlpt( irit.E2, math.cos( theta * math.pi/180 ), math.sin( theta * math.pi/180 ) ) ) * irit.sc( 0.8 ) * m crvse3 = irit.nil( ) d = 1 while ( d <= irit.SizeOf( crvsdm ) ): c = irit.nth( crvsdm, d ) irit.snoc( irit.cregion( c4, irit.FetchRealObject( irit.coord( irit.coord( c, 0 ), 2 ) ), \ irit.FetchRealObject( irit.coord( irit.coord( c, 1 ), 2 ) ) ), \ crvse3 ) d = d + 1 crvse3 = crvse3 * m irit.adwidth( crvse3, 2 ) irit.color( crvse3, irit.YELLOW ) irit.view( irit.list( unitsquare, dms, dms * irit.ty( 1 ), dms * irit.ty( (-1 ) ), c4 * m, vdir, crvsdm, crvse3 ), irit.ON ) if ( saveimages ): irit.viewimgsave( "/movie/img" + i + ".ppm" ) i = i + 1 all = irit.list( unitsquare, dms, dms * irit.ty( 1 ), dms * irit.ty( (-1 ) ), c4 * m, vdir, crvsdm, crvse3 ) irit.interact( all ) irit.save( "cvisib4", all ) irit.free( m )
crosssection12 = makecrosssection(c12) c13 = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 8.4, 0, (-0.55 ) ), \ irit.ctlpt( irit.E3, 8.4, 0.3, (-0.55 ) ), \ irit.ctlpt( irit.E3, 8.4, 0.47, (-0.15 ) ), \ irit.ctlpt( irit.E3, 8.4, 0.49, (-0.12 ) ), \ irit.ctlpt( irit.E3, 8.4, 0.8, (-0.08 ) ), \ irit.ctlpt( irit.E3, 8.4, 0.8, (-0.05 ) ), \ irit.ctlpt( irit.E3, 8.4, 0.8, 0.2 ), \ irit.ctlpt( irit.E3, 8.4, 0.8, 0.23 ), \ irit.ctlpt( irit.E3, 8.4, 0.45, 0.3 ), \ irit.ctlpt( irit.E3, 8.4, 0.1, 0.55 ), \ irit.ctlpt( irit.E3, 8.4, 0, 0.55 ) ), irit.list( irit.KV_OPEN ) ) crosssection13 = makecrosssection(c13) c14 = ( irit.cregion( circ, 0, 0.88 ) + irit.ctlpt( irit.E2, 0.1, 1.4 ) + \ irit.ctlpt( irit.E2, (-0.1 ), 1.4 ) + irit.cregion( circ, 1.12, 2 ) ) * irit.sc( 0.57 ) * irit.ry( 90 ) * irit.tx( 11.4 ) crosssection14 = makecrosssection(c14) fuseback = irit.sfromcrvs( irit.list( crosssection10, crosssection11, crosssection12, crosssection13, crosssection14 ), 3,\ irit.KV_OPEN ) irit.attrib(fuseback, "rgb", irit.GenStrObject("128, 128, 255")) irit.attrib(fuseback, "texture", irit.GenStrObject("camouf")) irit.free(c10) irit.free(c11) irit.free(c12) irit.free(c13) irit.free(c14) irit.free(crosssection10) irit.free(crosssection11) irit.free(crosssection12)
# # Curve subdivision. # cb_lst = irit.cdivide(cb, 0.5) cb1 = irit.nth(cb_lst, 1) irit.color(cb1, irit.GREEN) cb2 = irit.nth(cb_lst, 2) irit.color(cb2, irit.YELLOW) if (display == 1): irit.interact(irit.list(irit.GetAxes(), cb, cb1, cb2)) # # Region from curve. # cbr1 = irit.cregion(cb, 0.3, 0.6) irit.color(cbr1, irit.YELLOW) cbr2 = irit.cregion(cb, 0.5, 1) irit.color(cbr2, irit.GREEN) cbr3 = irit.cregion(cb, 0.3, 0) irit.color(cbr3, irit.BLUE) if (display == 1): irit.interact(irit.list(cb, cbr1, cbr2, cbr3)) # # Surface subdivision and merging. # sb_lst = irit.sdivide(sb, irit.COL, 0.4) sb1 = irit.nth(sb_lst, 1) irit.color(sb1, irit.GREEN) sb2 = irit.nth(sb_lst, 2)
irit.snoc( irit.point( math.cos( i * 2 * math.pi/8 ), math.sin( i * 2 * 3.14159/8 ), 0 ), ptlist ) i = i + 1 c1 = irit.coerce( irit.cbspline( 3, ptlist, irit.list( irit.KV_PERIODIC ) ), irit.KV_OPEN ) * irit.rz( (-22.5 ) ) c2 = irit.coerce( irit.cbspline( 2, ptlist, irit.list( irit.KV_PERIODIC ) ), irit.KV_OPEN ) * irit.sc( 1.1 ) irit.free( ptlist ) minsize = 0.01 body = irit.sfromcrvs( irit.list( c2 * irit.sc( minsize ) * irit.tz( 0.05 ), c2 * irit.sc( 0.7 ) * irit.tz( 0.05 ), c2 * irit.sc( 0.8 ) * irit.tz( 0.05 ), c2 * irit.sc( 0.9 ), c2, c2 * irit.tz( 2 ), c2 * irit.tz( 2.2 ), c1 * irit.tz( 2.2 ), c1 * irit.tz( 2 ), c1 * irit.tz( 0.4 ), c1 * irit.sc( 0.5 ) * irit.tz( 0.2 ), c1 * irit.sc( minsize ) * irit.tz( 0.2 ) ), 3, irit.KV_OPEN ) irit.free( c1 ) irit.free( c2 ) cbody = irit.csurface( irit.coerce( body, irit.KV_OPEN ), irit.COL, 1 ) cbodyin = irit.cregion( cbody, 0.6, 1 ) irit.color( cbodyin, irit.RED ) irit.adwidth( cbodyin, 3 ) cbodyout = (-irit.cregion( cbody, 0, 0.6 ) ) irit.color( cbodyout, irit.GREEN ) irit.adwidth( cbodyout, 3 ) ruled1 = irit.ruledsrf( cbodyin, cbodyout ) irit.interact( irit.list( ruled1, cbodyout, cbodyin ) ) irit.save( "distmtc1", irit.list( ruled1, cbodyout, cbodyin ) ) cbodyin2 = irit.ffmatch( cbodyout, cbodyin, 30, 100, 2, 0,\ (-1 ) ) irit.color( cbodyin2, irit.RED ) irit.adwidth( cbodyin2, 3 ) ruled2 = irit.ruledsrf( cbodyin2, cbodyout )
c6 = irit.circle( ( 0, 0, 0 ), 0.3 ) * irit.roty( 90 ) * irit.trans( ( 10.5, 0, 0.2 ) ) irit.color( c6, irit.RED ) c7 = irit.circle( ( 0, 0, 0 ), 0.01 ) * irit.roty( 90 ) * irit.trans( ( 11, 0, 0.25 ) ) irit.color( c7, irit.RED ) fuseback = irit.sfromcrvs( irit.list( c1, c2, c3, c4, c5, c6,\ c7 ), 3, irit.KV_OPEN ) if ( do_texture == 1 ): irit.attrib( fuseback, "texture", texture ) irit.attrib( fuseback, "rgb", irit.GenStrObject(graycolor) ) irit.color( fuseback, irit.WHITE ) # # The cockpit: # cock1 = irit.cregion( c1, 1.3, 2.7 ) irit.color( cock1, irit.YELLOW ) cock2 = cock1 * irit.scale( ( 0.9, 0.9, 1.1 ) ) * irit.trans( ( (-0.35 ), 0, (-0.15 ) ) ) irit.color( cock2, irit.YELLOW ) cock3 = cock1 * irit.scale( ( 0.01, 0.01, 0.01 ) ) * irit.trans( ( 1.4, 0, 0.38 ) ) irit.color( cock3, irit.YELLOW ) cockpit = irit.sfromcrvs( irit.list( cock3, cock2, cock1 ), 3, irit.KV_OPEN ) if ( do_texture == 1 ): irit.attrib( cockpit, "texture", texture ) irit.attrib( cockpit, "rgb", irit.GenStrObject(whitecolor) ) irit.color( cockpit, irit.WHITE ) irit.free( cock1 ) irit.free( cock2 ) irit.free( cock3 )
# circ = irit.pcircle((0, 0, 0), 1) # # Example 1. # crv1 = irit.cbezier( irit.list( irit.ctlpt( irit.E2, (-0.5 ), 0 ), \ irit.ctlpt( irit.E2, (-0.5 ), 1.7 ), \ irit.ctlpt( irit.E2, 0.5, 1.7 ), \ irit.ctlpt( irit.E2, 0.5, 0 ) ) ) irit.color(crv1, irit.RED) irit.attrib(crv1, "width", irit.GenRealObject(0.01)) arc1 = irit.cregion(circ, 0, 2) irit.ffcompat(crv1, arc1) irit.color(arc1, irit.GREEN) irit.attrib(arc1, "width", irit.GenRealObject(0.01)) irit.interact(irit.list(crv1, arc1)) arc1match = irit.ffmatch( crv1, arc1, 50, 200, 2, 0,\ 2 ) offsets1nomatch = irit.nil() i = (-5) while (i <= 5): irit.snoc(irit.symbsum(crv1, arc1 * irit.sc(i / 10.0)), offsets1nomatch) i = i + 1 irit.color(offsets1nomatch, irit.YELLOW)
irit.printf( "principal curvatures at (u, v) = (%f, %f) equal %.9f and %.9f\n", irit.list(irit.coord(umb, 0), irit.coord(umb, 1), irit.nth(crvtr, 1), irit.nth(crvtr, 3))) irit.snoc( irit.seval(srf, irit.FetchRealObject(irit.coord(umb, 0)), irit.FetchRealObject(irit.coord(umb, 1))), retval) i = i + 1 irit.color(retval, irit.YELLOW) return retval # ################################ s = irit.surfprev( irit.cregion(irit.pcircle((0, 0, 0), 1), 0.001, 1.999) * irit.rx(90)) * irit.sx(0.8) * irit.sy(1.2) irit.color(s, irit.RED) paramumb = irit.sumbilic(s, 0.2, 1e-006) irit.interact(irit.list(evaltoeuclidean(s, paramumb), s)) # ################################ c = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0.215, 0.427 ), \ irit.ctlpt( irit.E2, 1.34, 0.317 ), \ irit.ctlpt( irit.E2, 1.25, (-0.791 ) ), \ irit.ctlpt( irit.E2, (-0.573 ), (-1.05 ) ), \ irit.ctlpt( irit.E2, 1.12, (-1.31 ) ), \ irit.ctlpt( irit.E2, 1.19, (-1.51 ) ) ), irit.list( irit.KV_OPEN ) ) s = irit.sregion(irit.surfprev(c * irit.rx(90)), irit.COL, 0, 1)
irit.color(elp1, irit.RED) irit.color(elp2, irit.MAGENTA) hyp1 = irit.conicsec( irit.list( (-1 ), 2, 4, 0.5, 2, (-0.2 ) ),\ 0, 0, 0 ) hyp2 = irit.conicsec( irit.list( 1, 0, (-4 ), 0, 0, (-1 ) ),\ (-0.1 ), 0, 0 ) irit.color(hyp1, irit.CYAN) irit.color(hyp2, irit.GREEN) irit.interact( irit.list( irit.GetAxes(), elp1, elp2, circ1, circ2, hyp1,\ hyp2, irit.GetViewMatrix() ) ) # ############################################################################ hyp1a = irit.cmoebius(irit.cregion(hyp1, (-2), 0.4), 0) irit.color(hyp1a, irit.CYAN) hyp1b = irit.cmoebius(irit.cregion(hyp1, 0.6, 3), 0) irit.color(hyp1b, irit.CYAN) hyp2a = irit.cmoebius(irit.cregion(hyp2, (-2), 0.4), 0) irit.color(hyp2a, irit.GREEN) hyp2b = irit.cmoebius(irit.cregion(hyp2, 0.6, 3), 0) irit.color(hyp2b, irit.GREEN) irit.interact( irit.list(irit.GetAxes(), hyp1a, hyp1b, hyp2a, hyp2b, irit.GetViewMatrix())) # ############################################################################
# pt = (0.9, 0, 0) helix = circ * irit.rotx(0) i = 0 while (i <= irit.SizeOf(helix) - 1): pth = irit.coord(helix, i) helix = irit.ceditpt( helix, irit.ctlpt(irit.E3, i / 4, irit.FetchRealObject(irit.coord(pth, 2)), irit.FetchRealObject(irit.coord(pth, 3))), i) i = i + 1 a = 0 while (a <= 1): c1y = irit.cmorph(circ, helix, 0, a) bisectsrf = irit.cbisector3d(irit.list(c1y, pt), 0) display(c1y, pt, bisectsrf) a = a + 0.1 * speed a = 1 while (a <= 0): hel = irit.cregion(helix, 0, 0.999 * a + 0.0001) * irit.ty(1.1 * (1 - a)) pt = ((-0.9) * a, 2.1 * a - 2.1, 0) bisectsrf = irit.cbisector3d(irit.list(hel, pt), 0) display(hel, pt, bisectsrf) a = a + (-0.02) * speed # ############################################################################
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(
import irit # # # A model of a twin bed (actually built!) # # Gershon Elber, June 1995 # # # All units are in centimeters. # circ = irit.circle((0, 0, 0), 3) arc0 = irit.cregion(circ, 0, 1.5) arc1 = irit.cregion(circ, 0.5, 1.5) arc2 = irit.cregion(circ, 1, 1.5) arc3 = irit.cregion(circ, 0.5, 1) arc4 = irit.cregion(circ, 0.7, 1.5) arc5 = irit.cregion(circ, 0.7, 1.3) arc6 = irit.cregion(circ, 0.7, 1) arc7 = irit.cregion(circ, 1, 1.3) arc8 = irit.cregion(circ, 0.5, 1.3) arc9 = irit.cregion(circ, 0.7, 1.5) irit.free(circ) prof1 = ((-arc1) + (-arc2) * irit.tx(4.6)) prof1a = prof1 * irit.sy(2) prof2 = ((-arc3) + (-arc4) * irit.tx(4.6) + (-arc5) * irit.tx(7.6) +
# # Diana Pekerman, Dec 2004. # ############################################################################ # # Example 1 # e1_c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 8, 12, 13 ) ) ) # Modifying E1_C1 e1_c1 = irit.coerce( e1_c1, irit.BSPLINE_TYPE ) e1_c1 = irit.cregion( e1_c1, 0.1, 0.9 ) e1_c1 = irit.crefine( e1_c1, 0, irit.list( 0.25, 0.4, 0.45, 0.8 ) ) e1_c1 = irit.craise( e1_c1, 2 + irit.FetchRealObject(irit.nref( irit.fforder( e1_c1 ), 1 ) )) e1_c2 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 8, 12, 13 ) ) ) # Modifying E1_C2 e1_c2 = irit.coerce( e1_c2, irit.BSPLINE_TYPE ) e1_c2 = irit.cregion( e1_c2, 0.3, 0.6 ) e1_c2 = irit.crefine( e1_c2, 0, irit.list( 0.35, 0.4, 0.55 ) ) e1_c2 = irit.craise( e1_c2, 1 + irit.FetchRealObject(irit.nref( irit.fforder( e1_c2 ), 1 ) )) # Overlapping with domain [0.3, 0.6] for both curves E1_C1 and E1_C2.