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

自己做网站怎么样太原做网站公司5大建站服务

自己做网站怎么样,太原做网站公司5大建站服务,成都最近爆发的传染病,为什么sem的工资都不高问题点 使用C#语言在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合? 这个多边形可能存在交叉及互相重叠部分 图像的宽、高可以定义为:2000*2000 多边形坐标集合:Point[] polygon_points new Point[] { new Point…

问题点

使用C#语言在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合?

这个多边形可能存在交叉及互相重叠部分

图像的宽、高可以定义为:2000*2000

多边形坐标集合:Point[] polygon_points = new Point[] { new Point(992, 1461), new Point(1616, 925), new Point(1706, 1816), new Point(1155, 948), new Point(1986, 1216), new Point(996, 1956), new Point(811, 1031) };

 

解决方案一:针对整体的图像宽高扫描(可能耗时)

要在 C# 中实现从一个多边形中获取其在给定宽度和高度范围内的所有整数坐标点,你可以使用一种称为“扫描线算法”(Scanline Algorithm)的方法。这种方法通过水平扫描多边形的每一条边,来确定哪些像素应该被填充。但是,直接用纯数学方法实现可能会比较复杂,特别是对于复杂的多边形。

下面是一个简化版的示例代码,它使用了 System.Drawing 命名空间中的 GraphicsPathRegion 类来帮助我们找到多边形内部的点。请注意,这个示例假设你在一个 Windows Forms 应用程序中工作,因为 System.Drawing 主要用于图形处理。

using System;
using System.Drawing;
using System.Collections.Generic;class PolygonPointsFinder
{public static List<Point> GetPolygonInteriorPoints(Point[] polygon_points, int width, int height){var interiorPoints = new List<Point>();using (var graphicsPath = new GraphicsPath()){graphicsPath.AddPolygon(polygon_points);using (var region = new Region(graphicsPath)){for (int y = 0; y < height; y++){for (int x = 0; x < width; x++){if (region.IsVisible(x, y)){interiorPoints.Add(new Point(x, y));}}}}}return interiorPoints;}
}class Program
{static void Main(){Point[] polygon_points = new Point[]{new Point(992, 1461),new Point(1616, 925),new Point(1706, 1816),new Point(1155, 948),new Point(1986, 1216),new Point(996, 1956),new Point(811, 1031)};int width = 2000; // 定义宽度int height = 2000; // 定义高度var points = PolygonPointsFinder.GetPolygonInteriorPoints(polygon_points, width, height);// 打印所有内部点foreach (var point in points){Console.WriteLine($"({point.X}, {point.Y})");}}
}

这段代码首先定义了一个 GetPolygonInteriorPoints 方法,它接收一个多边形的顶点和一个指定的宽度与高度。它创建一个 GraphicsPath 对象并添加多边形路径,然后创建一个 Region 对象来表示这个路径的区域。接下来,它遍历整个区域并检查每个点是否在区域内。如果在区域内,则将该点添加到结果列表中。

最后,Main 方法中调用了 GetPolygonInteriorPoints 并打印出所有内部点。由于多边形可能非常大,实际运行时可能需要较长的时间,尤其是当多边形的边界非常接近或超出指定的宽度和高度时。

 

解决方案二:针对多边形的最小包含矩形扫描

同方法一,在获取坐标时,先把多边形形成的路径计算出来,进而再次循环

using System;
using System.Drawing;
using System.Collections.Generic;class PolygonPointsFinder
{public static List<Point> GetPolygonInteriorPoints(Point[] polygon_points){var interiorPoints = new List<Point>();using (var graphicsPath = new GraphicsPath()){graphicsPath.AddPolygon(polygon_points);RectangleF boundsF = graphicsPath.GetBounds();Rectangle bounds = new Rectangle((int)Math.Floor(boundsF.X),(int)Math.Floor(boundsF.Y),(int)Math.Ceiling(boundsF.Width),(int)Math.Ceiling(boundsF.Height));using (var region = new Region(graphicsPath)){for (int y = bounds.Top; y < bounds.Bottom; y++){for (int x = bounds.Left; x < bounds.Right; x++){if (region.IsVisible(x, y)){interiorPoints.Add(new Point(x, y));}}}}}return interiorPoints;}
}class Program
{static void Main(){Point[] polygon_points = new Point[]{new Point(992, 1461),new Point(1616, 925),new Point(1706, 1816),new Point(1155, 948),new Point(1986, 1216),new Point(996, 1956),new Point(811, 1031)};int width = 2000; // 定义宽度int height = 2000; // 定义高度var points = PolygonPointsFinder.GetPolygonInteriorPoints(polygon_points);// 打印所有内部点foreach (var point in points){Console.WriteLine($"({point.X}, {point.Y})");}}
}

注意点

图像的边界处是否需要处理,看情况根据自身情况考虑

 

http://www.yayakq.cn/news/105233/

相关文章:

  • 域名可以同时做邮箱和网站么丹东建设监督网站
  • 有趣的网站 知乎北京城乡建设官方网站
  • 评估企业网站建设网站建设价格正规
  • wordpress插件 stock爱站网站长seo综合查询
  • 长基建站网站的建设目标有哪些
  • 做量化投资网站以前做视频的网站
  • 医院门户网站开发服务器租用后怎么使用
  • 网站建设指导思想和目标公司做网站 手机 电脑
  • 微网站的链接怎么做的wordpress邮件设置方法
  • 网站建设前期准备方案荆州网站设计
  • 360云主机可以建设网站吗专业的餐饮网站建设
  • 查看网站注册信息百度网盟推广步骤
  • 河南整站关键词排名优化软件公司做网站会计凭证怎么做
  • 重庆所有做网站的公司商业网站设计专业
  • 网站上seo怎么做石家庄专业网站设计电话
  • 网站建设傲鸿网站建设公司怎么
  • 印度喜欢用什么框架做外贸网站WordPress文章图片自动圆角
  • 网站建设培训学校微信公众号手机网站
  • 大岭山镇网站建设软件开发的五个基本步骤
  • 建设九九网站旅游网站建设规划书主题
  • 做搜狗手机网站长尾千万别学网络工程
  • 龙泉市建设局门户网站做it的在哪个网站找工作
  • 公积金门户网站建设方案企业网站每年要多少钱
  • 网页设计新建站点伊宁市做网站
  • 建设信用网站的作用全球做的比较好的网站
  • 深圳市做物流网站做网站遇到的问题及解决方法
  • 专门做自由行的网站目前比较火的电商平台有哪些
  • 什么做书籍的网站好嵊州市住房和城乡建设局网站
  • 做馋嘴小栈官方网站长春网站制作专业
  • 浅谈全球五金网电子商务网站建设做照片相册最好的网站