def evalantipodalptsonsrf( srf ):
    aps = irit.antipodal( srf, 0.001, (-1e-012 ) )
    irit.printf( "%d antipodal points detected\n", irit.list( irit.SizeOf( aps ) ) )
    retval = irit.nil(  )
    diam = 0
    i = 1
    while ( i <= irit.SizeOf( aps ) ):
        ap = irit.nth( aps, i )
        u1 = irit.coord( ap, 1 )
        v1 = irit.coord( ap, 2 )
        u2 = irit.coord( ap, 3 )
        v2 = irit.coord( ap, 4 )
        pt1 = irit.seval( srf, irit.FetchRealObject(u1), irit.FetchRealObject(v1) )
        pt2 = irit.seval( srf, irit.FetchRealObject(u2), irit.FetchRealObject(v2) )
        if ( irit.dstptpt( irit.coerce( pt1, irit.POINT_TYPE ), 
						   irit.coerce( pt2, irit.POINT_TYPE ) ) > diam ):
            diam = irit.dstptpt( irit.coerce( pt1, irit.POINT_TYPE ), 
								 irit.coerce( pt2, irit.POINT_TYPE ) )
            diamline = pt1 + pt2
        irit.snoc( irit.list( pt1 + pt2, pt1 * irit.tx( 0 ), pt2 * irit.tx( 0 ) ), retval )
        i = i + 1
    irit.color( retval, irit.YELLOW )
    irit.color( diamline, irit.CYAN )
    irit.adwidth( diamline, 3 )
    irit.snoc( irit.list( diamline ), retval )
    return retval
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 offsetcrvlist( clst, ofst ):
    retval = irit.nil(  )
    i = 1
    while ( i <= irit.SizeOf( clst ) ):
        irit.snoc( irit.offset( irit.nth( clst, i ), irit.GenRealObject(ofst), 1e-006, 1 ), retval )
        i = i + 1
    return retval
def getlistwithoutlast( lst ):
    retval = irit.nil(  )
    i = 1
    while ( i <= irit.SizeOf( lst ) - 1 ):
        irit.snoc( irit.nth( lst, i ), retval )
        i = i + 1
    return retval
def dominos(path, scl, piecetimestep):
    retval = irit.nil()
    animtime = 0
    dominopiece = irit.box(
        (-0.01, -0.006, 0), 0.02, 0.006, 0.05) * irit.sc(scl)
    rot_x = irit.cbezier( irit.list( irit.ctlpt( irit.E1, 0 ), \
                                     irit.ctlpt( irit.E1, 80 ) ) )
    crvdomain = irit.pdomain(path)
    t = irit.FetchRealObject(irit.nth(crvdomain, 1))
    dpath = irit.cderive(path)
    while (t < irit.FetchRealObject(irit.nth(crvdomain, 2))):
        d = irit.Fetch3TupleObject(
            irit.coerce(irit.ceval(dpath, t), irit.POINT_TYPE))
        dlen = math.sqrt(DotProd(d, d))

        rot_x = irit.creparam(rot_x, animtime, animtime + piecetimestep)
        irit.attrib(dominopiece, "animation", irit.list(rot_x))
        irit.setname(irit.getattr(dominopiece, "animation"), 0, "rot_x")

        dp = dominopiece * irit.rz(
            -math.atan2(d[0], d[1]) * 180 / math.pi) * irit.trans(
                irit.Fetch3TupleObject(
                    irit.coerce(irit.ceval(path, t), irit.VECTOR_TYPE)))
        irit.snoc(dp, retval)

        t = t + 0.04 * scl / dlen
        animtime = animtime + piecetimestep * 0.6
    return retval
def plotfunc3d2poly(minx, maxx, miny, maxy, n, m):
    first = 1
    x = minx
    while (x <= maxx):
        lst = irit.nil()
        y = miny
        while (y <= maxy):
            irit.snoc(irit.vector(x, y, plotfn3d(x, y)), lst)
            y = y + (maxy - miny) / float(n - 1)
        if (first == 1):
            retval = irit.poly(lst, irit.TRUE)
            first = 0
        else:
            retval = retval + irit.poly(lst, irit.TRUE)
        x = x + (maxx - minx) / float(m - 1)
    y = miny
    while (y <= maxy):
        lst = irit.nil()
        x = minx
        while (x <= maxx):
            irit.snoc(irit.vector(x, y, plotfn3d(x, y)), lst)
            x = x + (maxx - minx) / float(n - 1)
        retval = retval + irit.poly(lst, irit.TRUE)
        y = y + (maxy - miny) / float(m - 1)
    return retval
