12.图形裁剪——二维裁剪+三维裁剪+Sutherland-Cohen裁剪算法+中点分割算法

♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥

目录

1.二维裁剪

2.二维线裁剪

(1)Sutherland-Cohen裁剪

(2)中点分割裁剪

(3)梁友栋-Barsky裁剪

3.二维多边形裁剪

4.文本裁剪

5.三维裁剪

6.三维裁剪算法

♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥

1.二维裁剪

裁剪:确定场景或者画面中位于给定区域之内的部分。

————————————————————

回忆一下三维变换流程:

局部坐标系->模型变换->

世界坐标系->取景变换->

视点坐标系->投影变换->

图像坐标系->设备变换->

规则化设备坐标系->视窗变换->屏幕坐标系

————————————————————

投影变换的时候,将视点坐标系转换为了图像坐标系,从三维转换为了二维。

因此,二维裁剪主要在投影变换之后

2.二维线裁剪

对于线的裁剪,就是确定哪些线段位于裁剪窗口之内,哪些线段位于裁剪窗口之外。

二维线裁剪

二维裁剪的主要方法有:Sutherland-Cohen裁剪、中点分割裁剪、梁友栋-Barsky裁剪等。

(1)Sutherland-Cohen裁剪

Sutherland-Cohen算法

对于每条待裁剪的线段P1P2,算法的基本思想

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cohen-Sutherland直线裁剪算法是一种用于裁剪线段的算法。它通过对直线段的端点进行编码,并利用位运算来决定是否需要进行裁剪算法的步骤如下: 1. 将裁剪窗口分为九个区域,对应于二进制编码的九个位: - 0000: 线段完全在裁剪窗口内部 - 0001: 线段与窗口左边界相交 - 0010: 线段与窗口右边界相交 - 0100: 线段与窗口下边界相交 - 1000: 线段与窗口上边界相交 - 0101: 线段与窗口左下角相交 - 1001: 线段与窗口左上角相交 - 0110: 线段与窗口右下角相交 - 1010: 线段与窗口右上角相交 2. 对直线段的两个端点进行编码,并根据编码判断线段是否需要进行裁剪。 - 如果两个端点的编码都为0000,表示线段完全在裁剪窗口内部,无需裁剪。 - 如果两个端点的编码的逻辑与运算结果不为0000,表示线段与窗口有交点,需要进行裁剪。 - 如果两个端点的编码的逻辑与运算结果为0000,表示线段与窗口无交点,且整条线段都在裁剪窗口外部,无需裁剪。 3. 如果线段需要进行裁剪,则根据需要裁剪的边界进行处理: - 如果线段与左边界相交,则根据线段方向求出相交点的坐标,并更新线段的起点。 - 如果线段与右边界相交,则根据线段方向求出相交点的坐标,并更新线段的终点。 - 如果线段与下边界相交,则根据线段方向求出相交点的坐标,并更新线段的起点。 - 如果线段与上边界相交,则根据线段方向求出相交点的坐标,并更新线段的终点。 4. 重复步骤2和步骤3,直到线段不需要裁剪或者已经被完全裁剪中点分割算法是另一种裁剪线段的算法。它通过递归地将线分割为左半边和右半边,并对每一半进行裁剪,直到无法再分割或者线段完全在裁剪窗口内部。 这两种算法都可以用来实现直线段的裁剪,具体选择哪种算法取决于具体的应用场景和需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值