mathutil vector and edges

I got a mesh path line in 3D
and need to rotate some verts normal to the edge along that path

I can calculate the derivative and rotate at 90

but is there something simpler that can be used using mathutil vectors may be?

saw this example but not what I want

import bpy
import bmesh
me =
bm = bmesh.from_edit_mesh(me)
active_edge = None
for elem in reversed(bm.select_history):
    if isinstance(elem, bmesh.types.BMEdge):
        active_edge = elem
    raise Exception("No active edge!")
v1, v2 = active_edge.verts
#co1 = + v1.normal
#co2 = + v2.normal
n = (v1.normal + v2.normal) * 0.5
co1 = + n
co2 = + n
ret = bmesh.ops.duplicate(bm, geom=[active_edge])
new_verts = [elem for elem in ret['geom'] if isinstance(elem, bmesh.types.BMVert)]
# Order???
new_verts[0].co = co1
new_verts[1].co = co2

need to be at 90 degrees or normal at the end of the edge


Actually there’s an awesome vector function called “rotate” than can do all this for you.

>>> import math
>>> v = Vector( (0,0,1) )
>>> e = Euler( ( math.radians(90), 0, 0 ) )
>>> v.rotate( e )
>>> v
Vector((0.0, -1.0, -4.371138828673793e-08))

It’s worth noting, though, that the rotate function doesn’t just return a new vector, it actually affects the Vector in question, and will rotate normals, vertices, locations, etc.

If you want to just do a simple calculation, it’s best to first create a copy of the vector in question:

v2 = v1.copy()

let say that you have a mesh 3d path = line
you can loop over all verts along the path
then for each edge you can make a vector
then do some calculations to get the normal to that vector

and that is the angle I need to change the rotation of another set of verts being move rotated at same angle then the normal
hopefully it can be done in 3D
I can show dwg for this


an edge has an infinite number of orthogonal vectors, you need a third coordinate

you make the edge a vector then there is only one normal
like bevel curve along a curve !
the bevel curve is always at 90 degrees or normal to the curve!

happy bl