Py学习  »  Python

Pure Python 3.6.3-查找两个三维向量之间的度数差异

Rees K • 5 年前 • 1564 次点击  

出于一些不虔诚的原因,我试图用Turtle库制作一个纯Python3.6.3的线框图形显示程序。我已经到了一个地步,我想跳过绘制不必要的tris优化的目的。不必要的tris意味着tris应该被模型的其他部分遮住,也就是说,从三维相机的正常面对。

程序正在处理的模型数据只是一个巨大的三维数组,每个tri的格式如下。

[[Vert],[Vert],[Vert],[Normal]]

我当前版本的代码只有一个模型(多维数据集),如下所示:

from turtle import *

Cube = [[[-50,50,-50],[-50,50,50,],[50,50,50],[0,1,0]],
        [[-50,50,-50],[50,50,50,],[50,50,-50],[0,1,0]],
        [[-50,50,-50],[-50,50,50],[-50,-50,50],[1,0,0]],
        [[-50,50,-50],[-50,-50,-50],[-50,-50,50],[1,0,0]],
        [[-50,50,50],[50,50,50],[50,-50,50],[0,0,1]],
        [[-50,50,50],[50,-50,50],[-50,50,50],[0,0,1]],
        [[-50,-50,-50],[-50,-50,50,],[50,-50,50],[0,-1,0]],
        [[-50,-50,-50],[50,-50,50,],[50,-50,-50],[0,-1,0]],
        [[50,50,-50],[50,50,50],[50,-50,50],[-1,0,0]],
        [[50,50,-50],[50,-50,-50],[50,-50,50],[-1,0,0]],
        [[-50,50,-50],[50,50,-50],[50,-50,-50],[0,0,-1]],
        [[-50,50,-50],[50,-50,-50],[-50,50,-50],[0,0,-1]]]

CamVector = [0,1,0]

def DrawModel(Model):
    for i in range(0,len(Model)):
        goto(Model[i][0][0],Model[i][0][1])
        pd()
        goto(Model[i][1][0],Model[i][1][1])
        goto(Model[i][2][0],Model[i][2][1])
        goto(Model[i][0][0],Model[i][0][1])
        pu()

Model = Cube
DrawModel(Model)

但是我想把每个tri的法向和camvector进行比较,这样代码就变成这样了:

def DrawModel(Model):
    for i in range(0,len(Model)):
        AngleAwayFromCamera = *Math voodoo*
        if AngleAwayFromCamera <= 90:
            *draw tri*

如果有人对如何帮助有任何想法,可以向像我这样有核桃大小大脑的人解释,那就太好了。我看了很多文件,但大多数都飞到了我的头上——可能是因为我没有通过GCSE数学考试。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/42903
 
1564 次点击  
文章 [ 1 ]  |  最新文章 5 年前