Math 在旋转的面上构建几何图形

Math 在旋转的面上构建几何图形,math,blender,Math,Blender,我在Blender中编写了一个非常基本的脚本,它构建了一组圆形顶点,然后旋转并将这些顶点转换为三维空间中的旋转面(请参见下面的代码)。这适用于任何Z旋转,但对于X或Y旋转,它无处不在 我知道我在某个地方漏了一步,但现在看不见。因此,非常感谢您的帮助 要运行代码,只需要场景中有一个立方体 我的想法是在(0,0,0)处构建顶点圆,然后将它们旋转到所需的面法线(我现在随机选择了立方体的面2),然后将顶点平移到面位置。主要的旋转功能位于代码的底部(旋转顶点朝向面(..) 注意。这是一个更大项目的一部分,

我在Blender中编写了一个非常基本的脚本,它构建了一组圆形顶点,然后旋转并将这些顶点转换为三维空间中的旋转面(请参见下面的代码)。这适用于任何Z旋转,但对于X或Y旋转,它无处不在

我知道我在某个地方漏了一步,但现在看不见。因此,非常感谢您的帮助

要运行代码,只需要场景中有一个立方体

我的想法是在(0,0,0)处构建顶点圆,然后将它们旋转到所需的面法线(我现在随机选择了立方体的面2),然后将顶点平移到面位置。主要的旋转功能位于代码的底部(旋转顶点朝向面(..)

注意。这是一个更大项目的一部分,所以我把它作为一个单独的脚本编写,只是作为一个演示,所以它是一个粗略的代码

(当前代码的结果)


很抱歉回答我自己的问题,但我知道了。这是一个简单的修复方法,只需要将顶点法线转换为目标对象的矩阵世界。旋转代码变为:

    norm = mat_world @ verts_norm
    
    # build rotation matrix
    mat = (
        norm.rotation_difference(target_norm).to_matrix().to_4x4()
        
    )

自我回答问题实际上是
    norm = mat_world @ verts_norm
    
    # build rotation matrix
    mat = (
        norm.rotation_difference(target_norm).to_matrix().to_4x4()
        
    )