def raytraptris3d(srfs, subeps, numeps):
    pts = irit.raytraps(srfs, 1, subeps, numeps, 1)
    retval = irit.nil()
    if (irit.SizeOf(pts) > 1):
        irit.printf("%d solution(s) found\n", irit.list(irit.SizeOf(pts)))
    i = 1
    while (i <= irit.SizeOf(pts)):
        pt = irit.coord(pts, i)
        err = irit.getattr(pt, "rngerror")
        if (irit.ThisObject(err) == irit.NUMERIC_TYPE):
            irit.printf("error = %16.14f\n", irit.list(err))
        else:
            irit.printf("error is not provided\n", irit.nil())
        points = irit.nil()
        j = 1
        while (j <= irit.SizeOf(srfs)):
            irit.snoc(
                irit.seval(
                    irit.nth(srfs, j),
                    irit.FetchRealObject(irit.coord(pt, 1 + (j - 1) * 2)),
                    irit.FetchRealObject(irit.coord(pt, 2 + (j - 1) * 2))),
                points)
            j = j + 1
        irit.snoc(irit.poly(points, 0), retval)

        i = i + 1
    return retval
Exemple #8
0
def virttree3(pos, dir, size, blevel, level):
    retval = irit.nil()
    newpos = (pos + dir)
    if (level > 0):
        tr = treebranch(pos, newpos, size)
        if (level >= blevel):
            irit.color(tr, bcolor)
            irit.attrib(tr, "ptexture", irit.GenStrObject("trunk.rle"))
            irit.attrib(tr, "rgb", irit.GenStrObject(brgb))
        else:
            irit.color(tr, lcolor)
            irit.attrib(tr, "rgb", irit.GenStrObject(lrgb))
            irit.attrib(tr, "ptexture", irit.GenStrObject("leaves.rle"))
        irit.snoc(tr, retval)
    if (level > 1):
        tr1 = virttree3(newpos,
                        rotatevector2(dir, rfactor) * lfactor, size * wfactor,
                        blevel, level - 1)
        tr2 = virttree3(
            newpos,
            rotatevector2(dir, rfactor * irit.random((-1), 1)) * lfactor,
            size * wfactor, blevel, level - 1)
        tr3 = virttree3(newpos,
                        rotatevector2(dir, (-rfactor)) * lfactor,
                        size * wfactor, blevel, level - 1)
        retval = retval + tr1 + tr2 + tr3
    return retval
Exemple #9
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
def displayobjobjmdres(o1, o2, eps):
    global glbltransx
    mdres = irit.mindist2ff(o1, o2, eps)
    dist = irit.nth(mdres, 1)
    param1 = irit.nth(mdres, 2)
    param2 = irit.nth(mdres, 3)
    if (irit.SizeOf(param1) == 0):
        pt1 = irit.coerce(o1, irit.E3)
    else:
        prm = irit.nth(param1, 1)
        if (irit.ThisObject(prm) == irit.NUMERIC_TYPE):
            i = 1
            while (i <= irit.SizeOf(param1)):
                t = irit.nth(param1, i)
                irit.printf("min distance %f detected at t1 = %f\n",
                            irit.list(dist, t))
                i = i + 1
            pt1 = irit.ceval(o1, irit.FetchRealObject(t))
        else:
            i = 1
            while (i <= irit.SizeOf(param1)):
                uv = irit.nth(param1, i)
                irit.printf("min distance %f detected at uv1 = %f %f\n",
                            irit.list(dist, irit.nth(uv, 1), irit.nth(uv, 2)))
                i = i + 1
            pt1 = irit.seval(
                o1, irit.FetchRealObject(irit.nth(irit.nth(param1, 1), 1)),
                irit.FetchRealObject(irit.nth(irit.nth(param1, 1), 2)))
    if (irit.SizeOf(param2) == 0):
        pt2 = irit.coerce(o2, irit.E3)
    else:
        prm = irit.nth(param2, 1)
        if (irit.ThisObject(prm) == irit.NUMERIC_TYPE):
            i = 1
            while (i <= irit.SizeOf(param2)):
                t = irit.nth(param2, i)
                irit.printf("min distance %f detected at t2 = %f\n",
                            irit.list(dist, t))
                i = i + 1
            pt2 = irit.ceval(o2, irit.FetchRealObject(t))
        else:
            i = 1
            while (i <= irit.SizeOf(param2)):
                uv = irit.nth(param2, i)
                irit.printf("min distance %f detected at uv2 = %f %f\n",
                            irit.list(dist, irit.nth(uv, 1), irit.nth(uv, 2)))
                i = i + 1
            pt2 = irit.seval(
                o2, irit.FetchRealObject(irit.nth(irit.nth(param2, 1), 1)),
                irit.FetchRealObject(irit.nth(irit.nth(param2, 1), 2)))
    irit.color(pt1, irit.MAGENTA)
    irit.color(o1, irit.MAGENTA)
    irit.color(pt2, irit.YELLOW)
    irit.color(o2, irit.YELLOW)
    l = (pt1 + pt2)
    all = irit.list(o1, o2, pt1, pt2, l)
    irit.snoc(all * irit.tx(glbltransx), glblres)
    glbltransx = (glbltransx + 0.5)
    irit.interact(all)
