下面是用Visual C++实现的上述算法:
文件名:LB_LineClip.cpp
// LB_LineClip.cpp
#include "stdafx.h"
BOOL ClipTesting(float p, float q, float *u1, float *u2)
{
  float r;

  if(p < 0)
  {
    r=q/p;
    if(r > *u2) return FALSE;
    else if(r > *u1)
    {
      *u1=r;
      return TRUE;
    }
  }
  else if(p > 0)
  {
    r=q/p;
    if(r < *u1) return FALSE;
    else if(r < *u2)
    {
      *u2=r;
      return TRUE;
    }
  }
  else
    if(q < 0) return FALSE;
  return TRUE;
}

BOOL LB_LineClip( float XL, float XR, float YB, float YT,
         float &x1, float &y1, float &x2, float &y2)
// Input: 裁剪窗口的对角顶点(XL,YB)和(XR,YT); 线段起点(x1,y1)和终点(x2,y2)
// Output:裁剪后的线段起点(x1,y1)和终点(x2,y2)
// 返回值: 1) false -- 与裁剪窗口没有交;
// 2) true -- 线段的一部分或者全部位于裁剪窗口内。
{
  float dx,dy,u1,u2;
  u1=0;
  u2=1;
  dx =x2-x1;
  if(ClipTesting(-dx,x1-XL,&u1,&u2))
    if(ClipTesting(dx,XR-x1, &u1,&u2))
    {
      dy =y2-y1;
      if(ClipTesting(-dy,y1-YB, &u1,&u2))
         if(ClipTesting(dy,YT-y1, &u1,&u2))
         {
          if (u2 < 1.0)
          {
           x2 = x1+u2*dx;
           y2 = y1+u2*dy;
          }
          if (u1 > 0.0)
          {
            x1 += u1*dx;
            y1 += u1*dy;
          }
          return TRUE;
         }
     }
  return FALSE;
}