📅  最后修改于: 2021-01-13 09:36:05             🧑  作者: Mango
裁剪在计算机图形学中的主要用途是删除查看窗格之外的对象,线或线段。观看变换对点相对于观看空间的位置不敏感-尤其是在观看者后面的那些点-并且必须在生成视图之前删除这些点。
从给定的窗口剪切点非常容易。考虑下图,其中矩形表示窗口。截点告诉我们给定的点(X,Y)是否在给定的窗口内;并决定我们是否将使用窗口的最小和最大坐标。
如果X位于Wx1≤X≤Wx2之间,则给定点的X坐标在窗口内。同样,如果Y位于Wy1≤Y≤Wy2之间,则给定点的Y坐标在窗口内。
剪线的概念与点剪裁相同。在剪线中,我们将剪裁窗口外部的部分,只保留窗口内部的部分。
该算法使用裁剪窗口,如下图所示。裁剪区域的最小坐标为$(XW_ {min,} YW_ {min})$,裁剪区域的最大坐标为$(XW_ {max,} YW_ {max})$。
我们将使用4位来划分整个区域。这4位代表区域的顶部,底部,右侧和左侧,如下图所示。此处, TOP和LEFT位设置为1,因为它是TOP-LEFT拐角。
这条线有3种可能性-
行可以完全在窗口内(应接受此行)。
线可以完全在窗口之外(该线将从该区域中完全删除)。
线可以部分位于窗口内(我们将找到相交点并仅绘制线在区域内的那部分)。
步骤1-为每个端点分配一个区域代码。
步骤2-如果两个端点的区域代码都为0000,则接受此行。
步骤3-否则,对两个区域代码执行逻辑与运算。
步骤3.1-如果结果不是0000,则拒绝该行。
步骤3.2-否则您需要裁剪。
步骤3.2.1-选择窗口外部的线的端点。
步骤3.2.2-在窗口边界处找到交点(基于区域代码)。
步骤3.2.3-用交点替换端点并更新区域代码。
步骤3.2.4-重复步骤2,直到找到一条被接受或被拒绝的剪切线。
步骤4-对其他行重复步骤1。
该算法比Cohen-Sutherland算法更有效。它采用参数线表示和简单点积。
线的参数方程为-
P0P1:P(t) = P0 + t(P1 - P0)
设N i为外法线边缘E i 。现在,在边缘E i上选取任意点P Ei ,然后得出点积N i 。[P(t)– P Ei ]确定点P(t)是在“剪辑边缘内部”还是“在剪辑边缘外部”或在夹子边缘上。
如果N i 。[P(t)– P Ei ] <0,则点P(t)在内部
如果N i 。[P(t)– P Ei ]> 0,则点P(t)在外部
如果N i 。[P(t)– P Ei ] = 0(交点),则点P(t)在边上。
N i 。[P(t)– P Ei ] = 0
N i 。[P 0 + t(P 1 -P 0 )– P Ei ] = 0(用P 0 + t(P 1 -P 0 )代替P(t))
N i 。[P 0 – P Ei ] + N i .t [P 1 -P 0 ] = 0
N i 。[P 0 – P Ei ] + N i ∙tD = 0(用D代替[P 1 -P 0 ])
N i 。[P 0 – P Ei ] =-N i ∙tD
t的等式变为
$$ t = \ tfrac {N_ {i}。[P_ {o}-P_ {Ei}]} {{-N_ {i} .D}} $$
在以下条件下有效-
也可以通过指定剪切窗口来剪切多边形。 Sutherland Hodgeman多边形裁剪算法用于多边形裁剪。在此算法中,将多边形的所有顶点都剪切到剪切窗口的每个边缘上。
首先,将多边形剪切到多边形窗口的左边缘以获取该多边形的新顶点。这些新顶点用于将多边形裁剪到裁剪窗口的右边缘,上边缘,下边缘,如下图所示。
在使用裁剪窗口处理多边形的边缘时,如果边缘不完全位于裁剪窗口内部,则会找到相交点,并且会裁剪从相交点到外部边缘的部分边缘。下图显示了左,右,顶部和底部边缘剪裁-
各种技术用于在计算机图形中提供文本剪辑。它取决于用于生成字符的方法和特定应用程序的要求。下面列出了三种文本剪辑方法:
下图显示了全部或全部字符串剪辑-
在全部或全部不使用字符串剪切方法中,要么保留整个字符串,要么根据剪切窗口拒绝整个字符串。如上图所示,STRING2完全位于剪切窗口内,因此我们将其保留,而STRING1仅部分位于剪切窗口内,我们拒绝。
下图显示了全部或全部字符剪辑-
这种裁剪方法基于字符而不是整个字符串。在此方法中,如果字符串完全位于剪切窗口内,则将其保留。如果它部分位于窗口之外,则-
您仅拒绝字符串中位于外部的部分
如果字符在剪切窗口的边界上,则我们丢弃整个字符并保留其余字符串。
下图显示了文本剪辑-
这种剪切方法基于字符而不是整个字符串。在此方法中,如果字符串完全位于剪切窗口内,则将其保留。如果它部分在窗户外面,那么
您仅拒绝字符串的外部部分。
如果字符在剪切窗口的边界上,那么我们只丢弃字符在剪切窗口之外的部分。
位图是描述图像的像素集合。它是计算机用来存储和显示图片的一种计算机图形。在这种类型的图形中,图像是一点一点地存储的,因此它被称为位图图形。为了更好地理解,让我们考虑以下示例,其中使用位图图形绘制笑脸。
现在,我们将看到如何在计算机图形图像中一点一点地存储这个笑脸。
通过仔细观察原始笑脸,我们可以看到上图中有两条蓝线分别表示为B1,B2和E1,E2。
以相同的方式,分别使用A4,B5,C6,D6,E5和F4的组合位表示笑脸。
位图图形的主要缺点是-
我们无法调整位图图像的大小。如果尝试调整大小,像素将变得模糊。
彩色位图可能非常大。