Exemple #11
0
def printfitresult(str, fittedsrf):
    global fitting
    irit.snoc(fittedsrf, fitting)
    irit.printf("%s:\n", irit.list(str))
    i = 1
    while (i <= irit.SizeOf(fittedsrf)):
        irit.printf("\t%9.6pf\n", irit.list(irit.nth(fittedsrf, i)))
        i = i + 1
Exemple #12
0
def layouthandletrimmedsrfs(tsrfs, highlighttrim):
    retval = irit.nil()
    i = 1
    while (i <= irit.SizeOf(tsrfs)):
        irit.snoc(layouthandleonetrimmed(irit.nth(tsrfs, i), highlighttrim),
                  retval)
        i = i + 1
    return retval
def plotfunc2d2poly(min, max, n):
    lst = irit.nil()
    t = min
    while (t <= max):
        irit.snoc(irit.vector(t, plotfn2d(t), 0), lst)
        t = t + (max - min) / float(n - 1)
    retval = irit.poly(lst, irit.TRUE)
    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 shelfunit( w, dw, h, dh, n ):
    retval = irit.nil(  )
    i = 1
    while ( i <= n ):
        irit.snoc( marbleshelfunit( w, h ), retval )
        w = w - dw
        h = h + dh
        i = i + 1
    return retval
Exemple #16
0
def intercrvspaint(crvs):
    retval = irit.nil()
    i = 1
    while (i <= irit.SizeOf(crvs)):
        crv = irit.nth(crvs, i)
        irit.attrib(crv, "rgb", irit.GenStrObject(getrandrgb()))
        irit.snoc(crv * irit.sc(1), retval)
        i = i + 1
    return retval
def cnvrtcrvs2domains( crvs, theta ):
    retval = irit.nil(  )
    i = 1
    while ( i <= irit.SizeOf( crvs ) ):
        dm = irit.pdomain( irit.nth( crvs, i ) )
        irit.snoc( irit.ctlpt( irit.E2, theta, irit.nth( dm, 1 ) ) + \
                    irit.ctlpt( irit.E2, theta, irit.nth( dm, 2 ) ), retval )
        i = i + 1
    return retval
def computeviews( c, dms, fname ):
    ranges = irit.nil(  )
    i = 1
    while ( i <= irit.SizeOf( dms ) ):
        irit.snoc( cnvrtcrvs2ranges( irit.nth( dms, i ), i, 1 ), ranges )
        i = i + 1
    irit.printf( "%d views are considered\n", irit.list( irit.SizeOf( dms ) ) )
    retval = irit.setcover( ranges, 0.001 )
    return retval
Exemple #19
0
def plgntoplln( pl ):
    retval = irit.nil(  )
    j = 0
    while ( j <= irit.SizeOf( pl ) - 1 ):
        irit.snoc( irit.coord( pl, j ), retval )
        j = j + 1
    irit.snoc( irit.coord( pl, 0 ), retval )
    retval = irit.poly( retval, irit.TRUE )
    irit.attrib( retval, "dwidth", irit.GenIntObject(3 ))
    return retval
Exemple #20
0
def evalbitangency(srfs, pts, merged):
    if (merged == 0):
        retval = evalonebitangency(srfs, pts)
    else:
        retval = irit.nil()
        i = 1
        while (i <= irit.SizeOf(pts)):
            irit.snoc(evalonebitangency(srfs, irit.nth(pts, i)), retval)
            i = i + 1
    return retval
