def king(s, clr): kingbase = (-irit.surfprev( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E2, 0.001, 1.04 ), \ irit.ctlpt( irit.E2, 0.04, 1.04 ), \ irit.ctlpt( irit.E2, 0.04, 1.02 ), \ irit.ctlpt( irit.E2, 0.06, 1.02 ), \ irit.ctlpt( irit.E2, 0.06, 1 ), \ irit.ctlpt( irit.E2, 0.08, 1 ), \ irit.ctlpt( irit.E2, 0.08, 0.97 ), \ irit.ctlpt( irit.E2, 0.1, 0.97 ), \ irit.ctlpt( irit.E2, 0.1, 0.94 ), \ irit.ctlpt( irit.E2, 0.07, 0.82 ), \ irit.ctlpt( irit.E2, 0.07, 0.8 ), \ irit.ctlpt( irit.E2, 0.09, 0.8 ), \ irit.ctlpt( irit.E2, 0.09, 0.78 ), \ irit.ctlpt( irit.E2, 0.07, 0.78 ), \ irit.ctlpt( irit.E2, 0.07, 0.74 ), \ irit.ctlpt( irit.E2, 0.1, 0.72 ), \ irit.ctlpt( irit.E2, 0.1, 0.7 ), \ irit.ctlpt( irit.E2, 0.14, 0.67 ), \ irit.ctlpt( irit.E2, 0.14, 0.64 ), \ 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 ) ) ) kingcrosscrv = ( \ irit.ctlpt( irit.E2, (-0.07 ), 0 ) + \ irit.ctlpt( irit.E2, (-0.07 ), 0.53 ) + \ irit.ctlpt( irit.E2, (-0.3 ), 0.53 ) + \ irit.ctlpt( irit.E2, (-0.3 ), 0.67 ) + \ irit.ctlpt( irit.E2, (-0.07 ), 0.67 ) + \ irit.ctlpt( irit.E2, (-0.07 ), 1 ) + \ irit.ctlpt( irit.E2, 0, 1 ) ) kingcrosssrf1 = irit.ruledsrf(kingcrosscrv, kingcrosscrv * irit.sx((-1))) kingcrosssrf2 = (-kingcrosssrf1) * irit.tz(0.08) kingcrosscrv2 = (kingcrosscrv + (-kingcrosscrv) * irit.sx((-1))) kingcrosssrf3 = irit.ruledsrf(kingcrosscrv2, kingcrosscrv2 * irit.tz(0.08)) kingcross = irit.list( kingcrosssrf1, kingcrosssrf2, kingcrosssrf3) * irit.tz( (-0.04)) * irit.sc(0.16) * irit.rx(90) * irit.tz(1) irit.attrib(kingcross, "rgb", irit.GenStrObject("255,255,100")) irit.attrib(kingbase, "rgb", irit.GenStrObject(clr)) retval = irit.list(kingbase, kingcross) * irit.sc(s) return retval
def textgeom3daux(ply, wdth, dpth): retval = irit.nil() if (irit.ThisObject(ply) == irit.CURVE_TYPE): retval = irit.extrude((-ply), (0, 0, dpth), 0) if (irit.ThisObject(ply) == irit.POLY_TYPE): retval = irit.extrude( irit.ruledsrf( irit.offset(ply, irit.GenRealObject(-wdth / 2.0), 0, 0), irit.offset(ply, irit.GenRealObject(wdth / 2.0), 0, 0)), (0, 0, dpth), 3) return retval
def cornerunitshelf( w, h, legw, legd ): prof1 = ( irit.ctlpt( irit.E3, legd, legd, 0 ) + \ irit.ctlpt( irit.E3, legd, 2 * w - legd, 0 ) + \ irit.ctlpt( irit.E3, 2 * w - legd, 2 * w - legd, 0 ) ) prof2 = ( \ irit.ctlpt( irit.E3, legd, legd, 0 ) + irit.arc( ( w - legd, legd, 0 ), ( w, w, 0 ), ( 2 * w - legd, w - legd, 0 ) ) + \ irit.ctlpt( irit.E3, 2 * w - legd, 2 * w - legd, 0 ) ) shelfframe = irit.list( irit.extrude( prof1 + (-prof2 ), ( 0, 0, 0.03 ), 0 ), irit.ruledsrf( prof1, prof2 ), irit.ruledsrf( prof1, prof2 ) * irit.tz( 0.03 ) ) irit.attrib( shelfframe, "ptexture", woodtext ) irit.attrib( shelfframe, "rgb", woodclr ) retval = irit.list( shelfframe ) * irit.tz( h ) return retval
def marbleshelfunit( w, h ): prof1 = ( irit.ctlpt( irit.E3, 2 * w, 0, 0 ) + irit.cbspline( 3, irit.list( \ irit.ctlpt( irit.E3, 2 * w, w, 0 ), \ irit.ctlpt( irit.E3, 2 * w, 2 * w, 0 ), \ irit.ctlpt( irit.E3, w, 2 * w, 0 ) ), irit.list( irit.KV_OPEN ) ) + \ irit.ctlpt( irit.E3, 0, 2 * w, 0 ) ) prof2 = ( \ irit.ctlpt( irit.E3, 0, 2 * w, 0 ) + \ irit.ctlpt( irit.E3, 0, 0, 0 ) + \ irit.ctlpt( irit.E3, 2 * w, 0, 0 ) ) retval = irit.list( irit.extrude( prof1 + prof2, ( 0, 0, 0.025 ), 0 ), irit.ruledsrf( prof1, (-prof2 ) ), irit.ruledsrf( prof1, (-prof2 ) ) * irit.tz( 0.025 ) ) * irit.tz( h ) irit.attrprop( retval, "ptexture", marbletext ) irit.attrprop( retval, "rgb", marbleclr ) return retval
irit.free( c7 ) # # Now create the steering (vertical) tail. # c1 = ( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 0, 0.02, 0 ), \ irit.ctlpt( irit.E3, 1.5, 0.07, 0 ), \ irit.ctlpt( irit.E3, 3, 0, 0 ) ), irit.list( irit.KV_OPEN ) ) + irit.cbspline( 3, irit.list( \ irit.ctlpt( irit.E3, 3, 0, 0 ), \ irit.ctlpt( irit.E3, 1.5, (-0.07 ), 0 ), \ irit.ctlpt( irit.E3, 0, (-0.02 ), 0 ), \ irit.ctlpt( irit.E3, 0, 0, 0 ) ), irit.list( irit.KV_OPEN ) ) ) * irit.trans( ( 7.7, 0, 0.3 ) ) c2 = c1 * irit.scale( ( 0.65, 0.65, 0.65 ) ) * irit.trans( ( 3.75, 0, 0.4 ) ) c3 = c1 * irit.scale( ( 0.16, 0.16, 0.16 ) ) * irit.trans( ( 9.5, 0, 2 ) ) vtail1 = irit.ruledsrf( c2, c1 ) vtail2 = irit.ruledsrf( c3, c2 ) if ( do_texture == 1 ): irit.attrib( vtail1, "texture", texture ) irit.attrib( vtail1, "rgb", irit.GenStrObject(redcolor) ) irit.color( vtail1, irit.RED ) if ( do_texture == 1 ): irit.attrib( vtail2, "texture", texture ) irit.attrib( vtail2, "rgb", irit.GenStrObject(redcolor) ) irit.color( vtail2, irit.RED ) irit.free( c1 ) irit.free( c2 ) irit.free( c3 ) vtailtop = irit.swpsclsrf( irit.circle( ( 0, 0, 0 ), 0.1 ), irit.cbezier( irit.list( irit.ctlpt( irit.E3, 10.732, 0, 2.048 ), \ irit.ctlpt( irit.E3, 10.972, 0, 2.048 ), \
), \ irit.ctlpt( irit.E2, 1, 1 ), \ irit.ctlpt( irit.E2, 1, 0 ) ) ) irit.awidth(c1, 0.02) r1 = irit.coerce( irit.cpower( irit.list( irit.ctlpt( irit.E1, 0 ), \ irit.ctlpt( irit.E1, 0.7 ), \ irit.ctlpt( irit.E1, 0.3 ) ) ), irit.BEZIER_TYPE ) r2 = irit.coerce( irit.cpower( irit.list( irit.ctlpt( irit.E1, 0 ), \ irit.ctlpt( irit.E1, 0.3 ), \ irit.ctlpt( irit.E1, 0.7 ) ) ), irit.BEZIER_TYPE ) c1a = irit.compose(c1, r1) c2a = irit.compose(c1, r2) s1 = irit.ruledsrf(c1a, c1a * irit.tz(1)) irit.attrib(s1, "gray", irit.GenRealObject(0.2)) irit.awidth(s1, 0.012) s2 = irit.ruledsrf(c2a * irit.sc(0.0001), c2a) irit.attrib(s2, "gray", irit.GenRealObject(0.35)) irit.awidth(s2, 0.012) all1 = irit.list(s1, s2, c1) irit.interact(all1) irit.save("crv5dcmp", all1) # system("illustrt -t 0.01 -l 0.01 -f 0 256 -I 8 crv5dcmp.itd crv5dcmp.imd | irit2ps -d -u - > crv5dcmp.ps"); # # Try to decompose
# # Top round. # topround = irit.poly( lj8samplecurve( irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, (-0.7 ), 7.5 ), \ irit.ctlpt( irit.E3, 0, 2.5, 8 ), \ irit.ctlpt( irit.E3, 0, 5.7, 7.5 ) ) ), 10 ) + irit.list( ( 0, 5.7, 7.2 ), ( 0, 5.2, 7.2 ), irit.point( 0, 4.9, 6.8 ), irit.point( 0, 4.9, 6 ), irit.point( 0, 0.1, 6 ), irit.point( 0, 0.1, 6.3 ), irit.point( 0, (-0.2 ), 6.3 ), irit.point( 0, (-0.7 ), 7.1 ) ), 0 ) topround = irit.extrude(topround, (2, 0, 0), 3) * irit.tx(0.001) irit.SetResolution(4) screen = irit.con2((0, 0, 0), (0, 0, (-0.15)), 0.3, 0.2, 3) * irit.rz(45) topround = (topround - screen * irit.rx(5.5) * irit.sx(3) * irit.tx(1) * irit.tz(7.65)) irit.SetResolution(20) screen = irit.ruledsrf( irit.ctlpt( irit.E3, 0.1414, 0.1414, (-0.14 ) ) + \ irit.ctlpt( irit.E3, (-0.1414 ), 0.1414, (-0.14 ) ), \ irit.ctlpt( irit.E3, 0.1414, (-0.1414 ), (-0.14 ) ) + \ irit.ctlpt( irit.E3, (-0.1414 ), (-0.1414 ), (-0.14 ) ) ) * irit.rx( 5.5 ) * irit.sx( 3 ) * irit.tx( 1 ) * irit.tz( 7.65 ) irit.attrib(screen, "rgb", irit.GenStrObject("20,100,20")) tmpbody = irit.box((1, 0.75, 6.5), 2, 3.5, 0.15) z = 7.2 while (z <= 7.5): tmpbody = tmpbody ^ irit.box(((-0.1), 1, z), 0.2, 3, 0.05) z = z + 0.1 topround = topround / tmpbody base = (base + topround) # # Top round control.
irit.color(s2, irit.GREEN) i = testinter(s1, s2) all = irit.list(s1, s2, i) irit.interact(all) irit.save("ssi19", all) # # 20. Two bi-quadratic surfaces with one intersecting curve and one point of # inter. # s1 = irit.ruledsrf( irit.ctlpt( irit.E3, 0, 1, 1 ) + \ irit.ctlpt( irit.E3, 1, 1, (-1 ) ), \ irit.ctlpt( irit.E3, 0, 0, (-1 ) ) + \ irit.ctlpt( irit.E3, 1, 0, 1 ) ) s2 = irit.ruledsrf( irit.ctlpt( irit.E3, 0, 1, 1 ) + \ irit.ctlpt( irit.E2, 1, 1 ), \ irit.ctlpt( irit.E1, 0 ) + \ irit.ctlpt( irit.E1, 1 ) ) irit.color(s1, irit.RED) irit.color(s2, irit.GREEN) i = testinter(s1, s2) all = irit.list(s1, s2, i) irit.interact(all)
import irit # # # Animation of a snake motion, Gershon Elber, May 2002. # irit.viewstate( "depthcue", 0 ) irit.viewstate( "drawstyle", 1 ) irit.viewstate( "dsrfpoly", 1 ) irit.viewstate( "dsrfwire", 0 ) irit.viewstate( "polyaprx", 1 ) xyplane = (-irit.ruledsrf( irit.ctlpt( irit.E2, (-10 ), 50 ) + \ irit.ctlpt( irit.E2, 10, 50 ), \ irit.ctlpt( irit.E2, (-10 ), (-10 ) ) + \ irit.ctlpt( irit.E2, 10, (-10 ) ) ) ) irit.attrib( xyplane, "rgb", irit.GenStrObject("220,140,100" )) # ############################################################################ def ctx( t, m ): x = m * math.sin( t ) retval = irit.tx( x ) return retval def snaket( t ): p = irit.point( 0, 0, 0 ) ct = irit.cbspline( 3, irit.list( p * \ ctx( 0 + t, 1.5 ) * \ irit.ty( 0.22 ),
import math import irit # # # Combination of a square, triangle, and a circle # # Gershon Elber, Feb 2009. # # # The Sqriancle # c = irit.circle((0, 0, 0), 1) stc = irit.ruledsrf(c, c * irit.tz(2) * irit.sx(0.0001)) irit.attrib(stc, "rgb", irit.GenStrObject("255, 200, 200")) stcisos = irit.getisocurvetubes(stc, 8, 4, 0.03) irit.attrib(stcisos, "rgb", irit.GenStrObject("25, 20, 200")) irit.attrib(stcisos, "specilar", irit.GenRealObject(2)) irit.view(irit.list(stc, stcisos), irit.ON) irit.save("sqriacle", irit.list(stc, stcisos)) irit.pause() irit.free(c) irit.free(stc) irit.free(stcisos)
import teapot teapotorig = irit.load( "teapot" ) def interact( none ): irit.viewdclear( ) irit.viewobj( none ) irit.pause( ) echosrc2 = irit.iritstate( "echosource", echosrc2 ) irit.free( echosrc2 ) # # Define the trivarate warping function. # s1 = irit.ruledsrf( irit.ctlpt( irit.E3, 0.5, 0, 0 ) + \ irit.ctlpt( irit.E3, 1.5, 0, 0 ), \ irit.ctlpt( irit.E3, 0.5, 1.2, 0 ) + \ irit.ctlpt( irit.E3, 1.5, 1.2, 0 ) ) tv = irit.tfromsrfs( irit.list( s1, s1 * irit.ry( 30 ), s1 * irit.ry( 60 ), s1 * irit.ry( 90 ), s1 * irit.ry( 120 ), s1 * irit.ry( 150 ), s1 * irit.ry( 180 ) ), 3, irit.KV_OPEN ) tv = irit.treparam( irit.treparam( tv, irit.COL, 0, 0.5 ), irit.ROW, 0.2,\ 0.8 ) irit.awidth( tv, 0.001 ) irit.free( s1 ) # # Define our warping function. # def warpsurface( srf, tv ): usize = irit.FetchRealObject(irit.nth( irit.ffmsize( srf ), 1 )) vsize = irit.FetchRealObject(irit.nth( irit.ffmsize( srf ), 2 )) clr = irit.getattr( srf, "color" )
irit.attrib(cntrs, "dwidth", irit.GenRealObject(3)) irit.color(cntrs, irit.RED) irit.interact(irit.list(c, p, cntrs)) irit.free(c) irit.free(p) irit.free(cntrs) # # Simple self intersecting surface. # c1 = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 0, (-1 ), 0 ), \ irit.ctlpt( irit.E3, 0, 1, 0.2 ), \ irit.ctlpt( irit.E3, 1, 0, 0.4 ), \ irit.ctlpt( irit.E3, (-1 ), 0, 0.6 ) ), irit.list( irit.KV_OPEN ) ) s1 = irit.ruledsrf(c1, c1 * irit.tz(1) * irit.rz(10)) irit.color(s1, irit.GREEN) irit.SetResolution(30) # # Computing self intersection by a Boolean operation with itself - Parametric. # dummy = irit.iritstate("intercrv", irit.GenRealObject(1)) uvbool = irit.iritstate("uvboolean", irit.GenRealObject(1)) s1inter = (s1 + s1) irit.color(s1inter, irit.RED) irit.attrib(s1inter, "dwidth", irit.GenRealObject(3)) paramdomain = irit.poly(irit.list((0, 0, 0), (0, 1, 0), (2, 1, 0), (2, 0, 0)), irit.FALSE)
# An ellipsoid # s = irit.spheresrf(1.1) * irit.sx(2) * irit.sy(1.2) d = irit.duality(s) irit.color(d, irit.YELLOW) view_mat1 = irit.GetViewMatrix() * irit.sc(0.5) irit.interact(irit.list(s, d, irit.GetAxes(), view_mat1)) # # A ruled surface # s = irit.ruledsrf( irit.ctlpt( irit.E3, (-1 ), (-1 ), 0.2 ) + \ irit.ctlpt( irit.E3, (-1 ), 1, (-0.2 ) ), \ irit.ctlpt( irit.E3, 1, (-1 ), (-0.2 ) ) + \ irit.ctlpt( irit.E3, 1, 1, 0.2 ) ) * irit.tz( 0.35 ) d = irit.duality(s) irit.color(d, irit.YELLOW) view_mat1 = irit.GetViewMatrix() * irit.sc(0.3) * irit.ty(0.5) irit.interact(irit.list(s, d, irit.GetAxes(), view_mat1)) # # A saddle surface # s = irit.sbezier( irit.list( irit.list( irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 0.05, 0.2, 0.1 ), \ irit.ctlpt( irit.E3, 0.1, 0.05, 0.2 ) ), irit.list( \ irit.ctlpt( irit.E2, 0.1, (-0.2 ) ), \
s1 * irit.sc(2) * irit.ry(180) * irit.trans((2, 0, 0))) irit.color(srfs, irit.RED) irit.free(s1) ts1 = irit.tfromsrfs(srfs, 3, irit.KV_FLOAT) irit.color(ts1, irit.GREEN) ts2 = irit.tfromsrfs(srfs, 5, irit.KV_OPEN) irit.color(ts2, irit.YELLOW) ts3 = irit.tfromsrfs(srfs, 5, irit.KV_PERIODIC) irit.color(ts3, irit.MAGENTA) irit.interact(irit.list(srfs, ts1, ts2, ts3)) s2 = irit.ruledsrf(irit.circle((0, 0, 0), 1), irit.circle((0, 0, 0), 0.7)) srfs = irit.list(s2, s2 * irit.sc(0.5) * irit.tz(0.4), s2 * irit.tz(0.8), s2 * irit.sc(0.5) * irit.tz(1.2)) irit.color(srfs, irit.RED) irit.free(s2) ts1 = irit.tfromsrfs(srfs, 3, irit.KV_FLOAT) irit.color(ts1, irit.GREEN) ts2 = irit.tfromsrfs(srfs, 5, irit.KV_OPEN) irit.color(ts2, irit.YELLOW) ts3 = irit.tfromsrfs(srfs, 5, irit.KV_PERIODIC) irit.color(ts3, irit.MAGENTA)
irit.color(wig, irit.RED) paramumb = irit.sumbilic(wig, 0.05, 0.0001) irit.interact(irit.list(evaltoeuclidean(wig, paramumb), wig)) irit.free(wig) irit.free(c) irit.free(s) irit.free(paramumb) # ############################################################################ # Mean curvature evolute of surfaces. # ############################################################################ c1 = irit.pcircle((0, 0, 0), 1) scone = irit.ruledsrf(c1, c1 * irit.sc(0.1) * irit.tz(1)) irit.color(scone, irit.YELLOW) sconeev = irit.evolute(scone) irit.color(sconeev, irit.GREEN) irit.interact(irit.list(irit.GetAxes(), scone, sconeev)) scylin = irit.ruledsrf(c1, c1 * irit.tz(1)) irit.color(scylin, irit.YELLOW) scylinev = irit.evolute(scylin) irit.color(scylinev, irit.GREEN) irit.interact(irit.list(irit.GetAxes(), scylin, scylinev)) irit.save("sevolute", irit.list(irit.GetAxes(), scylin, scylinev, scone, sconeev)) irit.free(scone)
def cornerunitwalls( w, h, legw, legd ): lwall = irit.box( ( legd, 0, 0.2 ), 2 * w - 2 * legd, 0.002, h - 0.3 ) irit.attrib( lwall, "ptexture", woodtext ) irit.attrib( lwall, "rgb", woodclr ) swall = irit.box( ( legd, 0, 0.2 ), w - 2 * legd, 0.002, h - 0.3 ) irit.attrib( swall, "transp", irit.GenRealObject(0.3 )) arcbar1 = irit.arc( ( w, 0, 0 ), ( w, w, 0 ), ( 2 * w, w, 0 ) ) arcbar2 = irit.offset( arcbar1, irit.GenRealObject(-0.03 ), 0.1, 0 ) arcbar = irit.list( irit.extrude( arcbar1 + (-arcbar2 ) + irit.ctlpt( irit.E3, w, 0, 0 ), ( 0, 0, 0.03 ), 0 ), irit.ruledsrf( arcbar1, arcbar2 ), irit.ruledsrf( arcbar1, arcbar2 ) * irit.tz( 0.03 ) ) rdoorframe = irit.list( irit.box( ( w, 0, 0.2 ), 0.03, 0.03, h - 0.3 ),\ irit.box( ( 2 * w - 0.03, w - 0.03, 0.2 ), 0.03, 0.03, h - 0.3 ),\ arcbar * irit.tz( 0.2 ), arcbar * irit.tz( h - 0.1 - 0.03 ) ) irit.attrib( rdoorframe, "ptexture", woodtext ) irit.attrib( rdoorframe, "rgb", woodclr ) rdoorglass = irit.extrude( irit.offset( arcbar1, irit.GenRealObject(-0.02 ), 0.1, 0 ) + (-irit.offset( arcbar1, irit.GenRealObject(-0.03 ), 0.1, 0 ) ) + \ irit.ctlpt( irit.E3, w - 0.02, 0, 0 ), ( 0, 0, h - 0.3 - 0.04 ), 0 ) * irit.tz( 0.22 ) irit.attrib( rdoorglass, "transp", irit.GenRealObject(0.3 )) rdoor = irit.list( rdoorframe, rdoorglass ) rot_z = ( \ irit.ctlpt( irit.E1, 0 ) + \ irit.ctlpt( irit.E1, 130 ) ) irit.attrib( rdoor, "animation", irit.list( irit.tx( (-w ) ), rot_z, irit.tx( w ) ) ) retval = irit.list( lwall * irit.ty( 2 * w ), swall * irit.rz( 90 ) * irit.tx( 2 * w ) * irit.ty( w ), lwall * irit.rz( 90 ), swall, rdoor ) return retval
def cornerunitbars( w, h, legw, legd ): sbar = irit.box( ( legw, 0, 0 ), w - 2 * legw, legd, legw ) lbar = irit.box( ( legd, 0, 0 ), 2 * w - legd - legw, legd, legw ) arcbar1 = irit.arc( ( w, 0, 0 ), ( w, w, 0 ), ( 2 * w, w, 0 ) ) arcbar2 = irit.offset( arcbar1, (-legd ), 0.1, 0 ) arcbar = irit.list( irit.extrude( arcbar1 + (-arcbar2 ) + irit.ctlpt( irit.E3, w, 0, 0 ), ( 0, 0, legw ), 0 ), irit.ruledsrf( arcbar1, arcbar2 ), irit.ruledsrf( arcbar1, arcbar2 ) * irit.tz( legw ) ) barframe = irit.list( arcbar, sbar, sbar * irit.tx( w ) * irit.rz( 90 ) * irit.tx( 2 * w ), lbar * irit.rz( 90 ) * irit.tx( legd ), lbar * irit.tx( legw - legd ) * irit.ty( 2 * w - legd ) ) retval = irit.list( barframe * irit.tz( 0.1 ), barframe * irit.tz( h - 0.1 ) ) irit.attrprop( retval, "ptexture", woodtext ) irit.attrprop( retval, "rgb", woodclr ) return retval
(-arc1a ) * irit.sx( (-1 ) ) ) * irit.sc( 0.75 ) sctn2 = ( arc1a + arc2b + (-arc2b ) * irit.sx( (-1 ) ) + \ (-arc1a ) * irit.sx( (-1 ) ) ) * irit.sc( 0.75 ) sctn3 = ( arc1b + arc2d + (-arc2d ) * irit.sx( (-1 ) ) + \ (-arc1b ) * irit.sx( (-1 ) ) ) * irit.ty( 0.04 ) * irit.sc( 0.65 ) sctn4 = ( arc1b + arc2c + (-arc2c ) * irit.sx( (-1 ) ) + \ (-arc1b ) * irit.sx( (-1 ) ) ) * irit.ty( 0.04 ) * irit.sc( 0.65 ) irit.free( arc1a ) irit.free( arc1b ) irit.free( arc2a ) irit.free( arc2b ) irit.free( arc2c ) irit.free( arc2d ) rldsrf1 = irit.ruledsrf( sctn1, sctn2 * irit.tz( 0.5 ) ) * \ irit.ty( (-0.01 ) ) * irit.tz( (-0.001 ) ) * irit.sz( 1.004 ) piece1a = irit.box( ( (-0.5 ), 0, 0 ), 1, 1, 0.5 ) * rldsrf1 rldsrf2 = irit.ruledsrf( sctn3, sctn4 * irit.tz( 0.5 ) ) * \ irit.ty( (-0.01 ) ) * irit.tz( (-0.001 ) ) * irit.sz( 1.004 ) piece1b = irit.box( ( (-0.5 ), 0, 0 ), 1, 1, 0.5 ) * (-rldsrf2 ) irit.free( rldsrf1 ) irit.free( rldsrf2 ) irit.free( sctn1 ) irit.free( sctn2 ) irit.free( sctn3 ) irit.free( sctn4 )
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 ) irit.interact( irit.list( ruled2, cbodyout, cbodyin2 ) ) irit.save( "distmtc2", irit.list( ruled2, cbodyout, cbodyin2 ) ) cbodyin3 = irit.ffmatch( cbodyout, cbodyin, 30, 100, 2, 0,\ (-2 ) ) irit.color( cbodyin3, irit.RED ) irit.adwidth( cbodyin3, 3 )
crosssection32 = makecrosssection(c32) fuseintakeout = irit.sfromcrvs( irit.list(crosssection32, crosssection31, crosssection30), 3, irit.KV_OPEN) irit.attrib(fuseintakeout, "rgb", irit.GenStrObject("128, 128, 255")) irit.attrib(fuseintakeout, "texture", irit.GenStrObject("camouf")) c33 = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 4.6, 0, (-0.45 ) ), \ irit.ctlpt( irit.E3, 4.6, 0.15, (-0.45 ) ), \ irit.ctlpt( irit.E3, 4.6, 0.28, (-0.35 ) ), \ irit.ctlpt( irit.E3, 4.6, 0.28, (-0.25 ) ), \ irit.ctlpt( irit.E3, 4.6, 0.15, (-0.12 ) ), \ irit.ctlpt( irit.E3, 4.6, 0, (-0.12 ) ) ), irit.list( irit.KV_OPEN ) ) crosssection33 = makecrosssection(c33) fuseintakein = irit.list(irit.ruledsrf(crosssection32, crosssection33), irit.ruledsrf(c33 * irit.sy((-1)), c33)) irit.attrib(fuseintakein, "rgb", irit.GenStrObject("64, 64, 64")) irit.free(c30) irit.free(c31) irit.free(c32) irit.free(c33) irit.free(crosssection30) irit.free(crosssection31) irit.free(crosssection32) irit.free(crosssection33) # # Cockpit #
irit.color(pt, irit.YELLOW) irit.adwidth(pt, 3) bisectsrf = irit.cbisector3d(irit.list(helix, pt), 1) irit.color(bisectsrf, irit.GREEN) irit.interact(irit.list(helix, pt, bisectsrf)) irit.save("bisectr6", irit.list(helix, pt, bisectsrf)) # ############################################################################ # # A bilinear surface: sphere--plane bisector # s1 = 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(s1, irit.RED) pt = (0, 0, 1) irit.adwidth(irit.point(pt[0], pt[1], pt[2]), 3) irit.color(irit.point(pt[0], pt[1], pt[2]), irit.YELLOW) bisectsrf = irit.sbisector(s1, pt) irit.color(bisectsrf, irit.GREEN) irit.interact(irit.list(s1, pt, bisectsrf)) irit.save("bisectr7", irit.list(s1, pt, bisectsrf)) z = 1
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) corkprisa = irit.prisa(cork, 256, 1, irit.COL, (0, 0, 0), 0)
def forest3(n, m, blevel, level): retval = irit.nil() i = 0 while (i <= n): j = 0 while (j <= m): irit.snoc( virttree3( irit.point( i * 5, j * 5, 0 ), irit.vector( 0, 0, 1 ), 0.3, blevel, level ),\ retval ) j = j + 1 i = i + 1 return retval base = irit.ruledsrf( irit.ctlpt( irit.E2, (-20 ), (-20 ) ) + \ irit.ctlpt( irit.E2, (-20 ), 40 ), \ irit.ctlpt( irit.E2, 40, (-20 ) ) + \ irit.ctlpt( irit.E2, 40, 40 ) ) irit.attrib(base, "rgb", irit.GenStrObject("244,164,96")) irit.attrib(base, "ptexture", irit.GenStrObject("ground.rle")) irit.viewobj(base) irit.save("base", base) frst = forest3(1, 1, 2, 4) irit.view(irit.list(frst, base), irit.ON) # # Be prepared, this one is quite large. # # frst = forest3( 4, 4, 3, 5 ); # viewstate( "PolyAprx", 0 ); # viewstate( "PolyAprx", 0 );
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.cbspline( 2, irit.list( irit.ctlpt( irit.E2, 0.54, 0.42 ), \ irit.ctlpt( irit.E2, 0.46, 0.01 ) ), irit.list( irit.KV_OPEN ) ) irit.color(c5, irit.GREEN) c6 = irit.pcircle((0, 0, 0), 1) irit.color(c6, irit.RED) s2 = irit.ruledsrf(c2, c2 * irit.tz(0.5)) irit.color(s2, irit.CYAN) s3 = irit.sfromcrvs( irit.list(c3 * irit.tz((-0.5)), c3 * irit.sc(1.3), c3 * irit.tz(0.5)), 3, irit.KV_OPEN) irit.color(s3, irit.YELLOW) # ############################################################################ displayobjobjmdres(pt1, c6, 1e-010) displayobjobjmdres(pt2, c2, 1e-010) displayobjobjmdres(pt2, c4, 1e-010)
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) pln = pln * irit.rx(45) * irit.rz(45) * irit.tx(1) * irit.ty((-2)) printtest("plane", irit.isgeom(pln, irit.GEOM_PLANAR, 1e-010), 1) 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, 1 ) ) printtest("plane", irit.isgeom(pln, irit.GEOM_PLANAR, 0.001), 0) pln = irit.ruledsrf( irit.cbezier( irit.list( irit.ctlpt( irit.E3, (-1 ), 0, 10.01 ), \ irit.ctlpt( irit.E3, 0, 0.2, 10.01 ), \ irit.ctlpt( irit.E3, 1, 0, 10.01 ) ) ), irit.cbezier( irit.list( \
# # Gershon Elber, October 1999 # save_res = irit.GetResolution() save_mat = irit.GetViewMatrix() irit.SetViewMatrix(irit.rx(2) * irit.ry(2) * irit.sc(0.5)) irit.viewobj(irit.GetViewMatrix()) irit.SetViewMatrix(save_mat) # ############################################################################ s = 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.rx( 90 ) s = irit.sraise(irit.sraise(s, irit.ROW, 3), irit.COL, 3) s = (-irit.seditpt(s, irit.ctlpt(irit.E3, 0, 1, 0), 1, 1)) irit.color(s, irit.MAGENTA) reflectlns = irit.nil() x = (-1.6) while (x <= 1.6): irit.snoc( irit.ctlpt( irit.E3, x, 2, (-10 ) ) + \ irit.ctlpt( irit.E3, x, 2, 10 ), reflectlns ) x = x + 0.8 irit.color(reflectlns, irit.CYAN) irit.adwidth(reflectlns, 2) irit.SetResolution(30)
# # The Blade # 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(
(basexymin, basexymin, 16), (16, basexymin, 16)), irit.FALSE) irit.color(wall1, irit.WHITE) irit.attrib(wall1, "rgb", irit.GenStrObject("255,255,255")) irit.color(wall2, irit.WHITE) irit.attrib(wall2, "rgb", irit.GenStrObject("255,255,255")) backgrd = irit.list(base, wall1, wall2) irit.free(base) irit.free(wall1) irit.free(wall2) # ############################################################################ # First Morphing Sequence. # # ############################################################################ srf1 = irit.ruledsrf(irit.circle((0, 0, baselvl + 0.01), 1), irit.circle((0, 0, baselvl + 0.01), 0.01)) irit.color(srf1, irit.YELLOW) bcross = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 0, 0, (-0.71 ) ), \ irit.ctlpt( irit.E3, 0.2, 0, (-0.72 ) ), \ irit.ctlpt( irit.E3, 0.25, 0, (-0.7 ) ), \ irit.ctlpt( irit.E3, 0.25, 0, (-0.1 ) ), \ irit.ctlpt( irit.E3, 0.2, 0, (-0.05 ) ), \ irit.ctlpt( irit.E3, 0.15, 0, 0 ), \ irit.ctlpt( irit.E3, 0.1, 0, 0.6 ), \ irit.ctlpt( irit.E3, 0.11, 0, 0.61 ), \ irit.ctlpt( irit.E3, 0.12, 0, 0.61 ), \ irit.ctlpt( irit.E3, 0.12, 0, 0.65 ), \ irit.ctlpt( irit.E3, 0.09, 0, 0.65 ), \ irit.ctlpt( irit.E3, 0.07, 0, 0.64 ), \ irit.ctlpt( irit.E3, 0.1, 0, (-0.05 ) ), \
# ############################################################################ # # Case 1 # c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, (-1 ), 0, (-1 ) ), \ irit.ctlpt( irit.E3, 0, 1, (-1 ) ), \ irit.ctlpt( irit.E3, 0.3, 0, (-1 ) ), \ irit.ctlpt( irit.E3, 1, 0, (-1 ) ) ) ) c2 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, (-1 ), 0, 1 ), \ irit.ctlpt( irit.E3, 0, 1, 1 ), \ irit.ctlpt( irit.E3, 0.3, 1, 1 ), \ irit.ctlpt( irit.E3, 1, 0, 1 ) ) ) r1 = irit.ruledsrf(c1, c2) r2 = r1 * irit.rx(90) 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), 10, 0), 1) irit.color(c, irit.RED) irit.adwidth(c, 3) irit.interact(irit.list(r1, r2, c)) zerosetsrf = irit.rrinter(irit.cmesh(r1, irit.ROW, 0), irit.cmesh(r1, irit.ROW, 1),
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 # # The board # square = irit.ruledsrf( irit.ctlpt( irit.E2, 0, 0 ) + \ irit.ctlpt( irit.E2, 1, 0 ), \ irit.ctlpt( irit.E2, 0, 1 ) + \ irit.ctlpt( irit.E2, 1, 1 ) ) blacksqrs = irit.nil() whitesqrs = irit.nil() # X + Y Even? x = 1 while (x <= 8): y = 1 while (y <= 8): if (abs(math.floor((x + y) / 2) * 2 - x + y) < 0.01): irit.snoc(square * irit.tx(x) * irit.ty(y), blacksqrs) else: irit.snoc(square * irit.tx(x) * irit.ty(y), whitesqrs) y = y + 1