当前位置: 首页 > news >正文

电商网站开题报告陕西省网站开发

电商网站开题报告,陕西省网站开发,网站产品策划,wordpress 4.1.1漏洞判定凸多边形#xff1a;顶点凹凸性法 连续三个顶点p1,p2,p3。计算p1p2,p2p3的叉乘#xff0c;阶乘大于0#xff0c;则表示p3点在线段p1和p2的左侧#xff0c;然后依次计算下一个前后所组成向量的阶乘#xff0c;如果在计算时#xff0c;出现负值#xff0c;则此多边形是… 判定凸多边形顶点凹凸性法     连续三个顶点p1,p2,p3。计算p1p2,p2p3的叉乘阶乘大于0则表示p3点在线段p1和p2的左侧然后依次计算下一个前后所组成向量的阶乘如果在计算时出现负值则此多边形是凹多边形如果所有顶点计算完毕其结果都大于0则多边形是凸多边形。 判断点在凸多边形内外     ①与判定凸多边形差不多用判断点与多边形两顶点叉乘都大于0点在多边形内小于0点在多边形外。     ②水平/垂直交叉点数判别法适用于任意多边形包括凹凸边形 注意到如果从P作水平向左的射线的话如果P在多边形内部那么这条射线与多边形的交点必为奇数如果P在多边形外部则交点个数必为偶数0也在内。所以我们可以顺序考虑多边形的每条边求出交点的总个数。还有一些特殊情况要考虑。 判断线段在任意多边形内     1首先要判断一条线段是否在多边形内先要判断线段的两个端点是否在多边形内。如果两个端点不全在多边形内那么线段肯定是不在多边形内的。     2其次如果线段和多边形的某条边内交两线段内交是指两线段相交且交点不在两线段的端点则线段肯定不在多边形内。     3如果多边形的某个顶点和线段相交则必须判断两相交交点之间的线段是否包含于多边形内。 求多边形重心        以第一个顶点为基准分别连接p[i]p[i1]1in。将多边形划分为若干个三角形求出了每个三角形的重心用叉积求三角形面积对凸多边形和凹多边形都适用因为值有正负作为二维的多边形把面积作为权值分别乘以重心坐标的X和Y值分别将求出的X, Y值的加权平均数除以总面积即多边形面积的重心坐标。 具体代码实现 #include iostream #include stdlib.h #include math.h #define MAXN 1000 #define offset 10000 #define eps 1e-8 #define zero(x) (((x)0?(x):-(x))eps) #define _sign(x) ((x)eps?1:((x)-eps?2:0))using namespace std ;struct point{double x,y;}p[MAXN]; struct line{point a,b;};double xmult(point p1,point p2,point p0) //计算向量p1p2p2p3的叉积 {return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); }int is_convex(int n,point* p) //判定凸多边形,顶点按顺时针或逆时针给出,允许相邻边共线 {int i,s[3]{1,1,1};for (i0;ins[1]|s[2];i)s[_sign(xmult(p[(i1)%n],p[(i2)%n],p[i]))]0;return s[1]|s[2]; } int is_convex_v2(int n,point* p) //判定凸多边形,顶点按顺时针或逆时针给出,不允许相邻边共线 {int i,s[3]{1,1,1};for (i0;ins[0]s[1]|s[2];i)s[_sign(xmult(p[(i1)%n],p[(i2)%n],p[i]))]0;return s[0]s[1]|s[2]; }int inside_convex(point q,int n,point* p) //判点在凸多边形内或多边形边上,顶点按顺时针或逆时针给出 {int i,s[3]{1,1,1};for (i0;ins[1]|s[2];i)s[_sign(xmult(p[(i1)%n],q,p[i]))]0;return s[1]|s[2]; } int inside_convex_v2(point q,int n,point* p) //判点在凸多边形内,顶点按顺时针或逆时针给出,在多边形边上返回0 {int i,s[3]{1,1,1};for (i0;ins[0]s[1]|s[2];i)s[_sign(xmult(p[(i1)%n],q,p[i]))]0;return s[0]s[1]|s[2]; }int inside_polygon(point q,int n,point* p,int on_edge2) //判点在任意多边形内,顶点按顺时针或逆时针给出,on_edge表示点在多边形边上时的返回值,offset为多边形坐标上限 {point q2;int i0,count;while (in)for (counti0,q2.xrand()offset,q2.yrand()offset;in;i)//随机取一个足够远的点q,以p为起点q为终点做射线L,依次对多边形的每条边进行考察if( zero(xmult(q,p[i],p[(i1)%n])) (p[i].x-q.x)*(p[(i1)%n].x-q.x)eps (p[i].y-q.y)*(p[(i1)%n].y-q.y)eps )return on_edge;//点p在边上,返回on_edgeelse if (zero(xmult(q,q2,p[i])))break;//点q在射线pq2上停止本循环另取q2else if(xmult(q,p[i],q2)*xmult(q,p[(i1)%n],q2)-epsxmult(p[i],q,p[(i1)%n])*xmult(p[i],q2,p[(i1)%n])-eps)count;return count1; } inline int opposite_side(point p1,point p2,point l1,point l2) {return xmult(l1,p1,l2)*xmult(l1,p2,l2)-eps; } inline int dot_online_in(point p,point l1,point l2) {return zero(xmult(p,l1,l2))(l1.x-p.x)*(l2.x-p.x)eps(l1.y-p.y)*(l2.y-p.y)eps; } int inside_polygon(point l1,point l2,int n,point* p) //判线段在任意多边形内,顶点按顺时针或逆时针给出,与边界相交返回1 {point t[MAXN],tt;int i,j,k0;if (!inside_polygon(l1,n,p)||!inside_polygon(l2,n,p))return 0;for (i0;in;i)if (opposite_side(l1,l2,p[i],p[(i1)%n])opposite_side(p[i],p[(i1)%n],l1,l2))return 0;else if (dot_online_in(l1,p[i],p[(i1)%n]))t[k]l1;else if (dot_online_in(l2,p[i],p[(i1)%n]))//线段的某个端点在S上t[k]l2;else if (dot_online_in(p[i],l1,l2))t[k]p[i];for (i0;ik;i)for (ji1;jk;j){tt.x(t[i].xt[j].x)/2;tt.y(t[i].yt[j].y)/2;if (!inside_polygon(tt,n,p))return 0;}return 1; }point intersection(line u,line v) //求多边形重心 {point retu.a;double t((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x))/((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));ret.x(u.b.x-u.a.x)*t;ret.y(u.b.y-u.a.y)*t;return ret; } point barycenter(point a,point b,point c) {line u,v;u.a.x(a.xb.x)/2;u.a.y(a.yb.y)/2;u.bc;v.a.x(a.xc.x)/2;v.a.y(a.yc.y)/2;v.bb;return intersection(u,v); } point barycenter(int n,point* p) {point ret,t;double t10,t2;int i;ret.xret.y0;for (i1;in-1;i)if (fabs(t2xmult(p[0],p[i],p[i1]))eps){tbarycenter(p[0],p[i],p[i1]);ret.xt.x*t2;ret.yt.y*t2;t1t2;}if (fabs(t1)eps)ret.x/t1,ret.y/t1;return ret; }int main() { }版权声明本文为博主原创文章未经博主允许不得转载。 转载于:https://www.cnblogs.com/wanglaoda/p/4937174.html
http://wiki.neutronadmin.com/news/168105/