def makepolylines(listofctlpts):
    retval = irit.nil()
    i = 1
    while (i <= irit.SizeOf(listofctlpts)):
        pl = irit.nth(listofctlpts, i)
        if (irit.SizeOf(pl) > 1):
            irit.snoc(irit.poly(irit.nth(listofctlpts, i), 1), retval)

        i = i + 1
    return retval
Exemple #22
0
def textgeom3d(txt, wdth, dpth):
    if (irit.ThisObject(txt) == irit.LIST_TYPE):
        retval = irit.nil()
        i = 1
        while (i <= irit.SizeOf(txt)):
            irit.snoc(textgeom3d(irit.nth(txt, i), wdth, dpth), retval)
            i = i + 1
    else:
        retval = textgeom3daux(txt, wdth, dpth)
    return retval
Exemple #23
0
def randomcrvs(numcrvs, crvdeg, crvlen, size):
    l = irit.nil()
    i = 1
    while (i <= numcrvs):
        irit.snoc(genrandomcrv(crvdeg, crvlen, size), l)
        i = i + 1
    retval = l
    irit.color(retval, irit.RED)
    irit.adwidth(retval, 3)
    return retval
def evalflecnodalpts(srfs, pts):
    if (irit.SizeOf(pts) == 1):
        retval = evaloneflecnodalpts(srfs, pts)
    else:
        retval = irit.nil()
        i = 1
        while (i <= irit.SizeOf(pts)):
            irit.snoc(evaloneflecnodalpts(srfs, irit.nth(pts, i)), retval)
            i = i + 1
    return retval
Exemple #25
0
def gammakernelpolysrfs( pl, maxgamma, extent ):
    retval = irit.nil(  )
    i = 1
    while ( i <= irit.SizeOf( pl ) ):
        c = irit.coerce( irit.coord( pl, i - 1 ), irit.E2 ) + irit.coerce( irit.coord( pl, i ), irit.E2 )
        k1 = irit.crvkernel( c, maxgamma, 0, irit.GenRealObject(extent), 2 )
        k2 = irit.crvkernel( c, (-maxgamma ), 0, irit.GenRealObject(extent), 2 )
        irit.snoc( irit.list( setrandomcolor( k1 ), setrandomcolor( k2 ) ), retval )
        i = i + 1
    return retval
Exemple #26
0
def randompts2(n):
    retval = irit.nil()
    i = 1
    while (i <= n):
        r = irit.random((-1), 1)
        t = irit.random(0, 2 * math.pi)
        irit.snoc((math.cos(t) * r, math.sin(t) * r, 0), retval)
        i = i + 1
    irit.color(retval, irit.RED)
    irit.adwidth(retval, 5)
    return retval
Exemple #27
0
def cntrpolys( pls, zmin, dz, zmax ):
    retval = irit.nil(  )
    intrcrv = irit.iritstate( "intercrv", irit.GenIntObject(1 ))
    z = zmin
    while ( z <= zmax ):
        p = irit.circpoly( ( 0, 0, 1 ), ( 0, 0, z ), 6 )
        irit.snoc( pls * p, retval )
        z = z + dz
    intrcrv = irit.iritstate( "intercrv", intrcrv )
    irit.color( retval, irit.YELLOW )
    return retval
Exemple #28
0
def evaluvtoe3(srf, uvs, clr):
    retval = irit.nil()
    i = 1
    while (i <= irit.SizeOf(uvs)):
        uv = irit.nth(uvs, i)
        irit.snoc(
            irit.seval(srf, irit.FetchRealObject(irit.coord(uv, 1)),
                       irit.FetchRealObject(irit.coord(uv, 2))), retval)
        i = i + 1
    irit.color(retval, clr)
    return retval
Exemple #29
0
def extractidparts(obj, id, rgb):
    retval = irit.nil()
    i = 0
    while (i <= irit.SizeOf(obj) - 1):
        p = irit.coord(obj, i)
        if (irit.getattr(p, "id") == irit.GenRealObject(id)):
            irit.snoc(p, retval)
        i = i + 1
    retval = irit.mergepoly(retval)
    irit.attrib(retval, "rgb", irit.GenStrObject(rgb))
    return retval
Exemple #30
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