예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
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()
예제 #6
0
#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 ), \
예제 #7
0
#

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"))
예제 #8
0
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)
예제 #9
0
    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
예제 #10
0
            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)
예제 #11
0
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),
예제 #12
0
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))
예제 #13
0
                                               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 ), \
예제 #14
0
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 ),\
예제 #15
0
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 )
예제 #16
0
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)
예제 #17
0
#
#  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)
예제 #18
0
    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 )
예제 #19
0
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 )
예제 #20
0
#

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)
예제 #21
0
        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)
예제 #22
0
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()))

# ############################################################################
예제 #23
0
#
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

# ############################################################################
예제 #24
0
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(
예제 #25
0
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) +
예제 #26
0
# 
#                                        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.