最近在上计算机图形学,有布置多边形裁剪的作业,要求是在vs上实现,在网上搜了一会,好多都是OpenGL写的,所以把作业的代码贴一下,供需要的参考参考,是从这位博主改来的:http://blog.csdn.net/nanhaizhixin/article/details/6531896
原理大家网上搜搜,我也不太懂!!!
代码如下:
在头文件定义类型
enum Boundary{
Left, Right, Bottom, Top
};
函数:
int CMFCAppday_1_01View::Inside(POINT p, Boundary b, POINT wMin, POINT wMax)
{
switch (b)
{
case Left:
if (p.x<wMin.x) return (false);
break;
case Right:
if (p.x>wMax.x) return (false);
break;
case Bottom:
if (p.y<wMin.y) return (false);
break;
case Top:
if (p.y>wMax.y) return (false);
break;
}
return true;
}/*Inside*/
/* 求相交的点 */
POINT CMFCAppday_1_01View::Intersect(POINT p1, POINT p2, Boundary b, POINT wMin, POINT wMax)
{
POINT iPt;
float m;
if (p1.x != p2.x) m = (p2.y - p1.y) / (p2.x - p1.x);
switch (b) {
case Left:
iPt.x = wMin.x;
iPt