此算法能使用任意多边形对一条直线段进行裁剪。
类GLdoublePoint: 公有—GLdouble x ,y;
类line: 公有—GLdoublePoint first,second;
linelist: line型数据组成的链表,用于描述多边形;
伪代码:
int CyrusBeck(line& seg , linelist& l)
{
double numer , denom ;
double tIn = 0.0 , tOut = 1.0;
Vector c , temp;
c = seg.second - seg.first;
for(int i = 0 ; i < l.num ; i++)
{
temp = l.line[i].pt - first ; // pt为此时多边形某边上的任意一点

本文介绍了Cyrus-Beck算法,该算法用于裁剪一条直线段与任意多边形的交集。通过GLdoublePoint、line类以及linelist的数据结构,配合dot()点积函数和chopCI()判断射线与边的关系,完成裁剪操作。虽然算法适用于凸多边形,但运算量较大,不适用于边数多的多边形。

2116

被折叠的 条评论
为什么被折叠?



