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

做视频网站需要什么样的配置h5旅游网站开发

做视频网站需要什么样的配置,h5旅游网站开发,模板建站seo优化,做网站收费标准点击量这里实现的方法是转载于https://blog.csdn.net/trj14/article/details/43190653和https://blog.csdn.net/WilliamSun0122/article/details/77994526 来实现的#xff0c;并且按照Qt的规则进行了调整。 以下实现方法有四种#xff0c;每种方法的具体讲解在转载的博客中有说明并且按照Qt的规则进行了调整。 以下实现方法有四种每种方法的具体讲解在转载的博客中有说明这里不做重复阐述。 这里只说下代码的具体实现和每种方法的时间复杂度。 强烈推荐第一种方法其它三种针对一些特殊图形或多或少都有一些问题。 方法一射线法 时间复杂度O(n) 。 适用范围任意多边形。 优点不需考虑精度误差和多边形点给出的顺序。 算法思想以被测点Q为端点向任意方向作射线一般水平向右作射线统计该射线与多边形的交点数。如果为奇数Q在多边形内如果为偶数Q在多边形外。计数的时候会有一些特殊情况如图 //判断点P在多边形内-射线法 bool Widget::InsidePolygon( QVectorQPointF polygon,QPointF pt ) {int i,j;bool inside,redo;int N polygon.size();redo true;for (i 0;i N;i){// 是否在顶点上if (polygon[i].x() pt.x() polygon[i].y() pt.y()){redo false;inside true;break;}}while (redo){redo false;inside false;for (i 0,j N - 1;i N;j i){if ( (polygon[i].y() pt.y() pt.y() polygon[j].y()) ||(polygon[j].y() pt.y() pt.y() polygon[i].y()) ){if (pt.x() polygon[i].x() || pt.x() polygon[j].x()){double _x (pt.y()-polygon[i].y())*(polygon[j].x()-polygon[i].x())/(polygon[j].y()-polygon[i].y())polygon[i].x();if (pt.x() _x) // 在线的左侧inside !inside;else if (pt.x() _x) // 在线上{inside true;break;}}}else if ( pt.y() polygon[i].y()){if (pt.x() polygon[i].x()) // 交点在顶点上{if (polygon[i].y() polygon[j].y())pt.setY(pt.y() - 1);elsept.setY(pt.y() 1);redo true;break;}}else if ( polygon[i].y() polygon[j].y() pt.y() polygon[i].y() ((polygon[i].x() pt.x() pt.x() polygon[j].x()) ||(polygon[j].x() pt.x() pt.x() polygon[i].x())) )// 在水平的边界线上{inside true;break;}}}return inside; } 方法二面积和判别法 时间复杂度大于O(n)。 适用范围所有凸边形部分凹变形。 优点算法简单。 缺点有精度要求强调多边形点给出的方向逆时针。 算法思想如果点在多边形内部或者边上那么点与多边形所有边组成的三角形面积和等于多边形面积。多边形的面积可以用叉积计算即连接坐标原点和各顶点形成向量所有向量叉积的0.5的和即为多边形面积。不过计算面积是会有一定误差的需要设置精度的误差范围。 //面积和判别法 bool InsidePolygon3( QVectorQPointF polygon,QPointF pt ) {int i,j;bool inside false;double polygon_area 0;double trigon_area 0;int N polygon.size();for (i 0,j N - 1;i N;j i){polygon_area polygon[i].x() * polygon[j].y() - polygon[j].x() * polygon[i].y();trigon_area abs(pt.x() * polygon[i].y() -pt.x() * polygon[j].y() -polygon[i].x() * pt.y() polygon[i].x() * polygon[j].y() polygon[j].x() * pt.y() -polygon[j].x() * polygon[i].y());}trigon_area * 0.5;polygon_area abs(polygon_area * 0.5);if ( fabs(trigon_area - polygon_area) 1e-7 )inside true;return inside; }方法三点线判别法 时间复杂度O(n)。 适用范围所有凸边形部分凹变形。 算法思想对于多边形正向即逆时针如果一个点它的所有有向边的左边那么这个点一定在多边形内部。利用叉积正好可以判断点与给定边的关系即点是在边的左边右边还是边上。 //点线判别法 bool InsidePolygon4( QVectorQPointF polygon,QPointF p ) {int i,j;bool inside false;int count1 0;int count2 0;int N polygon.size();for (i 0,j N - 1;i N;j i){double value (p.x() - polygon[j].x()) * (polygon[i].y() - polygon[j].y()) - (p.y() - polygon[j].y()) * (polygon[i].x() - polygon[j].x());if (value 0)count1;else if (value 0)count2;}if (0 count1 ||0 count2){inside true;}return inside; }方法四角度和判别法 时间复杂度O(n)。 适用范围所有凸边形部分凹变形。 优点不强调多边形点给出顺序。 缺点这个算法对精度的要求很高会造成很大精度误差。 算法思想连接被测点与多边形所有顶点所形成的所有角的角度和在精度范围内等于则该点在多边形内否则在多边形外。 // 根据需要不判断顶点 bool IsPointInLine( QPointF pt,QPointF pt1,QPointF pt2 ) {bool inside false;if (pt.y() pt1.y() pt1.y() pt2.y() ((pt1.x() pt.x() pt.x() pt2.x()) ||(pt2.x() pt.x() pt.x() pt1.x())) ){inside true;}else if (pt.x() pt1.x() pt1.x() pt2.x() ((pt1.y() pt.y() pt.y() pt2.y()) ||(pt2.y() pt.y() pt.y() pt1.y())) ){inside true;}else if ( ((pt1.y() pt.y() pt.y() pt2.y()) ||(pt2.y() pt.y() pt.y() pt1.y())) ((pt1.x() pt.x() pt.x() pt2.x()) ||(pt2.x() pt.x() pt.x() pt1.x())) ){if (0 (pt.y()-pt1.y())/(pt2.y()-pt1.y())-(pt.x() - pt1.x()) / (pt2.x()-pt1.x())){inside true;}}return inside; }//角度和判别法 bool InsidePolygon2( QVectorQPointF polygon,QPointF p) {int i,j;double angle 0;bool inside false;int N polygon.size();for (i 0,j N - 1;i N;j i){if (polygon[i].x() p.x() // 是否在顶点上polygon[i].y() p.y()){inside true;break;}else if (IsPointInLine(p,polygon[i],polygon[j])) // 是否在边界线上{inside true;break;}double x1,y1,x2,y2;x1 polygon[i].x() - p.x();y1 polygon[i].y() - p.y();x2 polygon[j].x() - p.x();y2 polygon[j].y() - p.y();double radian atan2(y1,x1) - atan2(y2,x2);radian abs(radian);if (radian M_PI) radian 2* M_PI - radian;angle radian; // 计算角度和}if ( fabs(6.28318530717958647692 - angle) 1e-7 )inside true;return inside; }
http://www.dnsts.com.cn/news/258318.html

