Código:
#.Bpy.
Registration información for Blender menús:
Name: matemats.
Blender: 246.
Group: addmesh.
Tip: represents math functions.
_versión__=1.25.
#.Bpy.
Registration información for Blender menús:
Name: matemats.
Blender: 246.
Group: addmesh.
Tip: represents math functions.
_versión__=1.25.
_author__ = klopes.
_versión__ = 1.0 2008/05/26.
_url__ = [mi kasa, http://Klópes, tk, Blender, elysiun"].
_email__ = [klopes, Klópes@unizar, es, scripts"].
Import Blender.
From Blender import nmesh,BGL.
From Blender. Draw import *.
From Blender import BGL.
From math import *.
Def fcart(t):
A,b,c,d,e = a, val, b, val, c, val, d, val, val treturn (eval(fun1.val), eval(fun2.val), eval(fun3.val)).
Def fpolar(t):
A,b,c,d,e = a, val, b, val, c, val, d, val, val treturn (eval(fun1.val+*cos(t)), eval(fun1.val+*sin(t)), eval(fun3.val)).
Presets=[1.
[identity 1:1,t,t,0,-1,1,100,[].
[elipse, a*cos(t), b*sin(t),0,0,2*pi,32,[1,1].
[helix, cos(t), sin(t), t/10,0,4*pi,64,[].
[black hole, sin(t*10)/t**2, cos(t*10)/t**2, -t.2,5,64,[].
[lissajous, cos(t/a), cos(t/b), sin(t/c),0,2*pi*2*3*5,256,[2,3,5].
[polynom, t, a*t**4 + b*t**3 + c*t**2 + d*t + eh, 0,-2,2,256,[0,1,0,-1,1].
Presetsp=[2.
[circunference,1,0,0,2*pi,32,[].
[linear spiral,a*t,0,0,4*pi,32,[0.5].
[Logaritmic spiral,a*exp(t),0,0,4*pi,32,[0.5].
Ext0=create (0.0).
Ext1=create (1.0).
N=create (100).
Salto=create (0.01).
Nom=create (function).
Fun1=create (t).
Fun2=create (t).
Fun3=create (0.0).
Fentrypreset=create (1).
Fentrytyp=create (1).
Buf=create (1).
A=create (0.0).
B=create (0.0).
C=create (0.0).
D=create (0.0).
E=create (0.0).
Auto=create (1).
Def creacurva (nombre,ex0,ex1, n, salto):
Me=nmesh. New(nombre) ttry:
Pass texcept:
Blender. Draw. Pupmenu (revisa el texto) return tif fentrytyp, val==1:
F=fcart telse:
F=fpolar tv0=nmesh. Vert(f(ex0)[0], f(ex0)[1], f(ex0)[2]) tme, vértices, append(v0) tfor i in range (n):
T=(i+1)*salto+ex0 v1=nmesh. Vert(f(t)[0], f(t)[1], f(t)[2]) me, addedge (v0, 1) me, vértices, append(v1) v0 = v1 tnmesh. Putraw(me, nombre).
Def texbuf():
Menutext, i=,0 tfor TX in Blender. Text. Get():
I+=1 menutext+=|+tx.name+%x+str(i) treturn menutext.
Def draw():
Global ext0,ext1,n,salto,nom,fun1,fun2,fun3,fentrytyp,vaya,fentrypreset tglobal auto, exprx, expry, exprz, a, b, c, d, e tbgl.glclearcolor(0.5, 0.5, 0.6, 1) tbgl.glcolor3f(1,1,1) tbgl.glclear(BGL. Gl_color_bufer_bit).
# fentrytyp=menú(entry type%t|cartesian function%x1|cylindric function%x2|text buffer%x3|file%x4, 98,216,142,87,18,fentrytyp, val) tfentrytyp=menú(entry type%t|cartesian function%x1|cylindric function%x2 98,216,142,87,18,fentrytyp, val) text0=number(inf =,2,13,79,100,18,ext0.val,-10000,10000,extremo inf, del intervalo) text1=number(sup =,2,112,79,100,18,ext1.val,-10000,10000,extremo sup, del intervalo) TN=number(# segmts,2,10,55,205,18,n.val,1,200001,número de segmentos) tsalto=number(segmts Lenght=,3,10,37,205,18,salto, val.000001, abs(ext1.val-ext0.val),separación entre vértices) tnom=string(obj name:, 98,10,165,205,18,nom, val,50) tif fentrytyp, val==1:
Fun1 = string(x(t)=,3,10,142,205,18,fun1.val,100,expresion en t) fun2 = string(y(t)=,3,10,122,205,18,fun2.val,100,expresion en t) fun3 = string(z(t)=,3,10,102,205,18,fun3.val,100,expresion en t) TX = presetes%t for preset in presets[1:]:
Tx = TX + | + preset[0] fentrypreset=menú(tx,10,216,122,87,18,fentrypreset, val) tif fentrytyp, val==2:
Fun1 = string(r(t)=,3,10,142,205,18,fun1.val,100,expresion en t) fun3 = string(z(t)=,3,10,122,205,18,fun3.val,100,expresion en t) TX = presetes%t for preset in presetsp[1:]:
Tx = TX + | + preset[0] fentrypreset=menú(tx,10,216,122,87,18,fentrypreset, val) telif fentrytyp, val==3:
Buf=menú(select buffer%t+texbuf(),98,10,102,205,18,vaya, val) exprx = \n.join(blender. Text. Get()[vaya, val-1].aslines()) expry = \n.join(blender. Text. Get()[vaya, val-1].aslines()) exprz = \n.join(blender. Text. Get()[vaya, val-1].aslines()) tblender. Bgl.glrasterpos2i (226,84) ttext(a) tblender. Bgl.glrasterpos2i (226,66) ttext(b) tblender. Bgl.glrasterpos2i (226,4 ttext(c) tblender. Bgl.glrasterpos2i (226,30) ttext(d) tblender. Bgl.glrasterpos2i (226,12) ttext(e) ta = number(,4,238,78,60,18, a, val,-10000,10000,parámetro a) Tb = number(,4,238,60,60,18, b, val,-10000,10000,parámetro b) tc = number(,4,238,42,60,18, c, val,-10000,10000,parámetro c) TD = number(,4,238,24,60,18, d, val,-10000,10000,parámetro d) te = number(,4,238,6,60,18, val,-10000,10000,parámetro e) tauto = toggle (auto update,10,220,100,80,18, auto, val) tbutton(draw,1,10,5,170,2 tbutton(exit,99,185,7,30,22).
Def event(evt, al):
If evt==esckey: exit().
Def bevent(evt):
If evt==10: #preset if fentrytyp, val==1:
Pres=presets elif fentrytyp, val==2:
Pres=presetsp fun1.val = pres[fentrypreset, val][1] fun2.val = pres[fentrypreset, val][2] fun3.val = pres[fentrypreset, val][3] ext0.val = pres[fentrypreset, val][4] ext1.val = pres[fentrypreset, val][5] n.val = pres[fentrypreset, val][6] try:
A, val = pres[fentrypreset, val][7][0] b, val = pres[fentrypreset, val][7][1] c, val = pres[fentrypreset, val][7][2] d, val = pres[fentrypreset, val][7][3] eh, val = pres[fentrypreset, val][7][4] except:
Pass tif evt==3:
N.val=(ext1.val-ext0.val)/salto, val tif evt==2 or evt==10:
Salto, val=(ext1.val-ext0.val)/n.val ext1.val=max(ext1.val,ext0.val) ext0.val=min(ext1.val,ext0.val) tif evt==1 or (auto, val and (evt==3 or evt==2 or evt==4 or evt==10)):
Creacurva (nom, val,ext0.val,ext1.val,n.val,salto, val) tif evt==3:
Fentrypreset, val=0 tif evt==99:
Exit() tblender. Redraw().
Register(draw, event, bevent)
-- IMÁGENES ADJUNTAS --