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

企业网站优化官网wordpress 迁移 乱码

企业网站优化官网,wordpress 迁移 乱码,重大新闻事件2023,网站建设验收评审标准#x1f57a;作者#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux #x1f618;欢迎关注#xff1a;#x1f44d;点赞#x1f64c;收藏✍️留言 #x1f3c7;码字不易#xff0c;你的#x1f44d;点赞#x1f64c;收藏❤️关注对我真的很重要作者 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 欢迎关注点赞收藏✍️留言 码字不易你的点赞收藏❤️关注对我真的很重要有问题可在评论区提出感谢支持 文章目录 实验二、用扫描线算法实现多边形填充一、实验目的及要求二、实验设备三、实验原理四、实验方法与步骤五、实验结果六、结论 实验二、用扫描线算法实现多边形填充 一、实验目的及要求 本实验旨在掌握扫描线算法的原理和实现方法通过编写程序实现多边形的填充。 二、实验设备 Microsoft Visual Studio 2022 三、实验原理 扫描线算法是一种用于填充多边形的算法其基本思想是将多边形分解成若干个梯形区域然后对每个梯形区域进行填充。在填充时扫描线从上往下扫描逐个像素点地判断当前点是否位于多边形内部并根据需要进行颜色填充。 四、实验方法与步骤 算法思想 扫描线填充算法是一种计算机图形学中用于实现多边形填充的算法。它基于对多边形的扫描线进行处理将多边形分割成一系列水平线段并确定每条线段覆盖的像素点是否在多边形内部从而实现多边形的填充。 算法步骤 定义多边形数据结构存储多边形的顶点信息。根据多边形的顶点信息计算出多边形每条边的斜率和截距等信息并存储在一个表格中。从多边形最高点开始以每行像素点为单位向下扫描直到最低点。对于每个扫描线遍历保存边信息的表格计算出当前扫描线和各条边的交点将这些交点按照x坐标大小排序并两两配对。对每一对交点之间的像素点进行填充。重复以上步骤直到扫描线扫描完成。 代码 // 多边形数据结构 struct Polygon {int numVertices; // 多边形顶点数int vertices[100][2]; // 多边形顶点坐标 };// 边数据结构 struct Edge {double x; // 边与扫描线的交点x坐标double slope; // 边斜率倒数int ymax; // 边在扫描线之上的端点y坐标 };// 填充多边形 void FillPolygon(Polygon poly) {// 计算多边形顶点中的最大和最小y坐标int maxY INT_MIN, minY INT_MAX;for (int i 0; i poly.numVertices; i) {if (poly.vertices[i][1] maxY) {maxY poly.vertices[i][1];}if (poly.vertices[i][1] minY) {minY poly.vertices[i][1];}}// 创建边表存储所有的边信息vectorEdge edgeTable;for (int i 0; i poly.numVertices; i) {Edge e;// 获取当前边和下一个顶点的坐标int x1 poly.vertices[i][0], y1 poly.vertices[i][1];int x2 poly.vertices[(i 1) % poly.numVertices][0], y2 poly.vertices[(i 1) % poly.numVertices][1];// 如果y1 y2说明该边不需要加入边表if (y1 y2) {continue;}// 如果y2 y1则交换两个顶点的坐标if (y2 y1) {swap(x1, x2);swap(y1, y2);}// 计算出边与扫描线的交点x坐标和斜率倒数e.x x1;e.slope (double)(x2 - x1) / (y2 - y1);e.ymax y2 - 1;// 将边加入边表中edgeTable.push_back(e);}// 对边表按照交点x坐标排序sort(edgeTable.begin(), edgeTable.end(), [](const Edge a, const Edge b) { return a.x b.x; });// 创建活动边表存储所有与当前扫描线有交点的边信息vectorEdge activeEdgeTable;// 从多边形最高点开始逐行扫描for (int y maxY; y minY; y--) {// 将与当前扫描线有交点的边加入活动边表中for (int i 0; i edgeTable.size(); i) {if (edgeTable[i].ymax y) {activeEdgeTable.push_back(edgeTable[i]);}}// 按照交点x坐标排序sort(activeEdgeTable.begin(), activeEdgeTable.end(), [](const Edge a, const Edge b) { return a.x b.x; });// 填充扫描线int x1 INT_MAX, x2 INT_MIN;for (int i 0; i activeEdgeTable.size(); i 2) {x1 (int)ceil(activeEdgeTable[i].x);x2 (int)floor(activeEdgeTable[i 1].x);// 如果是偶数条边则说明有完整的矩形区域需要填充if (i 1 activeEdgeTable.size()) {for (int x x1; x x2; x) {SetPixel(x, y);}}}// 更新活动边表for (int i 0; i activeEdgeTable.size(); i) {activeEdgeTable[i].x activeEdgeTable[i].slope;activeEdgeTable[i].ymax--;}// 从活动边表中移除不再与扫描线相交的边activeEdgeTable.erase(remove_if(activeEdgeTable.begin(), activeEdgeTable.end(), [](const Edge a) { return a.ymax 0; }), activeEdgeTable.end());} }五、实验结果 扫描填充算法运行结果 六、结论 本实验是通过扫描线算法来实现多边形的填充。首先定义了多边形和边的数据结构并且根据多边形的顶点信息计算出每条边的斜率和截距等信息存储在一个表格中。然后从多边形最高点开始以每行像素点为单位向下扫描直到最低点。对于每个扫描线遍历保存边信息的表格计算出当前扫描线和各条边的交点将这些交点按照x坐标大小排序并两两配对然后对每一对交点之间的像素点进行填充。最后重复以上步骤直到扫描线扫描完成。这种算法的优势在于可以处理任意形状的多边形而不仅限于凸多边形。算法的时间复杂度为O(nlogn)其中n为多边形的边数。本次实验的结果是成功实现了多边形的填充。
http://www.zqtcl.cn/news/906934/