相关文章:

  • 如何制作网站教程视频讲解北京app开发公司前十名
  • 网站改版建设征求意见书天津seo外包平台
  • 仿制网站软件wordpress论坛采集
  • 如何用h5做网站企业网站建设费属于办公费吗
  • 济南公司建设网站做我的狗漫画网站
  • 网站开发电脑配置定制手机号码官方网站
  • 陕西富国建设工程有限公司网站网站推广服务报价表
  • 金华专业网站制作公司主动创新网站内容建设
  • 做贸易 公司网站放哪里网站页面设计论文
  • 网站优化和推广编程培训就业班
  • 简约网站商务网站的建设
  • 网站帮助中心设计有域名如何做网站
  • 网站建设的难点和问题网站建设需注意哪些事项
  • 建设部职称网站百度安装下载
  • 网页设计与制作个人网站自助建设手机网站
  • 网站平台建设情况汇报如何seo搜索引擎优化
  • 怎样做下载网站寰宇seo
  • 大型网站开发团队免费网站素材下载
  • 厦门市建设工程交易中心网站在中国做网站网站违法吗
  • 西安市免费做网站网站怎么在成都备案
  • 网站没有在工信部备案网站排名掉了该怎么做
  • 男做暧免费视频网站网站建设方案案例
  • 丹徒建设网官方网站网站建设需求模板
  • 服务器部署php网站wordpress图片验证码插件
  • 网站注册便宜网站注册域名多少钱
  • 丰台专业网站建设公司scratch少儿编程
  • 廊坊自助建站定制网站建设中 翻译
  • 网站建设无锡海之睿宁波网站建设制作电话号码
  • 哪个网站可以直接做ppt连州市网站建设
  • 石狮新站seo私人app一键制作器软件