def ant(scl): save_res = irit.GetResolution() bodyall = antbody() body = irit.nth(bodyall, 1) eyes = irit.nth(bodyall, 2) leg = antleg() llegs = irit.list( leg * irit.sc(1.1) * irit.sx(1.3) * irit.ry((-45)) * irit.trans( (0.1, 0, 1.02)), leg * irit.sc(1.3) * irit.ry(10) * irit.trans((0.1, 0.05, 1)), leg * irit.sc(1.2) * irit.sx(1.4) * irit.ry(40) * irit.trans( (0.1, 0.02, 0.95))) irit.SetResolution(20) irit.attrprop(llegs, "u_resolution", irit.GenRealObject(0.2)) antennas = irit.list( antantenna() * irit.ry((-110)) * irit.trans(((-0.02), 0.2, 1.6)), antantenna() * irit.ry((-70)) * irit.trans((0.02, 0.2, 1.6))) irit.attrprop(antennas, "u_resolution", irit.GenRealObject(0.2)) body = (body + irit.gpolygon(llegs, 1) + irit.gpolygon(llegs, 1) * irit.sx( (-1)) + irit.gpolygon(antennas, 1)) irit.attrib(body, "rgb", irit.GenStrObject("255,50,50")) irit.SetResolution(save_res) retval = irit.list( body, eyes) * irit.sz(1.3) * irit.sc(1) * irit.ty(0.28785) * irit.rx(90) return retval
def antanim(scl): save_res = irit.GetResolution() bodyall = antbody() body = irit.nth(bodyall, 1) eyes = irit.nth(bodyall, 2) llegs = irit.list( antlleganim(1) * irit.sc(1.1) * irit.sx(1.3) * irit.ry( (-45)) * irit.trans((0.1, 0, 1.02)), antlleganim((-1)) * irit.sc(1.3) * irit.ry(10) * irit.trans( (0.1, 0.05, 1)), antlleganim(1) * irit.sc(1.2) * irit.sx(1.4) * irit.ry(40) * irit.trans((0.1, 0.02, 0.95))) rlegs = irit.list( antrleganim( (-1)) * irit.sc(1.1) * irit.sx(1.3) * irit.ry(45) * irit.trans( ((-0.1), 0, 1.02)), antrleganim(1) * irit.sc(1.3) * irit.ry((-10)) * irit.trans( ((-0.1), 0.05, 1)), antrleganim((-1)) * irit.sc(1.2) * irit.sx(1.4) * irit.ry( (-40)) * irit.trans(((-0.1), 0.02, 0.95))) irit.SetResolution(20) antennas = irit.list( antantenna() * irit.ry((-110)) * irit.trans(((-0.02), 0.2, 1.6)), antantenna() * irit.ry((-70)) * irit.trans((0.02, 0.2, 1.6))) irit.attrprop(antennas, "u_resolution", irit.GenRealObject(0.2)) body = (body + irit.gpolygon(antennas, 1)) irit.attrib(body, "rgb", irit.GenStrObject("255,50,50")) irit.SetResolution(save_res) retval = irit.list( body, llegs, rlegs, eyes) * irit.sz(1.3) * irit.sc(1) * irit.ty(0.28785) * irit.rx(90) mov_y = irit.creparam( irit.ctlpt( irit.E1, 0 ) + \ irit.ctlpt( irit.E1, (-1 ) ), 0, 1.2 ) irit.attrib(retval, "animation", mov_y) return retval
def buildvisibilitymap( c, step, highlightangle ): retval = irit.nil( ) i = 0 while ( i <= 360 ): dir = irit.point( math.cos( i * math.pi/180 ), math.sin( i * 3.14159/180 ), 0 ) crvs = irit.cvisible( c, irit.Fetch3TupleObject(dir), 1e-005 ) crvdmn = cnvrtcrvs2domains( crvs, i ) if ( highlightangle == i ): irit.attrib( crvdmn, "width", irit.GenRealObject(0.01 )) irit.attrib( crvdmn, "gray", irit.GenRealObject(0 )) irit.attrib( crvdmn, "rgb", irit.GenStrObject("255, 255, 128" )) irit.adwidth( crvdmn, 3 ) highcrvdmn = crvdmn * irit.sx( 1/360.0 ) irit.attrib( crvs, "width", irit.GenRealObject(0.03 )) irit.adwidth( crvs, 3 ) irit.attrib( crvs, "rgb", irit.GenStrObject("255, 255, 128" )) irit.snoc( crvs, retval ) else: irit.attrib( crvdmn, "width", 0.01 ) irit.attrib( crvdmn, "gray", 0.5 ) irit.attrib( crvdmn, "rgb", "128, 128, 255" ) irit.snoc( crvdmn * irit.sx( 1/360 ), retval ) i = i + step retval = ( retval + irit.list( highcrvdmn ) ) return retval
def buildvisibilitymap( c, step ): retval = irit.nil( ) i = 0 while ( i <= 360 ): dir = irit.point( math.cos( i * math.pi/180 ), math.sin( i * math.pi/180 ), 0 ) crvs = irit.cvisible( c, dir, 1e-005 ) irit.snoc( cnvrtcrvs2domains( crvs, i ) * irit.sx( 1/360.0 ), retval ) i = i + step return retval
def makebboxunit(obj): b = irit.bbox(obj) xmin = irit.FetchRealObjecy(irit.nth(b, 1)) xmax = irit.nth(b, 2) ymin = irit.nth(b, 3) ymax = irit.nth(b, 4) retval = obj * irit.tx((-xmin)) * irit.ty( (-ymin)) * irit.sx(1.0 / (xmax - xmin)) * irit.sy(1.0 / (ymax - ymin)) return retval
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
# # Antipodal points for surfaces. # c1 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0.7, 0.5 ), \ irit.ctlpt( irit.E2, (-0.4 ), 0.4 ), \ irit.ctlpt( irit.E2, (-0.4 ), (-0.4 ) ), \ irit.ctlpt( irit.E2, 0.7, (-0.5 ) ) ), irit.list( irit.KV_OPEN ) ) c2 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0.7, 0.5 ), \ irit.ctlpt( irit.E2, (-0.4 ), (-0.8 ) ), \ irit.ctlpt( irit.E2, (-0.4 ), 0.8 ), \ irit.ctlpt( irit.E2, 0.7, (-0.5 ) ) ), irit.list( irit.KV_OPEN ) ) s1 = irit.sfromcrvs( irit.list(c1, c2 * irit.sc(1.1) * irit.tx((-0.2)) * irit.tz(0.2), c2 * irit.sx(1.1) * irit.tx((-0.2)) * irit.tz(0.4), c1 * irit.tz(0.6)), 3, irit.KV_OPEN) irit.color(s1, irit.RED) apline1 = evalantipodalptsonsrf(s1) irit.interact(irit.list(irit.GetAxes(), apline1, s1)) c1 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 1, 0.15 ), \ irit.ctlpt( irit.E2, (-0.4 ), 0.4 ), \ irit.ctlpt( irit.E2, (-0.4 ), (-0.4 ) ), \ irit.ctlpt( irit.E2, 1, (-0.15 ) ) ), irit.list( irit.KV_OPEN ) ) c2 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 1, 0.1 ), \ irit.ctlpt( irit.E2, 0.65, (-0.2 ) ), \ irit.ctlpt( irit.E2, (-0.2 ), 0.25 ), \
irit.save("bisectr5", irit.list(c1, c2, bisectsrf)) # ############################################################################ # # A helix and a point # helix = irit.pcircle((0, 0, 0), 1) * irit.rz(90) * irit.ry((-90)) i = 0 while (i <= irit.SizeOf(helix) - 1): pth = irit.coord(helix, i) helix = irit.ceditpt( helix, irit.ctlpt(irit.E3, i / 4, irit.coord(pth, 2), irit.coord(pth, 3)), i) i = i + 1 helix = (helix + helix * irit.tx(9 / 4)) * irit.sx(0.5) irit.color(helix, irit.RED) irit.adwidth(helix, 3) pt = irit.point(1.2, 0, 0) 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)) # ############################################################################
irit.trans( irit.Fetch3TupleObject(irit.coerce( p, irit.VECTOR_TYPE ) + n * r1 )) c2 = c * \ irit.sc( r2 ) * \ irit.rotz2v( irit.Fetch3TupleObject(d2) ) * \ irit.trans( irit.Fetch3TupleObject(irit.coerce( p, irit.VECTOR_TYPE ) + n * r2) ) retval = irit.list( p, c1, c2, p + irit.coerce(irit.coerce(p, irit.POINT_TYPE) + v1, irit.E3), p + irit.coerce(irit.coerce(p, irit.POINT_TYPE) + v2, irit.E3), positionasymptotes(srf, u, v)) irit.adwidth(retval, 2) irit.color(retval, irit.YELLOW) return retval spr = irit.spheresrf(0.5) * irit.sx(0.5) * irit.tx(2) cyl = irit.cylinsrf(1, 1) * irit.sc(0.5) trs = irit.torussrf(1, 0.3) * irit.sc(0.5) * irit.tx((-2)) all = irit.list(spr, cyl, trs, positioncurvature(trs, 0.5, 0.5), positioncurvature(trs, 2.2, 2.8), positioncurvature(trs, 2.8, 1.8), positioncurvature(spr, 0.5, 0.5), positioncurvature(spr, 1, 1), positioncurvature(cyl, 1.5, 1.25), positioncurvature(cyl, 2, 1.5)) irit.interact(all) irit.save("scrvtrev", all) irit.free(all)
irit.point((-0.030076), 0.34839, 0.936867), irit.point(0.591636, (-0.37821), 0.711986)) c = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E2, 0.8, 1 ), \ irit.ctlpt( irit.E2, 1, 0.8 ), \ irit.ctlpt( irit.E2, 1, (-0.8 ) ), \ irit.ctlpt( irit.E2, 0.8, (-1 ) ), \ irit.ctlpt( irit.E2, (-0.8 ), (-1 ) ), \ irit.ctlpt( irit.E2, (-1 ), (-0.8 ) ), \ irit.ctlpt( irit.E2, (-1 ), 0.8 ), \ irit.ctlpt( irit.E2, (-0.8 ), 1 ) ), irit.list( irit.KV_PERIODIC ) ) s = irit.sfromcrvs( irit.list(c, c * irit.sc(0.7) * irit.tz(0.65), c * irit.sx(0.65) * irit.sy(0.75) * irit.tz(0.7), c * irit.sc(1.7) * irit.tz(1.1), c * irit.tz(1.5)), 3, irit.KV_OPEN) irit.color(s, irit.YELLOW) irit.SetResolution(70) silhs = irit.nil() # Loop with step one for slower, more complete result. # printf( "Processing vector %d\\n", list( i ) ): i = 1 while (i <= irit.SizeOf(sphdirs)): irit.snoc( irit.silhouette( s, irit.Fetch3TupleObject(
( (-0.2 ), 0.08, 0 ), ( (-0.19 ), 0.2, 0 ) ) arc2a = irit.arc( ( (-0.4 ), 0.2, 0 ), ( (-0.39 ), 0.3, 0 ), ( (-0.4 ), 0.4, 0 ) ) arc2b = irit.arc( ( (-0.25 ), 0.2, 0 ), ( (-0.24 ), 0.25, 0 ), ( (-0.25 ), 0.3, 0 ) ) arc2c = irit.arc( ( (-0.22 ), 0.2, 0 ), ( (-0.21 ), 0.25, 0 ), ( (-0.22 ), 0.3, 0 ) ) arc2d = irit.arc( ( (-0.37 ), 0.2, 0 ), ( (-0.36 ), 0.28, 0 ), ( (-0.37 ), 0.36, 0 ) ) sctn1 = ( arc1a + arc2a + (-arc2a ) * irit.sx( (-1 ) ) + \ (-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 )
irit.interact( irit.list( irit.GetAxes(), apline2, c2 ) ) irit.save( "antipdl1", irit.list( irit.list( c1, apline1 ) * irit.tx( (-1 ) ), irit.list( c2, apline2 ) * irit.tx( 1 ) ) ) # ############################################################################ c1 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0.7, 0.5 ), \ irit.ctlpt( irit.E2, (-0.4 ), 0.4 ), \ irit.ctlpt( irit.E2, (-0.4 ), (-0.4 ) ), \ irit.ctlpt( irit.E2, 0.7, (-0.5 ) ) ), irit.list( irit.KV_OPEN ) ) c2 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0.7, 0.5 ), \ irit.ctlpt( irit.E2, (-0.4 ), (-0.8 ) ), \ irit.ctlpt( irit.E2, (-0.4 ), 0.8 ), \ irit.ctlpt( irit.E2, 0.7, (-0.5 ) ) ), irit.list( irit.KV_OPEN ) ) s1 = irit.sfromcrvs( irit.list( c1, c2 * irit.sc( 1.1 ) * irit.tx( (-0.2 ) ) * irit.tz( 0.2 ), c2 * irit.sx( 1.1 ) * irit.tx( (-0.2 ) ) * irit.tz( 0.4 ), c1 * irit.tz( 0.6 ) ), 3, irit.KV_OPEN ) apline1 = evalantipodalptsonsrf( s1 ) irit.interact( irit.list( irit.GetAxes(), apline1, s1 ) ) c1 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 1, 0.15 ), \ irit.ctlpt( irit.E2, (-0.4 ), 0.4 ), \ irit.ctlpt( irit.E2, (-0.4 ), (-0.4 ) ), \ irit.ctlpt( irit.E2, 1, (-0.15 ) ) ), irit.list( irit.KV_OPEN ) ) c2 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 1, 0.1 ), \ irit.ctlpt( irit.E2, 0.65, (-0.2 ) ), \ irit.ctlpt( irit.E2, (-0.2 ), 0.25 ), \ irit.ctlpt( irit.E2, (-0.2 ), (-0.252 ) ), \
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 ), p * \ ctx( 0 + t, 1.5 ) * \ irit.ty( 0.22 ), p * \ ctx( 0.3 + t, 1.5 ) * \ irit.ty( 0.17 ) * \ irit.tz( 0.3 ), p * \ ctx( 2 + t, 1.5 ) * \ irit.ty( (-0.06 ) ) * \ irit.tz( 2 ), p * \ ctx( 4 + t, 1.5 ) * \ irit.ty( (-0.06 ) ) * \ irit.tz( 4 ), p * \ ctx( 6 + t, 1.5 ) * \ irit.ty( (-0.06 ) ) * \ irit.tz( 6 ), p * \ ctx( 8 + t, 2.5 ) * \ irit.ty( (-0.065 ) ) * \ irit.tz( 8 ), p * \ ctx( 10 + t, 2.5 ) * \ irit.ty( (-0.07 ) ) * \ irit.tz( 10 ), p * \ ctx( 12 + t, 2.5 ) * \ irit.ty( (-0.075 ) ) * \ irit.tz( 12 ), p * \ ctx( 14 + t, 1.5 ) * \ irit.ty( (-0.08 ) ) * \ irit.tz( 14 ), p * \ ctx( 16 + t, 1.5 ) * \ irit.ty( (-0.09 ) ) * \ irit.tz( 16 ), p * \ ctx( 18 + t, 1.5 ) * irit.ty( (-0.1 ) ) * irit.tz( 18 ), p * \ irit.ty( (-0.1 ) ) * \ irit.tz( 20 ), p * \ irit.ty( (-0.1 ) ) * \ irit.tz( 21 ) ), irit.list( irit.KV_OPEN ) ) c = irit.circle( ( 0, 0, 0 ), 0.36 ) * irit.rz( (-90 ) ) scalecrv = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E2, 0, 0.001 ), \ irit.ctlpt( irit.E2, 0.1, 0.1 ), \ irit.ctlpt( irit.E2, 0.2, 0.4 ), \ irit.ctlpt( irit.E2, 0.3, 0.7 ), \ irit.ctlpt( irit.E2, 0.4, 0.8 ), \ irit.ctlpt( irit.E2, 0.5, 0.9 ), \ irit.ctlpt( irit.E2, 0.6, 0.95 ), \ irit.ctlpt( irit.E2, 0.7, 1 ), \ irit.ctlpt( irit.E2, 0.8, 1 ) ), irit.list( irit.KV_OPEN ) ) s1 = irit.swpsclsrf( c, ct, scalecrv, irit.vector( 0, 1, 0 ), 1 ) irit.attrib( s1, "ptexture", irit.GenStrObject("snake2.gif,1,30" )) s2 = irit.sfromcrvs( irit.list( c * \ irit.ty( (-0.1 ) ) * \ irit.tz( 21 ), c * \ irit.ty( (-0.1 ) ) * \ irit.tz( 22 ), c * \ irit.ty( (-0.14 ) ) * \ irit.sx( 2.2 ) * \ irit.sy( 1.2 ) * \ irit.tz( 23 ), c * \ irit.ty( (-0.14 ) ) * \ irit.sx( 2.2 ) * \ irit.sy( 1.2 ) * \ irit.tz( 24 ), c * \ irit.sy( 0.9 ) * \ irit.ty( (-0.1 ) ) * \ irit.sx( 1.2 ) * \ irit.tz( 25 ), c * \ irit.ty( (-0.1 ) ) * \ irit.sc( 0.001 ) * \ irit.tz( 25 ) ), 3, irit.KV_OPEN ) irit.attrib( s2, "ptexture", irit.GenStrObject("snake2.gif,1,5" )) eyes = irit.list( irit.sphere( ( 0.42, (-0.35 ), 24.5 ), 0.1 ), irit.sphere( ( (-0.42 ), (-0.35 ), 24.5 ), 0.1 ) ) irit.color( eyes, irit.BLACK ) retval = irit.list( s1, s2, eyes ) * irit.rx( (-90 ) ) * irit.tz( 0.261 ) return retval
itemaux1 = irit.box( ((-rad) / sqrt2, (-rad) / sqrt2, (-len)), rad * 2 / sqrt2, rad * 2 / sqrt2, len * 2) * irit.rz(45) itemaux2 = ( itemaux1 * irit.tx(rad) - itemaux1 * irit.rotx(90) * irit.tz(rad + eps) - itemaux1 * irit.rotx(90) * irit.tz((-rad) - eps)) * irit.tx(eps / 2) diag = (len + eps) diagpoly = irit.poly( irit.list((diag, diag, 0), ((-diag), diag, 0), ((-diag), 0, diag), (diag, 0, diag)), irit.FALSE) item1 = (itemaux2 - diagpoly - diagpoly * irit.sy((-1)) - diagpoly * irit.sz( (-1)) - diagpoly * irit.sz((-1)) * irit.sy((-1))) item1 = irit.convex(item1) irit.color(item1, irit.RED) item2 = item1 * irit.sx((-1)) irit.color(item2, irit.MAGENTA) item3 = item1 * irit.rx(90) * irit.rz(90) irit.color(item3, irit.GREEN) item4 = item1 * irit.rx(90) * irit.rz((-90)) irit.color(item4, irit.YELLOW) item5 = item1 * irit.rx(90) * irit.ry(90) irit.color(item5, irit.BLUE) item6 = item1 * irit.rx(90) * irit.ry((-90)) irit.color(item6, irit.CYAN) grp1 = irit.list(item2, item3, item5)
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 ) 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 ) handaxis = irit.crefine( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 0.3, 0, 0.1 ), \ irit.ctlpt( irit.E3, 0.5, 0, 0.5 ), \ irit.ctlpt( irit.E3, 0.5, 0, 0.8 ), \ irit.ctlpt( irit.E3, 0, 0, 0.8 ) ), irit.list( irit.KV_OPEN ) ), 0, irit.list( 0.1, 0.23, 0.43, 0.57 ) ) handle = irit.swpsclsrf( c1 * irit.sx( 0.7 ), handaxis * irit.sc( 1.5 ), irit.GenRealObject(0.15), irit.list( 0, 1, 0 ), 1 ) * irit.trans( ( 1, 0, 0.4 ) ) cup = irit.list( body, handle ) irit.color( cup, irit.WHITE ) irit.save( "cup", cup ) irit.interact( cup ) bodyin = irit.sregion( body, irit.ROW, 0.6, 1 ) irit.color( bodyin, irit.RED ) bodyout = irit.sregion( body, irit.ROW, 0, 0.6 ) irit.color( bodyout, irit.GREEN ) irit.interact( irit.list( bodyout, bodyin ) ) handleout = handle
displayobjobjhdres( c3, c2, eps, 1 ) displayobjobjhdres( c2, c3, eps, 1 ) displayobjobjhdres( c3, c4, eps, 0 ) displayobjobjhdres( c3, c4, eps, 1 ) displayobjobjhdres( c4, c3, eps, 1 ) displayobjobjhdres( c4, c4a * irit.tx( (-0.5 ) ), eps, 0 ) displayobjobjhdres( c2, c4a * irit.tx( (-0.5 ) ), eps, 0 ) displayobjobjhdres( c2, c4a * irit.sx( (-3 ) ) * irit.tx( 0.5 ), eps, 0 ) displayobjobjhdres( c2, c2a * irit.sx( (-3 ) ) * irit.tx( 0.5 ), eps, 0 ) displayobjobjhdres( c5, c5 * irit.sx( 0.7 ) * irit.sy( 0.95 ) * irit.ry( 20 ), eps, 0 ) displayobjobjhdres( c6, c6 * irit.rz( 20 ), eps, 0 ) irit.save( "hausdorf", glblres ) # view( GlblRes, 1 ); # ############################################################################ irit.free( glblres ) iprod = irit.iritstate( "bspprodmethod", iprod ) irit.free( iprod )
displayobjobjmdres(pt1, c6, 1e-010) displayobjobjmdres(pt2, c2, 1e-010) displayobjobjmdres(pt2, c4, 1e-010) displayobjobjmdres(c3, c3 * irit.tx((-0.5)), 1e-010) displayobjobjmdres(c4, c4 * irit.rz(180), 1e-010) displayobjobjmdres(c4, c4a * irit.tx((-0.5)), 1e-010) displayobjobjmdres(s2, c4a * irit.tx((-0.5)), 1e-010) displayobjobjmdres(s2, c4a * irit.sx((-3)) * irit.tx(0.5), 1e-010) displayobjobjmdres(s2, c2a * irit.sx((-3)) * irit.tx(0.5), 1e-010) displayobjobjmdres(s2, s2 * irit.sx((-3)) * irit.tx(0.5), 1e-010) displayobjobjmdres(s2, s2 * irit.sx((-3)) * irit.tx(0.5) * irit.ry((-10)), 1e-010) displayobjobjmdres(s2, s2 * irit.sx((-3)) * irit.tx(0.5) * irit.ry(10), 1e-010) displayobjobjmdres(s3, s3 * irit.sx(3) * irit.tx(0.5) * irit.ry(10), 1e-010) displayobjobjmdres(s3 * irit.rx(90), s3 * irit.sx(3) * irit.tx(0.5) * irit.ry(10), 1e-010)
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)
v = irit.vector(1, 2, 3) w = irit.rotvec2z(v) * v a1 = irit.arrow3d(irit.point(0, 0, 0), irit.vector(1, 1, 1), 1.5, 0.05, 0.5, 0.1) a2 = irit.arrow3d(irit.point(1, 0, 0), irit.vector((-1.5), 0.5, 1), 1, 0.02, 0.2, 0.05) a3 = irit.arrow3d( irit.point( 0, 0.6, 0.8 ), irit.vector( 0.5, 0.7, 0.3 ), 0.5, 0.01, 0.2,\ 0.02 ) irit.interact(irit.list(irit.GetAxes(), a1, a2, a3)) irit.save( "macros8", irit.list( v, irit.tx( 1 ) * \ irit.ty( 1 ) * \ irit.tz( 1 ) * \ irit.sx( 2 ) * \ irit.sy( 2 ) * \ irit.sz( 3 ) * \ irit.sc( 3 ) * \ irit.rx( 10 ) * \ irit.ry( 20 ) * \ irit.rz( (-30 ) ), irit.rotz2vec( v ) * w, irit.rotz2vec( irit.vector( 1, 0, 0 ) ), irit.rotz2vec( irit.vector( 0, 1, 0 ) ), irit.rotz2vec( irit.vector( 0, 0, 1 ) ), irit.rotvec2z( v ), w, a1, a2, a3 ) ) irit.free(v) irit.free(w)
if (irit.ThisObject(obj) == irit.SURFACE_TYPE): retval = warpsrf(obj, tv) else: if (irit.ThisObject(obj) == irit.POLY_TYPE): retval = warppoly(obj, tv) else: retval = obj * irit.tx(0) return retval # # Define the FFD trivariate # teapot = teapotorig * \ irit.sc( 0.2 ) * \ irit.sx( (-1 ) ) * \ irit.rx( 90 ) * \ irit.rz( 180 ) s = irit.planesrf((-1), (-1), 1, 1) * irit.sc(2.4) discs = irit.list( s * \ irit.sc( 0.02 ) * \ irit.sx( 2 ) * \ irit.tx( 0.56 ) * \ irit.tz( 0.42 ), s * \ irit.sc( 0.02 ) * \ irit.sx( 2 ) * \ irit.trans( ( 0.66, 0, 0.5 ) ), s * \ irit.sc( 0.04 ) * \
# # A sphere not centered at the origin # s = irit.spheresrf(1) * irit.tx(0.6) d = irit.duality(s) irit.color(d, irit.YELLOW) irit.interact(irit.list(s, d, irit.GetAxes())) # # 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.ctlpt( irit.E2, 4.305, 0.086 ), \ irit.ctlpt( irit.E2, 5.569, (-0.845 ) ), \ irit.ctlpt( irit.E2, 6.914, (-2.508 ) ), \ irit.ctlpt( irit.E2, 11.147, (-1.629 ) ), \ irit.ctlpt( irit.E2, 8.565, (-0.453 ) ), \ irit.ctlpt( irit.E2, 4.533, 1.283 ), \ irit.ctlpt( irit.E2, 8.031, 2.972 ), \ irit.ctlpt( irit.E2, 9.304, 4.314 ), \ irit.ctlpt( irit.E2, 8.252, 6.532 ), \ irit.ctlpt( irit.E2, 5.942, 5.176 ), \ irit.ctlpt( irit.E2, 5.483, 1.597 ), \ irit.ctlpt( irit.E2, 3.427, 2.095 ) ), irit.list( irit.KV_PERIODIC ) ) * irit.sc( 0.1 ) * irit.tx( (-0.5 ) ) * irit.ty( (-0.2 ) ) crvtr = irit.cfncrvtr(c, 1000, 2, 1) crvtr2d = irit.coerce(crvtr, irit.E2) * irit.rz(90) * irit.sx( (-1)) * irit.sy(0.005) irit.color(crvtr2d, irit.YELLOW) irit.interact(irit.list(irit.GetAxes(), c, crvtr2d)) c2 = rigidmotionpos(irit.cfncrvtr(crvtr, 0.001, 3, 0), c) irit.color(c2, irit.YELLOW) irit.interact(irit.list(c, c2)) irit.save("crvtrrc1", irit.list(c, c2, crvtr)) # ############################################################################ crvtr = irit.cfncrvtr(c, 100, 2, 1)
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
pt = irit.teval( tv, x, y, z ) v = math.floor( i/float(usize) ) u = i - v * usize srf = irit.seditpt( srf, pt, u, v ) i = i + 1 irit.attrib( srf, "color", clr ) retval = srf return retval # # Properly orient the Teapot in the parametric space of the Trivariate # prmdomain = irit.box( ( 0, 0, 0 ), 0.5, 1, 1 ) irit.attrib( prmdomain, "transp", irit.GenRealObject(0.8) ) teapot = teapotorig * irit.sc( 0.13 ) * irit.rz( 90 ) * irit.rx( 90 ) * irit.sx( (-1 ) ) * irit.trans( ( 0, 0.5, 0.5 ) ) all = irit.list( prmdomain, teapot ) * irit.rz( 90 ) * irit.ry( 40 ) * irit.rx( 40 ) interact( irit.list( all, irit.GetViewMatrix() ) ) irit.save( "warp1trv", all ) # # Warp the teapot, one surface at a time, after some surface refinement. # warpedteapot = irit.nil( ) i = 1 while ( i <= irit.SizeOf( teapot ) ): srf = irit.nth( teapot, i ) clr = irit.getattr( srf, "color" ) srf = irit.sreparam( irit.sreparam( srf, irit.COL, 0, 1 ), irit.ROW, 0,\
ptpln = irit.nil() i = 1 while (i <= 15): irit.snoc( irit.point(irit.random((-1), 1), irit.random((-1), 1), irit.random((-eps), eps)), ptpln) i = i + 1 printfitresult("bilinear fit: plane xy (15 pts):", irit.analyfit(ptpln, ptpln, 0, 1)) printfitresult("bilinear fit: plane xy sclx 2 scly 3 (15 pts):", irit.analyfit(ptpln, ptpln * irit.sx(2) * irit.sy(3), 0, 1)) printfitresult("bilinear fit: plane xy trasnaled x=1, y=2 (15 pts):", irit.analyfit(ptpln, ptpln * irit.tx(1) * irit.ty(2), 0, 1)) printfitresult( "bilinear fit: plane xy rotated 45 along x (15 pts):", irit.analyfit(ptpln, ptpln * irit.sy(math.sqrt(2)) * irit.rx(45), 0, 1)) printfitresult( "bilinear fit: plane xy rotated 45 along x, 75 along y (15 pts):", irit.analyfit(ptpln, ptpln * irit.sy(math.sqrt(2)) * irit.rx(45) * irit.ry(75), 0, 1))
display(c1, circ, bisectsrf) a = a + 0.01 * speed a = 0 while (a <= (-1.8)): c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, (-1.8 ) - a, 0, (-1 ) ), \ irit.ctlpt( irit.E3, 1.8 + a, 0, 1 ) ) ) bisectsrf = irit.cbisector3d(irit.list(c1, circ), 1) display(c1, circ, bisectsrf) a = a + (-0.01) * speed a = (-math.sqrt(0.8)) while (a <= math.sqrt(0.8)): c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, 0, (-1 ) ), \ irit.ctlpt( irit.E3, 0, 0, 1 ) ) ) c2 = circ * irit.sx(a * a + 0.2) bisectsrf = irit.cbisector3d(irit.list(c1, c2), 1) display(c1, c2, bisectsrf) a = a + 0.005 * speed # ############################################################################ # # A quadratic and a circle/rounded square # circ = irit.creparam(irit.pcircle((0, 0, 0), 1), 0, 1) * irit.rz( (-90)) * irit.ry(180) circsqr = irit.coerce( irit.creparam(irit.pcircle((0, 0, 0), 1), 0, 1) * irit.rz( (-90)) * irit.ry(180), irit.E3)
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)
# # Examples of kernel approximation of freeform closed surface objects. # # Gershon Elber, Oct 2002 # oldcnvxpl2vrtices = irit.iritstate("cnvxpl2vrtcs", irit.GenRealObject(0)) # ############################################################################ c = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0, 0.15 ), \ irit.ctlpt( irit.E2, 0.25, 0.15 ), \ irit.ctlpt( irit.E2, 0.52, 0.4 ), \ irit.ctlpt( irit.E2, 0.85, 0.3 ), \ irit.ctlpt( irit.E2, 0.85, 0 ) ), irit.list( irit.KV_OPEN ) ) c = ((-c) + c * irit.sx((-1))) srf8a = irit.surfprev(c * irit.ry(90)) * irit.sx(0.9) * irit.homomat( irit.list(irit.list(1, 0, 0.2, 0), irit.list(0, 1, 0, 0), irit.list(0, 0, 1, 0), irit.list(0, 0, 0, 1))) * irit.homomat( irit.list(irit.list(1, 0, 0, 0), irit.list(0, 1, 0.2, 0), irit.list(0, 0, 1, 0), irit.list(0, 0, 0, 1))) irit.color(srf8a, irit.YELLOW) irit.awidth(srf8a, 0.001) k = irit.srfkernel(srf8a, 5, 3) irit.interact(irit.list(srf8a, k)) irit.save("srf1krnl", irit.list(k, srf8a))
all3) irit.pause() retval = irit.list(all1, all2, all3) return retval # ############################################################################ crv1a = irit.cbezier( irit.list( irit.ctlpt( irit.E1, 0.2 ), \ irit.ctlpt( irit.E2, 0.5, 4 ), \ irit.ctlpt( irit.E2, 1.3, 0.05 ) ) ) * irit.sy( 0.2 ) crv2a = irit.cbezier( irit.list( \ irit.ctlpt( irit.E1, (-0.2 ) ), \ irit.ctlpt( irit.E2, 0.25, 1.9 ), \ irit.ctlpt( irit.E2, 1.3, 0.05 ) ) ) * irit.ty( 0.3 ) * irit.sx( 1.5 ) crv1b = irit.cbezier( irit.list( \ irit.ctlpt( irit.E2, 0.2, (-0.5 ) ), \ irit.ctlpt( irit.E2, 0.5, 4 ), \ irit.ctlpt( irit.E2, 1.3, (-0.45 ) ) ) ) * irit.sy( 0.2 ) crv2b = irit.cbezier( irit.list( \ irit.ctlpt( irit.E2, (-0 ), (-0.5 ) ), \ irit.ctlpt( irit.E2, 0.25, 1.09 ), \ irit.ctlpt( irit.E2, 1.1, (-0.5 ) ) ) ) * irit.ty( 0.3 ) * irit.sx( 1.5 ) irit.save( "dist2ff1", irit.list(testccdistfunc(crv1a, crv2a, irit.nil()), testccdistfunc(crv1a, crv2a, irit.list(0.5)), testccdistfunc(crv1b, crv2b, irit.nil()), testccdistfunc(crv1b, crv2b, irit.list(0.5))))
irit.free(rot_y) irit.free(trns) # # 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