相关文章:

  • 北京哪个网站建设最好怀化网站建设公司
  • 做类似猪八戒网的网站注册一个商标多少钱
  • 怎么提高网站访问速度wordpress怎么备份按在
  • 淘宝网站是谁做的好处wordpress商业授权
  • 淘宝客网站怎么批量采集淘宝商品方维采集淘宝数据思路珠宝类网站建设
  • 重庆网站关键字优化雅布设计中国分公司在哪里
  • 山西做网站费用温州做网站制作
  • 购买域名后 可以做网站么苏州市建设厅网站
  • 网站域名如何查询win7优化配置的方法
  • 免费建网站的服务器佛山城市建设工程有限公司
  • 安溪人做的网站wordpress 单页面 主题
  • 品牌型网站设计创意 国外 网站
  • o2o网站建设包括哪些平面设计作品欣赏
  • 万齐网站建设成都旅游攻略自由行攻略地图
  • 新网做网站流程app下载汅api未满入内
  • 邓州网站建设建设摩托车价格大全
  • 关闭网站怎么不保存我做的更改软件工程师英文
  • 垦利网站定制提供哈尔滨网站建设服务
  • 谷歌在线浏览器入口seo内容优化是什么意思
  • 新闻门户网站免费建设西安做企业网站哪家做的好
  • 湘潭网站建设 w磐石网络安徽省工程建设信息网官方网站
  • 移动端网站开发教程局网站建设工作征求意见
  • 浙江网站建设公司地址南京做电商网站的公司
  • 网上销售型的企业网站建行个人手机银行
  • 网站建设与规划方案书网站建设策划有哪些
  • 手机网站建设推广方案ppt模板单页企业官网模板
  • 荥阳网站建设多少钱长沙企业关键词优化哪家好
  • 网站购物流程模块怎么实现最新足球赛事
  • 网站建设后需要维护吗网站规划的案例
  • 北京造价员变更在哪个网站做免费域名申请入口