相关文章:

  • 网站型与商城型有什么区别吗温州做网站建设哪家好
  • 网站开发与维护视频wordpress收录查询插件
  • 婚庆公司网站搭建域名解析备案
  • 做彩票网站需要什么条件升级wordpress很慢
  • 奇搜建设辽沈阳网站简述网站开发具体流程图
  • 俄罗斯服务器网站搜网站关键词
  • 公司网站建设制作商1天学会搭建营销网站
  • 贞丰县建设局网站做汽车的网站编辑
  • 什么语言做网站设计师做兼职的网站有哪些
  • 建设网站总结wordpress 获取文章发布时间
  • 建瓯企业网站建设淘宝客网站程序购米
  • 书店网站策划书网站建设一般要多大空间
  • 门户地方网站 策略网络广告网站怎么做
  • 六安做网站公司百度指数在线查询前100
  • 中国建设银行 英文网站网址我的上网主页
  • 如何设置网站会员石家庄做外贸网站建设
  • 博客网站seo做网站定制开发的公司
  • 提供虚拟主机服务的网站彬县网招聘
  • v9双语版网站怎么做视觉元素网站
  • 网站开发保密协议模板项目融资平台
  • 郑州建设招标办网站公司查询网
  • 安徽建设厅考勤网站镇江市住房与城乡建设部网站
  • 上海高中生做课题的网站学校网站建设的难点
  • 阳江网站制作公司北京建站设计
  • 发布工程信息的网站有哪些公司网站后台维护
  • 长春网站建设方案报价电商平台如何宣传
  • 在站点上新建网页学习网站建设的心得
  • 个人如何在企业网站做实名认证农业网站开发
  • 桂阳网站定制批量上传网站产品
  • 做瞹瞹嗳免费网站在线观看网站首页被降权的原因