/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/python/lab-111-019/main.py
40 строк
1 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
import turtle import math def iso_project(x: float, y: float, z: float, scale: float = 1.0) -> tuple[float, float]: """Изометрическая проекция (углы 30°, 30°, 120°)""" iso_x = (x - y) * math.cos(math.radians(30)) * scale iso_y = (x + y) * math.sin(math.radians(30)) - z * scale return iso_x, iso_y def draw_iso_tetrahedron(edge: float, origin: tuple[float, float] = (0, 0), fill: bool = False): t = turtle.Turtle() t.speed(0) # Вершины правильного тетраэдра в 3D (центрированы в начале) a = edge / math.sqrt(2) vertices_3d = [ ( a, a, a), ( a, -a, -a), (-a, a, -a), (-a, -a, a) ] proj = [iso_project(x, y, z, 0.8) for x, y, z in vertices_3d] proj = [(px + origin[0], py + origin[1]) for px, py in proj] faces = [(0,1,2), (0,1,3), (0,2,3), (1,2,3)] for face in faces: t.penup() t.goto(*proj[face[0]]) t.pendown() for idx in face[1:] + (face[0],): t.goto(*proj[idx]) if fill: t.begin_fill() for idx in face: t.goto(*proj[idx]) t.end_fill() t.hideturtle() draw_iso_tetrahedron(100) turtle.done()