📜  计算机图形学中的平行(正投影和斜投影)(1)

📅  最后修改于: 2023-12-03 15:12:03.363000             🧑  作者: Mango

计算机图形学中的平行(正投影和斜投影)

在计算机图形学中,平行投影是指通过将空间中的物体投影到一个平面上来创建一个 2D 表示的过程。这个过程是通过平行光线来实现的,因此也被称为直线投影。这种类型的投影可以通过正投影和斜投影来实现。

正投影

正投影的本质是将三维物体的每一个面都垂直地投射到二维平面上。因此,所有的线都是平行的,并且线的长度在投影过程中不会发生变化。正投影是实现平行投影的一种方法。

下面是一个示例 Python 代码片段,用于在 Pygame 中创建一个正投影:

import pygame
from pygame.locals import *

pygame.init()

screen = pygame.display.set_mode((400, 300))
clock = pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    # 绘制 3D 物体
    pygame.draw.rect(screen, (255, 0, 0), (100, 100, 50, 50))
    pygame.draw.rect(screen, (0, 255, 0), (150, 150, 50, 50))
    pygame.draw.rect(screen, (0, 0, 255), (200, 200, 50, 50))

    # 更新屏幕
    pygame.display.update()

    # 限制帧速率
    clock.tick(30)
斜投影

斜投影是另一种实现平行投影的方法,其特点是投影线不垂直于投影面。这种投影方式可以采用不同的角度,例如 45 度或 60 度。

下面是一个示例 Python 代码片段,用于在 Pygame 中创建一个斜投影:

import pygame
from pygame.locals import *

pygame.init()

screen = pygame.display.set_mode((400, 300))
clock = pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    # 绘制 3D 物体
    pygame.draw.polygon(screen, (255, 0, 0), ((100, 100), (150, 150), (100, 200), (50, 150)))
    pygame.draw.polygon(screen, (0, 255, 0), ((150, 150), (200, 200), (150, 250), (100, 200)))
    pygame.draw.polygon(screen, (0, 0, 255), ((200, 200), (250, 250), (200, 300), (150, 250)))

    # 更新屏幕
    pygame.display.update()

    # 限制帧速率
    clock.tick(30)

在以上两个示例中,我们可以看到在计算机图形学中实现平行投影有两种方式:正投影和斜投影。根据应用场景和需求可以选择适合的投影方式来实现。