图形学作业(三)基于OpenGL的三角形裁剪(python)

本文介绍了使用OpenGL和Python实现基于Cohen-Sutherland算法的三角形裁剪。通过定义CohenSutherland函数,根据算法判断线段与窗口的关系,保留窗口内的部分,丢弃窗口外的,实现图形裁剪。代码参考了相关博客,但结果可能与预期不同。
摘要由CSDN通过智能技术生成

一、下包,如果没下,看我作业(一)的介绍

二、本文主要实现三角形在一个固定窗体内是如何裁剪的,主要运用cohen-sutherland 算法,想看懂代码必须理解这个算法https://blog.csdn.net/xyisv/article/details/83514472,将图形用窗口区分开来,窗口内的保留,窗口外的丢弃,与窗口存在交点的求出交点,在交点处把线段一分为二,丢弃窗口外的部分,从而实现裁剪。故此,本实验定义函数CohenSutherland(线段端点1的横坐标,线段端点1的纵坐标, 线段端点2的横坐标, 线段端点2的纵坐标)来实现裁剪。

三、代码

#!/usr/bin/python
#-*-coding:UTF-8-*-
import numpy as np
import cv2
LEFT = 1
RIGHT = 2
BOTTOM = 4
TOP = 8

xl = 300
xr = 500
yb = 150
yt = 350  # 窗口的边界值
 # Create a black image
img = np.zeros((500, 800, 3), np.uint8)  # 相当于建立画布
 # 编码
def encode(x, y):
    c = 0
    if x < xl:
        c = c | LEFT
    if x > xr:
        c = c | RIGHT
    if y < yb:
        c = c | BOTTOM
    if y > yt:
        c = c | TOP
    return c
 # cohen-sutherland 算法
def C
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值