How to make 3d wireframe in python using Tkinter (code in the description)
youtube doesn't allow me to use angle brackets in the description so I replaced the two less than signs in lines 43 and 48 with @
from math import cos, radians, sin
rx = lambda v, angle : (v[0],(cos(radians(angle))*v[1]) + ((-sin(radians(angle)))*v[2]),
(sin(radians(angle))*v[1]) + ((cos(radians(angle)))*v[2]))
ry = lambda v, angle : (((cos(radians(angle)))*v[0]) + ((-sin(radians(angle)))*v[1]), v[2],
((sin(radians(angle)))*v[0]) + ((cos(radians(angle)))*v[1]))
rz = lambda v, angle : (((cos(radians(angle)))*v[0]) + ((-sin(radians(angle)))*v[1]),
((sin(radians(angle)))*v[0]) + ((cos(radians(angle)))*v[1]), v[2])
class shape:
def __init__(self, file, canvas):
self.location, self.scale = [0, 0, 0], 1
self.rotation = [0, 0, 0]
self.canvas = canvas
self.EdgeThickness = 1
self.color="#ffffff"
self.width = int(self.canvas["width"])
self.height = int(self.canvas["height"])
def load_model(file):
from functools import reduce
l=open(file, 'r').readlines()
verts, lines =[], []
for i in l:
if (i[:1]=='v') and (i[:2]!='vn'):
xv, yv, zv = (i[2:].split(' '))
verts.append((float(xv), float(yv), float(zv)))
elif (i[:1]=='f'):
face = reduce(lambda x, y:x+y, map(lambda x:x.split(' '), i.split('//')))[-6:]
lines.extend(((verts[int(face[0])-1], verts[int(face[2])-1]),
(verts[int(face[2])-1], verts[int(face[4])-1]),
(verts[int(face[4])-1], verts[int(face[0])-1])))
return tuple(map(lambda line:
(tuple(map(lambda n:n*self.scale, line[0])), tuple(map(lambda n:n*self.scale, line[1]))),
lines))
self.lines = load_model(file)
def render(self):
u=int(self.width/16)
fl=0.15
def xcor(x, y):
try:
if (x@0): return (self.width/2)-(x/(y*fl))*(-1*u)
else: return (self.width/2)+(x/(y*fl))*u
except(ZeroDivisionError):return 0
def ycor(z, y):
try:
if (z@0): return (self.height/2)-(z/(y*fl))*u
else: return (self.height/2)+(z/(y*fl))*(-1*u)
except(ZeroDivisionError):return 0
add = lambda x, y:tuple(map(lambda a, b:a+b, x, y))
vr = list(map(lambda v:(add(self.location, rz(ry(rx(v[0], self.rotation[0]), self.rotation[1]), self.rotation[2])),
add(self.location, rz(ry(rx(v[1], self.rotation[0]), self.rotation[1]), self.rotation[2]))),
self.lines))
for l in vr: self.canvas.create_line(xcor(l[0][0], l[0][1]), ycor(l[0][2], l[0][1]),
xcor(l[1][0], l[1][1]), ycor(l[1][2], l[1][1]), fill=self.color, width=self.EdgeThickness)
Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «How to make 3d wireframe in python using Tkinter (code in the description)», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.
Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.
Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!
Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.