C#算法(15)—求四边形的外接矩形

15 篇文章 6 订阅 ¥99.90 ¥99.00

前言

在上位机软件开发的过程中,我们经常需要一个四边形的外接矩形,这个外接矩形通常有两种一种是正外接矩形,一种是最小面积的最小外接矩形,最常见的应用是我们需要从一个四边形中截取一部分图像,然后对这个截取出来的图像进行处理,下面分别介绍这两种外接矩形的求法

1、正外接矩形的求法

下面的函数是一个求取正外接矩形的方法,该函数传入的对象是一点的坐标集合,其原理是求出x、y的最小、最大坐标,然后利用这些坐标求出正外接矩形坐标

  /// 求正外接矩形
        /// </summary>
        /// <param name="points"></param>
        /// <returns></returns>
        public static Rectangle GetBoundRec(Point[
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的C#矩形批量码垛算法代码示例: ```csharp using System; using System.Collections.Generic; using System.Linq; namespace RectPacking { class Rect { public int Width { get; set; } public int Height { get; set; } public Rect(int width, int height) { Width = width; Height = height; } } class Bin { public int Width { get; set; } public int Height { get; set; } public List<Rect> Rects { get; set; } public Bin(int width, int height) { Width = width; Height = height; Rects = new List<Rect>(); } public bool AddRect(Rect rect) { if (Width < rect.Width || Height < rect.Height) return false; Rects.Add(rect); Width -= rect.Width; Height -= rect.Height; return true; } } class Program { static void Main(string[] args) { List<Rect> rects = new List<Rect>() { new Rect(100, 50), new Rect(50, 40), new Rect(70, 60), new Rect(80, 70), new Rect(60, 50), new Rect(90, 80) }; List<Bin> bins = new List<Bin>() { new Bin(200, 200), new Bin(300, 300), new Bin(400, 400) }; foreach (var bin in bins) { foreach (var rect in rects.ToList()) { if (bin.AddRect(rect)) rects.Remove(rect); } } Console.WriteLine($"Total bins used: {bins.Count}"); Console.ReadLine(); } } } ``` 该示例中,Rect类代表矩形,Bin类代表容器。在Main方法中,我们创建了一个包含多个矩形的列表以及多个容器的列表。我们逐个遍历容器列表,将每个矩形添加到第一个适合它的容器中。如果没有容器适合该矩形,则跳过该矩形。最后,我们输出使用的总容器数。 请注意,这只是一个基本示例,实际的矩形批量码垛算法可能需要更复杂的逻辑和算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c#上位机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值