По какой-то безбожной причине я пытаюсь создать программу для отображения каркасной графики на чистом python 3.6.3 с библиотекой turtle.Я дошел до того, что хотел бы пропустить рисование ненужных трис в целях оптимизации.Ненужное значение трис, означающее трис, которое должно быть скрыто другими частями модели, т. Е. Нормаль, обращенная в сторону от 3d-камеры.
Данные модели, с которыми работает программа, представляют собой просто огромный трехмерный массив со следующимиформатирование для каждого три.
[[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)
Но я бы хотелсравните каждую тройку нормально с CamVector, чтобы код в конечном итоге выглядел так:
def DrawModel(Model):
for i in range(0,len(Model)):
AngleAwayFromCamera = *Math voodoo*
if AngleAwayFromCamera <= 90:
*draw tri*
Если у кого-нибудь есть идеи о том, как помочь, это можно объяснить кому-то с таким же размером мозга, как я,было бы замечательно.Я просмотрел много документации, но большая часть пролетела прямо у меня над головой - возможно, потому, что я не сдал экзамены GCSE.