做视频网站被判刑,九寨沟网站建设规划书,wordpress前台发视频图片,昆明网站网站建设从相反的法线方向观察#xff0c;顺时针还是逆时针是相反的。 多边形的时针方向与法线方向的关系呈右手法则关系。 GoogleEarth中的面具有时针方向#xff0c;法线方向为正向#xff0c;反之为负向 GoogleEarth的垂面在法线方向为亮色#xff0c;反向为暗色 GoogleEarth的水…从相反的法线方向观察顺时针还是逆时针是相反的。 多边形的时针方向与法线方向的关系呈右手法则关系。 GoogleEarth中的面具有时针方向法线方向为正向反之为负向 GoogleEarth的垂面在法线方向为亮色反向为暗色 GoogleEarth的水平面或斜面无论法线指向天空还是地面背离地面的一侧总是亮色。 要保证多边形的各侧向垂面的法线总是朝外保持外侧面为亮面若该多边形为顺时针则各垂面边框按从高点起始先画水平线到下点再画垂线到低点最后回到高点的方法。反之若该多边形为逆时针则各垂面边框应从高点开始先画垂线到低点再画水平线到下点最后回到高点的方法。 换句话说假设各垂面都从高点开始画如果多边形是顺时针的则先画水平线如果多边形是逆时针的则先画垂直线。归纳为 “顺高水逆高垂”。 凸多边形只有具有一个时针方向但凹多边形的凸边和凹边时针方向不相同。一个多边形无论凹凸判断每相邻两边的时针方向更有意义。由3点构成的两边计算这3点的卷积(CorssProduct)卷积为正是逆时针卷积为负是顺时针。 卷积(ΔXi,ΔYi)×(ΔXi1,ΔYi1)即 cp(xi-xi-1)×(yi1-yi)-(yi-yi-1)×(xi1-xi), 若cp0该点为逆时针点。反之为顺时针点。 同时如果一个多边形是凸多边形那么它每个顶点的卷积都为正或都为负。凹多边形的所有顶点的卷积有的为正有的为负。 此外如果多边形存在重合的两点或连续3点在一条直线上那么卷积0没有时针方向也不区分凹凸。 代码示例1判断一个多边形是顺时针还是逆时针 /* Return the clockwise status of a curve, clockwise or counterclockwise n vertices making up curve p return 0 for incomputables eg: colinear points CLOCKWISE 1 COUNTERCLOCKWISE -1 It is assumed that - the polygon is closed - the last point is not repeated. - the polygon is simple (does not intersect itself or have holes) */ int ClockWise(XY *p,int n) { int i,j,k; int count 0; double z; if (n 3) return(0); for (i0;in;i) { j (i 1) % n; k (i 2) % n; z (p[j].x - p[i].x) * (p[k].y - p[j].y); z - (p[j].y - p[i].y) * (p[k].x - p[j].x); if (z 0) count--; else if (z 0) count; } if (count 0) return(COUNTERCLOCKWISE); else if (count 0) return(CLOCKWISE); else return(0); } 代码示例2判断一个多边形是凸多边形还是凹多边形 Return whether a polygon in 2D is concave or convex return 0 for incomputables eg: colinear points CONVEX 1 CONCAVE -1 It is assumed that the polygon is simple (does not intersect itself or have holes) */ int Convex(XY *p,int n) { int i,j,k; int flag 0; double z; if (n 3) return(0); for (i0;in;i) { j (i 1) % n; k (i 2) % n; z (p[j].x - p[i].x) * (p[k].y - p[j].y); z - (p[j].y - p[i].y) * (p[k].x - p[j].x); if (z 0) flag | 1; else if (z 0) flag | 2; if (flag 3) return(CONCAVE); } if (flag ! 0) return(CONVEX); else return(0); } 转载于:https://www.cnblogs.com/mol1995/p/10890367.html