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

做金融的看哪些网站微信软文推广怎么做

做金融的看哪些网站,微信软文推广怎么做,中国营销协会官网,广东购物网站建设报价凹多边形的概念 凹多边形是指至少有一个内角大于180度的多边形。与之相对,凸多边形的所有内角均小于或等于180度,且任意两点之间的连线都完全位于多边形内部。将凹多边形分解成若干个凸多边形是计算几何中的一个重要问题。 分解原理 将凹多边形分解为凸…

凹多边形的概念

        凹多边形是指至少有一个内角大于180度的多边形。与之相对,凸多边形的所有内角均小于或等于180度,且任意两点之间的连线都完全位于多边形内部。将凹多边形分解成若干个凸多边形是计算几何中的一个重要问题。

分解原理

        将凹多边形分解为凸多边形的基本原理是通过绘制对角线来消除凹角。对角线是连接多边形两个非相邻顶点的线段。通过适当选择对角线,可以将凹多边形分解为多个三角形或其他凸多边形。

算法步骤

以下是将凹多边形分解为若干个凸多边形的基本步骤:

  1. 输入多边形的顶点:获取凹多边形的顶点列表。

  2. 识别凹角:遍历多边形的所有顶点,识别出凹角。

  3. 绘制对角线:从凹角的两个相邻顶点绘制对角线,形成新的边界。

  4. 更新多边形:将原多边形更新为新的多边形,重复以上步骤,直到所有的部分都是凸的。

  5. 输出结果:返回分解后的凸多边形列表。

代码示例

        下面是一个简单的代码示例,演示如何将凹多边形分解为若干个凸多边形。


class  Point2d  
{  public double X;  public double Y;  public Point2d(double x, double y)  {  X = x;  Y = y;  }  
}  class  MyConcavePolygonDecomposer  
{  // 分解凹多边形的方法  public static List<List<Point2d>> DecomposeConcavePolygon(List<Point2d> polygon)  {  List<List<Point2d>> convexPolygons = new List<List<Point2d>>();  // 继续分解直到没有凹角  while (HasConcaveAngle(polygon))  {  List<Point2d> convexPolygon = new List<Point2d>();  // 选择一个凹角并绘制对角线  for (int i = 0; i < polygon.Count; i++)  {  if (IsConcave(polygon, i))  {  // 找到凹角的相邻顶点  int prevIndex = (i - 1 + polygon.Count) % polygon.Count;  int nextIndex = (i + 1) % polygon.Count;  // 绘制对角线并更新多边形  convexPolygon.Add(polygon[prevIndex]);  convexPolygon.Add(polygon[i]);  convexPolygon.Add(polygon[nextIndex]);  // 更新原多边形  polygon.RemoveAt(i);  break; // 重新开始外层循环  }  }  convexPolygons.Add(convexPolygon);  }  // 添加剩余的凸多边形  if (polygon.Count > 0)  {  convexPolygons.Add(polygon);  }  return convexPolygons;  }  // 检查多边形是否有凹角  public static bool HasConcaveAngle(List<Point2d> polygon)  {  for (int i = 0; i < polygon.Count; i++)  {  if (IsConcave(polygon, i))  {  return true;  }  }  return false;  }  // 判断给定顶点是否为凹角  public static bool IsConcave(List<Point2d> polygon, int index)  {  int prevIndex = (index - 1 + polygon.Count) % polygon.Count;  int nextIndex = (index + 1) % polygon.Count;  // 计算向量  Point2d v1 = new Point2d(polygon[nextIndex].X - polygon[index].X, polygon[nextIndex].Y - polygon[index].Y);  Point2d v2 = new Point2d(polygon[prevIndex].X - polygon[index].X, polygon[prevIndex].Y - polygon[index].Y);  // 计算叉积  float crossProduct = v1.X * v2.Y - v1.Y * v2.X;  // 如果叉积小于0,则为凹角  return crossProduct < 0;  }  
}class Program  
{      // 主方法  public static void Main(string[] args)  {  // 定义一个凹多边形的顶点  List<Point2d> concavePolygon = new List<Point2d>  {  new Point2d(1, 1),  new Point2d(4, 1),  new Point2d(4, 3),  new Point2d(2, 2),  new Point2d(1, 4)  };  // 分解凹多边形  List<List<Point2d>> convexPolygons = MyConcavePolygonDecomposer.DecomposeConcavePolygon(concavePolygon);  // 输出结果  Console.WriteLine("分解后的凸多边形:");  foreach (var polygon in convexPolygons)  {  Console.WriteLine("凸多边形:");  foreach (var point in polygon)  {  Console.WriteLine($"({point.X}, {point.Y})");  }  }  }  
}

代码步骤说明

  1. 定义点类:创建一个 Point2d类来表示多边形的顶点。

  2. 主方法:在 Main 方法中定义一个凹多边形的顶点列表,并调用 DecomposeConcavePolygon 方法进行分解。

  3. 分解方法:DecomposeConcavePolygon 方法实现了凹多边形的分解逻辑,使用循环检查是否存在凹角,并在找到凹角后绘制对角线。

  4. 检查凹角:HasConcaveAngle 方法检查多边形是否有凹角,IsConcave 方法判断给定顶点是否为凹角。

  5. 输出结果:最后输出分解后的凸多边形的顶点。

总结

        通过上述步骤和代码示例,我们可以将凹多边形分解为若干个凸多边形。该方法简单易懂,适合初学者理解凹多边形的分解过程。

  更多学习内容,可关注公众号:

 

以上内容为个人测试过程的记录,供大家参考。

内容如有错欢迎批评指正,谢谢!!!!

http://www.wangmingla.cn/news/160454.html

相关文章:

  • 网站广告位360优化大师安卓手机版下载安装
  • seo推广编辑招聘关键词优化排名首页
  • 做网站最下面写什么在线seo优化工具
  • 建设小辣猫的网站关键词爱站网
  • 8网站建设做网站seo整站优化新站快速排名
  • 郑州企业网站优化app拉新平台哪个好佣金高
  • 有哪些游戏网站qq空间秒赞秒评网站推广
  • 有没有做语文题的网站高端网站建设制作
  • 沈阳个人建站模板b2b外链
  • 有哪些推广平台和渠道android优化大师
  • 酒店网站html网站创建免费用户
  • 凡科怎样免费做网站seo技巧是什么意思
  • 网站 案例做个网站需要多少钱
  • 手把手教网站建设网络营销的好处和优势
  • 至少保存十个以上域名网站百度登录个人中心
  • 温州专业营销网站建设如何把网站推广
  • 网站制作百度资源宣传推广的形式有哪些
  • 网站建设公司无锡百度网盘下载
  • 现在企业做网站用什么软件竞价开户推广
  • 美女网站做国外广告怎么样中国企业网官方网站
  • 做优化网站建设排名优化公司电话
  • 网站建设和网站推广百度com百度一下你
  • 山东网站建设网站广州各区进一步强化
  • 河北提供网站制作公司电话做百度推广代运营有用吗
  • 宁波专业的网站建设百度域名注册
  • 怎样制作购物网站 微信转发什么是搜索引擎营销
  • 免费好用的wordpress主题优化推荐
  • 免费下载的网站中国软文网官网
  • 网站专题建设营销模式有几种
  • 书店商城网站建设方案百度经验官网首页