import bpyimport mathutilsa = mathutils.Vector((0.0, 1.0, 2.0))b = mathutils.Vector((1.0, 4.0, 1.0))print("Вектор а",a)print("Вектор в",b)
Вектор а <Vector (0.0000, 1.0000, 2.0000)>Вектор в <Vector (1.0000, 4.0000, 1.0000)>
b.normalize()print("Нормализованный вектор",b)print("Длина вектора",b.length)
Нормализованный вектор <Vector (0.2357, 0.9428, 0.2357)>Длина вектора 1.0000000707805132
c=a+bprint("a+b",c)c=a-bprint("a-b",c)c=a*bprint("a*b",c)c=a*3.7print("a*3.7",c)
a+b <Vector (0.2357, 1.9428, 2.2357)>a-b <Vector (-0.2357, 0.0572, 1.7643)>a*b 1.4142136573791504a*3.7 <Vector (0.0000, 3.7000, 7.4000)>
u=a.angle(b)print("Угол между двумя векторами",u)
Угол между двумя векторами 0.8860771059989929
c=a.cross(b)print("Векторное произведение",c)c=a.dot(b)print("скалярное произведение",c)
Векторное произведение <Vector (-1.6499, 0.4714, -0.2357)>скалярное произведение 1.4142136573791504
for i in range(11): f=i/10 c=a.lerp(b,f) print(f,c)
0.0 <Vector (0.0000, 1.0000, 2.0000)>0.1 <Vector (0.0236, 0.9943, 1.8236)>0.2 <Vector (0.0471, 0.9886, 1.6471)>0.3 <Vector (0.0707, 0.9828, 1.4707)>0.4 <Vector (0.0943, 0.9771, 1.2943)>0.5 <Vector (0.1179, 0.9714, 1.1179)>0.6 <Vector (0.1414, 0.9657, 0.9414)>0.7 <Vector (0.1650, 0.9600, 0.7650)>0.8 <Vector (0.1886, 0.9542, 0.5886)>0.9 <Vector (0.2121, 0.9485, 0.4121)>1.0 <Vector (0.2357, 0.9428, 0.2357)>
c=ac.negate()print("негатив",c)c=a.project(b)print("проекция",c)c=a.reflect(b)print("отражение",c)
негатив <Vector (-0.0000, -1.0000, -2.0000)>проекция <Vector (-0.3333, -1.3333, -0.3333)>отражение <Vector (0.6667, 1.6667, -1.3333)>
def test(qverts,qedges,qfaces,nv,edges,nodes): nkf = 0.3 p0 = nodes[nv[0]].co p1 = nodes[nv[1]].co p2 = nodes[nv[2]].co pc = (p0 + p1 + p2) / 3 pn = pc + mathutils.geometry.normal(p0,p1,p2) * nkf last=len(qverts) qverts.extend([pn,p0,p1,p2]) qfaces.extend([[last,last+1,last+2],[last,last+2,last+3],[last,last+3,last+1]])
import bpyimport mathutils, math, structdef make_mesh(name): me = bpy.data.meshes.new(name) ob = bpy.data.objects.new(name, me) bpy.context.scene.objects.link(ob) return obdef add_data(ob,verts,edges,faces): me = ob.data me.name = ob.name +' mesh' me.from_pydata(verts,edges,faces) me.update() def test(qverts,qedges,qfaces,nv,edges,nodes): nkf = 0.3 p0 = nodes[nv[0]].co p1 = nodes[nv[1]].co p2 = nodes[nv[2]].co pc = (p0 + p1 + p2) / 3 pn = pc + mathutils.geometry.normal(p0,p1,p2) * nkf last=len(qverts) qverts.extend([pn,p0,p1,p2]) qfaces.extend([[last,last+1,last+2],[last,last+2,last+3],[last,last+3,last+1]]) def main(): obj = bpy.data.objects["Cube"] mesh = obj.to_mesh(bpy.context.scene, True, 'PREVIEW') faces = mesh.tessfaces edges = mesh.edges nodes = mesh.vertices print('%d' % len(edges)) print(' %d\n' % len(faces)) qverts=[] qedges=[] qfaces=[] for face in faces: vertices = face.vertices[:] if len(vertices) == 4: test(qverts,qedges,qfaces,(vertices[0], vertices[1], vertices[2]),edges,nodes) test(qverts,qedges,qfaces,(vertices[2], vertices[3], vertices[0]),edges,nodes) else: test(qverts,qedges,qfaces,vertices,edges,nodes) ob=make_mesh("Test") add_data(ob,qverts,qedges,qfaces)main()
Вектор в <Vector (1.0000, 4.0000, 1.0000)>