下面是一个办法,不过估计楼主没必要去判断POLYLINE的走向是顺时针还是逆时针
- ///
- /// 判断轻型多义性的时钟走向
- /// Version : 2008.11.14
- ///
- /// 轻型多义性
- /// 顺时针返回-1,逆时针返回1
- static public int Clockwise(Polyline pline)
- {
- Polyline pline1 = (Polyline)pline.Clone();
- double bulge0 = pline1.GetBulgeAt(0);
- double area0 = pline1.Area;
- if (bulge0 == 0.0)
- {
- pline1.SetBulgeAt(0, 0.5);
- double area1 = pline1.Area;
- if (area1 > area0)
- return 1;
- else
- return -1;
- }
- else
- {
- pline1.SetBulgeAt(0, 0);
- double area1 = pline1.Area;
- if (bulge0 > 0)
- {
- if (area1 > area0)
- return -1;
- else
- return 1;
- }
- else
- {
- if (area1 > area0)
- return 1;
- else
- return -1;
- }
- }
- }
|