def antantenna(): c = irit.pcircle((0, 0, 0), 0.03) * irit.ry(90) retval = (-irit.sfromcrvs( irit.list( c * irit.sy(1.4) * irit.rz(45) * irit.tx(0.1) * irit.ty((-0.15)), c * irit.rz(45) * irit.tx(0.2) * irit.ty(0.2), c * irit.sy(1.4) * irit.tx(0.3) * irit.ty(0.4), c * irit.rz((-55)) * irit.tx(0.4) * irit.ty(0.15), c * irit.sc(0.8) * irit.rz((-45)) * irit.tx(0.5) * irit.ty((-0.1)), c * irit.sc(0.65) * irit.rz((-45)) * irit.tx(0.58) * irit.ty( (-0.22)), c * irit.sc(0.001) * irit.rz((-45)) * irit.tx(0.58) * irit.ty( (-0.22))), 3, irit.KV_OPEN)) irit.attrib(retval, "rgb", irit.GenStrObject("255,50,50")) 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
printtest("coerce", mv, irit.coerce(irit.coerce(mv, irit.BEZIER_TYPE), irit.POWER_TYPE)) mv = irit.mvexplicit(4, "a^2 * b^2 + 5 * a * b * c + c^3 - 5 * d * c^3") printtest("coerce", mv, irit.coerce(irit.coerce(mv, irit.BEZIER_TYPE), irit.POWER_TYPE)) mv = irit.mvexplicit(2, "a * 5 * b - b^3 * 3 * a^3") printtest("coerce", mv, irit.coerce(irit.coerce(mv, irit.BEZIER_TYPE), irit.POWER_TYPE)) mv = irit.mvexplicit(1, "a^3 + 3 * a^2 + 15 * a - 7.5") printtest("coerce", mv, irit.coerce(irit.coerce(mv, irit.BEZIER_TYPE), irit.POWER_TYPE)) s1 = s * irit.sx(1) * irit.sy(2) * irit.sz(0.3) * irit.ry(55) mv1 = irit.coerce( irit.tfromsrfs( irit.list(s1, s1 * irit.tx(0.25) * irit.ty(0.5) * irit.tz(0.8), s1 * irit.tz(2)), 3, irit.KV_PERIODIC), irit.MULTIVAR_TYPE) printtest("coerce", irit.meval(irit.coerce(mv1, irit.KV_FLOAT), irit.list(0, 0, 0)), irit.meval(mv1, irit.list(0, 0, 0))) printtest("coerce", irit.meval(irit.coerce(mv1, irit.KV_FLOAT), irit.list(1, 1, 3)), irit.meval(mv1, irit.list(1, 1, 3))) mv1 = irit.coerce( irit.tfromsrfs( irit.list(s1,
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) + (-arc5) * irit.tx(10.6) + (-arc5) * irit.tx(13.6) + (-arc5) * irit.tx(16.6)) prof2a = prof2 * irit.sy(2) * irit.trans(((-2), (-4), 0)) prof3 = ((-arc6) + (-arc8) * irit.tx(3) + (-arc1) * irit.tx(7.6) + (-arc9) * irit.tx(12.3) + (-arc7) * irit.tx(15.3)) prof3a = prof3 * irit.sy(2) * irit.trans(((-2), (-8), 0)) prof4 = ((-arc6) + (-arc8) * irit.tx(3) + (-arc1) * irit.tx(7.6) + (-arc0) * irit.tx(12.3)) prof4a = prof4 * irit.sy(2) * irit.trans(((-2), (-12), 0)) irit.free(arc0)
# # # 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)
irit.free(all2) irit.free(all3) irit.save("crv5arng", all) # ############################################################################ c2 = irit.cbspline( 3, irit.list( irit.ctlpt( irit.E2, (-0.2 ), 0.5 ), \ irit.ctlpt( irit.E2, 0.3, 0.2 ), \ irit.ctlpt( irit.E2, (-0.2 ), (-0.5 ) ), \ irit.ctlpt( irit.E2, 0.1, 0.2 ) ), irit.list( irit.KV_PERIODIC ) ) c2 = irit.coerce(c2, irit.KV_OPEN) crvs = irit.list(c2 * irit.ty(0.3) * irit.tx((-0.2)), c2 * irit.rz(140) * irit.tx(0.4) * irit.ty((-0.5)), c1 * irit.sy(3) * irit.rz(160) * irit.tx(0.1) * irit.ty(0.8), c1 * irit.sy(2) * irit.rz(230) * irit.ty(0.35), c2 * irit.rz((-10)) * irit.tx(0.6) * irit.ty(0.2), c2 * irit.rz(110) * irit.ty((-0.61)), c2 * irit.rz(110) * irit.tx(0.25) * irit.ty(0.6)) irit.color(crvs, irit.RED) irit.view(irit.list(irit.GetAxes(), crvs), irit.ON) all = irit.nil() x = (-1) while (x <= 1): pt = irit.point(x, x * x, 0) radiallowenv = irit.carrangmnt(crvs, 1e-010, 4, pt) * irit.tz((-0.2)) irit.color(radiallowenv, irit.YELLOW) irit.adwidth(radiallowenv, 3)
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 # ############################################################################ c1 = irit.pcircle( ( 0.1, 0.2, 0.3 ), 0.7 ) * irit.sy( 0.5 ) apline1 = evalantipodalptsoncrv( c1 ) irit.interact( irit.list( irit.GetAxes(), apline1, c1 ) ) c2 = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0.707, 0.304 ), \ irit.ctlpt( irit.E2, 0.317, (-0.1 ) ), \ irit.ctlpt( irit.E2, (-0.052 ), 0.147 ), \ irit.ctlpt( irit.E2, (-0.159 ), 0.682 ), \ irit.ctlpt( irit.E2, (-0.592 ), 0.039 ), \ irit.ctlpt( irit.E2, (-0.646 ), (-0.254 ) ), \ irit.ctlpt( irit.E2, (-0.313 ), (-0.532 ) ), \ irit.ctlpt( irit.E2, (-0.568 ), (-0.145 ) ), \ irit.ctlpt( irit.E2, (-0.402 ), 0.336 ), \ irit.ctlpt( irit.E2, (-0.272 ), 0.134 ), \
"principal curvatures at (u, v) = (%f, %f) equal %.9f and %.9f\n", irit.list(irit.coord(umb, 0), irit.coord(umb, 1), irit.nth(crvtr, 1), irit.nth(crvtr, 3))) irit.snoc( irit.seval(srf, irit.FetchRealObject(irit.coord(umb, 0)), irit.FetchRealObject(irit.coord(umb, 1))), retval) i = i + 1 irit.color(retval, irit.YELLOW) return retval # ################################ s = irit.surfprev( irit.cregion(irit.pcircle((0, 0, 0), 1), 0.001, 1.999) * irit.rx(90)) * irit.sx(0.8) * irit.sy(1.2) irit.color(s, irit.RED) paramumb = irit.sumbilic(s, 0.2, 1e-006) irit.interact(irit.list(evaltoeuclidean(s, paramumb), s)) # ################################ c = irit.cbspline( 4, irit.list( irit.ctlpt( irit.E2, 0.215, 0.427 ), \ irit.ctlpt( irit.E2, 1.34, 0.317 ), \ irit.ctlpt( irit.E2, 1.25, (-0.791 ) ), \ irit.ctlpt( irit.E2, (-0.573 ), (-1.05 ) ), \ irit.ctlpt( irit.E2, 1.12, (-1.31 ) ), \ irit.ctlpt( irit.E2, 1.19, (-1.51 ) ) ), irit.list( irit.KV_OPEN ) ) s = irit.sregion(irit.surfprev(c * irit.rx(90)), irit.COL, 0, 1) irit.color(s, irit.RED)
(-0.8)) * irit.ty(0.5) offsets1 = irit.nil() i = (-5) while (i <= 5): irit.snoc(irit.symbsum(crv1, arc1match * irit.sc(i / 10.0)), offsets1) i = i + 1 irit.color(offsets1, irit.YELLOW) all1b = irit.list(arc1, crv1, offsets1) * irit.sc(0.7) * irit.tx(0.8) * irit.ty(0.5) # # Example 2. # crv2 = crv1 * irit.sy(0.8) irit.color(crv2, irit.RED) irit.attrib(crv2, "width", irit.GenRealObject(0.01)) arc2 = irit.cregion(circ, 0, 2) irit.ffcompat(crv2, arc2) irit.color(arc2, irit.GREEN) irit.attrib(arc2, "width", irit.GenRealObject(0.01)) irit.interact(irit.list(crv2, arc2)) arc2match = irit.ffmatch( crv2, arc2, 50, 200, 2, 0,\ 1 ) offsets2nomatch = irit.nil() i = (-5)
# sqrt2 = math.sqrt(2) eps = 0.015 rad = 0.3 len = (rad + eps) * 2 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))) 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)
c * irit.sc(0.001) * irit.tz(2)), 4, irit.KV_OPEN)) * irit.sc(0.3) irit.color(srf8b, irit.YELLOW) irit.awidth(srf8b, 0.001) k = irit.srfkernel(srf8b, 40, 10) irit.interact(irit.list(srf8b, k)) irit.save("srf2krnl", irit.list(k, srf8b)) # ############################################################################ c = irit.pcircle((0, 0, 0), 1) srf8c = (-irit.sfromcrvs( irit.list(c * irit.sc(0.001) * irit.tz((-1)), c * irit.sc(0.4) * irit.sy(0.2) * irit.tz((-1)), c * irit.sc(0.4) * irit.sy(0.2), c * irit.sc(1), c * irit.sc(1) * irit.tz(1), c * irit.sc(0.4) * irit.sx(0.2) * irit.tz(1), c * irit.sc(0.4) * irit.sx(0.2) * irit.tz(2), c * irit.sc(0.001) * irit.tz(2)), 4, irit.KV_OPEN)) * irit.sc(0.3) irit.color(srf8c, irit.YELLOW) irit.awidth(srf8c, 0.001) k = irit.srfkernel(srf8c, 20, 5) irit.interact(irit.list(srf8c, k)) irit.save("srf3krnl", irit.list(k, srf8c)) # ############################################################################
tsrf2ap = irit.gpolyline(tsrf2a, 0) irit.color(tsrf2ap, irit.RED) tsrf2bp = irit.gpolyline(tsrf2b, 0) irit.color(tsrf2bp, irit.GREEN) irit.interact(irit.list(tsrf2ap, tsrf2bp)) irit.save("trimsrf2", irit.list(tsrf2ap, tsrf2bp)) # tsrf2ap = gpolygon( tsrf2a, off ); # color( tsrf2ap, red ); # tsrf2bp = gpolygon( tsrf2b, off ); # color( tsrf2bp, green ); # interact( list( tsrf2ap, tsrf2bp ) ); # free( tsrf2ap ); # free( tsrf2bp ); crvs3 = irit.list(tcrv1 * irit.sy(0.3), tcrv2 * irit.sy(0.3) * irit.ty(0.3), tcrv3 * irit.sy(0.3) * irit.ty(0.6)) tsrf3a = irit.trimsrf(sb2, crvs3, 0) irit.color(tsrf3a, irit.YELLOW) tsrf3b = irit.trimsrf(sb2, crvs3, 1) * irit.tz(0.1) irit.interact(tsrf3b) irit.color(tsrf3b, irit.GREEN) irit.interact(irit.list(tsrf3a, tsrf3b)) irit.free(crvs3) irit.free(tcrv1) irit.free(tcrv2) irit.free(tcrv3) # # Constructor using TrmSrfs
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))
def makecrosssection(crv): retval = (crv + (-crv) * irit.sy((-1))) return retval
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 #
# ####################################################################### # # Curve matching example: Duck # c = irit.cbezier( irit.list( irit.ctlpt( irit.E3, 0, 0, (-1.3 ) ), \ irit.ctlpt( irit.E3, 0, (-1.5 ), (-1.25 ) ), \ irit.ctlpt( irit.E3, 0, (-0.9 ), 1.1 ), \ irit.ctlpt( irit.E3, 0, 0.9, 1.15 ), \ irit.ctlpt( irit.E3, 0, 1.5, (-1.25 ) ), \ irit.ctlpt( irit.E3, 0, 0, (-1.3 ) ) ) ) irit.view(c, irit.ON) c = c * irit.sy(1.6) * irit.sz(1.3) r1 = irit.coerce( irit.cpower( irit.list( irit.ctlpt( irit.E1, 0 ), \ irit.ctlpt( irit.E1, 0.25 ), \ irit.ctlpt( irit.E1, 0.75 ) ) ), irit.BEZIER_TYPE ) r2 = irit.coerce( irit.cpower( irit.list( irit.ctlpt( irit.E1, 0 ), \ irit.ctlpt( irit.E1, 1.5 ), \ irit.ctlpt( irit.E1, (-0.5 ) ) ) ), irit.BEZIER_TYPE ) c1a = irit.compose(c, r1) c1b = irit.compose(c, r2) c2 = irit.cbspline( 6, irit.list( irit.ctlpt( irit.E3, 0, (-0.279 ), (-1.54 ) ), \ irit.ctlpt( irit.E3, 0, (-0.483 ), (-0.896 ) ), \ irit.ctlpt( irit.E3, 0, (-0.762 ), (-0.631 ) ), \ irit.ctlpt( irit.E3, 0, (-1.07 ), (-0.0984 ) ), \ irit.ctlpt( irit.E3, 0, (-0.747 ), 0.761 ), \
# # Top round control. # button = irit.coerce( irit.cbspline( 3, irit.list( irit.ctlpt( irit.E3, 0, 0, 0 ), \ irit.ctlpt( irit.E3, 2, 0, 0 ), \ irit.ctlpt( irit.E3, 3, 0, 0 ), \ irit.ctlpt( irit.E3, 3, 1.4, 0 ), \ irit.ctlpt( irit.E3, 2, 1.4, 0 ), \ irit.ctlpt( irit.E3, 0, 1.4, 0 ), \ irit.ctlpt( irit.E3, (-1 ), 1.4, 0 ), \ irit.ctlpt( irit.E3, (-1 ), 0, 0 ) ), irit.list( irit.KV_PERIODIC ) ), irit.KV_OPEN ) * irit.tx( (-1 ) ) * irit.ty( (-0.7 ) ) button = irit.sfromcrvs( irit.list(button * irit.tz((-1)), button, button * irit.tz(0.6), button * irit.sx(0.7) * irit.sy(0.001) * irit.tz(0.6)), 3, irit.KV_OPEN) * irit.sc(0.1) irit.attrib(button, "rgb", irit.GenStrObject("155,155,155")) redbutton = irit.cylin((0, 0, 0), (0, 0, 0.1), 0.1, 3) irit.attrib(redbutton, "rgb", irit.GenStrObject("255,0,0")) greenbutton = irit.cylin((0, 0, 0), (0, 0, 0.1), 0.075, 3) irit.attrib(greenbutton, "rgb", irit.GenStrObject("0,255,0")) buttons = irit.list( button * irit.rx(8) * irit.ty((-0.5)) * irit.tx(0.3) * irit.tz(7.55), button * irit.rx(8) * irit.ty((-0.5)) * irit.tx(0.75) * irit.tz(7.55), button * irit.rx(8) * irit.ty((-0.5)) * irit.tx(1.25) * irit.tz(7.55), button * irit.rx(8) * irit.ty((-0.5)) * irit.tx(1.7) * irit.tz(7.55), redbutton * irit.rx(8) * irit.tx(0.2) * irit.tz(7.55),
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(
# # 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)
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)
irit.printf( "rz alignment: length of intersection curve %d, time = %f sec.\n", irit.list(irit.SizeOf(irit.nth(irit.nth(inter, 1), 1)), tm)) # ############################################################################ s1 = 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.E3, 0.1, (-0.2 ), 0 ), \ irit.ctlpt( irit.E3, 0.15, 0.05, 0.1 ), \ irit.ctlpt( irit.E3, 0.2, (-0.1 ), 0.2 ) ), irit.list( \ irit.ctlpt( irit.E3, 0.2, 0, 0 ), \ irit.ctlpt( irit.E3, 0.25, 0.2, 0.1 ), \ irit.ctlpt( irit.E3, 0.3, 0.05, 0.2 ) ) ) ) * irit.sc( 4 ) * irit.sy( 0.3 ) irit.color(s1, irit.RED) s2 = s1 * irit.rx(4) * irit.rz(2) irit.color(s2, irit.BLUE) testssi(s1, s2, 0.1) testssi(s1, s2, 0.03) s1 = s1 * irit.sy(0.1) s2 = s2 * irit.sy(0.1) irit.color(s1, irit.RED) irit.color(s2, irit.BLUE) testssi(s1, s2, 0.1) testssi(s1, s2, 0.03)
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 ) irit.free( c1 ) irit.free( c2 ) irit.free( c2a ) irit.free( c3 )
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
epsilon = 1e-006 save_res = irit.GetResolution() save_mat = irit.GetViewMatrix() irit.SetViewMatrix(irit.sc(0.7)) irit.viewobj(irit.GetViewMatrix()) irit.viewstate("depthcue", 0) # ############################################################################ # # Two quadratic curves # c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E2, (-0.5 ), 0.1 ), \ irit.ctlpt( irit.E2, 0, 0.3 ), \ irit.ctlpt( irit.E2, 0.5, 0.7 ) ) ) c2 = irit.coerce(c1 * irit.sy((-1)), irit.E2) irit.color(c1, irit.YELLOW) irit.color(c2, irit.YELLOW) irit.adwidth(c1, 3) irit.adwidth(c2, 3) bisectsrf = irit.cbisector3d(irit.list(c1, c2), 4) irit.color(bisectsrf, irit.RED) irit.SetResolution(25) bisectcrv = irit.contour(bisectsrf, irit.plane(0, 0, 1, epsilon)) irit.color(bisectcrv, irit.GREEN) irit.adwidth(bisectcrv, 3) irit.interact(irit.list(c1, c2, bisectcrv, bisectsrf))
# sqrt2 = math.sqrt(2) eps = 0.015 rad = 0.3 len = (rad + eps) * 2 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)
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
"asect3d5", irit.list(c1, c2, irit.calphasector(irit.list(c2, c1), 0.1), irit.calphasector(irit.list(c2, c1), 0.7), irit.calphasector(irit.list(c2, c1), 1))) irit.pause() # ############################################################################ # # A quadratic Bezier and a (exact rational) ellipse. # c1 = irit.cbezier( irit.list( irit.ctlpt( irit.E3, (-2 ), 0, (-1 ) ), \ irit.ctlpt( irit.E3, (-3 ), 0, 0 ), \ irit.ctlpt( irit.E3, (-2 ), 0, 1 ) ) ) c2 = irit.circle((0, 0, 0), 1) * irit.sy(2) c2 = irit.coerce(c2, irit.E3) irit.color(c1, irit.RED) irit.adwidth(c1, 3) irit.color(c2, irit.RED) irit.adwidth(c2, 3) t = 0 while (t <= 1): bisectsrf = irit.calphasector(irit.list(c1, c2), t) irit.color(bisectsrf, irit.GREEN) irit.view(irit.list(c1, c2, bisectsrf), irit.ON) t = t + 0.2 irit.save(
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)
else: res = "failed" all3 = irit.list(irit.nth(bb, 1), irit.nth(bb, 2), res) irit.printf("projection on srf2nrml bound from %8.5lf to %8.5lf (%s)\n", 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()),
irit.color(s2, irit.GREEN) i = testinter(s1, s2) all = irit.list(s1, s2, i) irit.interact(all) irit.save("ssi18", all) # # 19. This is between two quadratic Bspline surfaces. # s1 = irit.spheresrf(1) * irit.sc(0.9) * irit.sx(0.5) s2 = irit.spheresrf(1) * irit.sc(0.8) * irit.sy(0.5) irit.color(s1, irit.RED) 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.