C#凹多边形求内心

这篇具有很好参考价值的文章主要介绍了C#凹多边形求内心。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在计算凹多边形内心时,一种常见的方法是使用三角剖分和重心法。您可以按照以下步骤进行:

  1. 将凹多边形进行三角剖分,得到一系列三角形。
  2. 对每个三角形计算其重心,重心是三个顶点的平均值。
  3. 将所有三角形的重心进行平均,得到凹多边形的内心。

以下是一个简单的示例代码,演示了如何在C#中实现这一过程:文章来源地址https://www.toymoban.com/news/detail-822478.html

using System;
using System.Collections.Generic;
using System.Drawing;

class Program
{
    static void Main()
    {
        List<PointF> concavePolygon = new List<PointF>
        {
            new PointF(0, 0),
            new PointF(5, 0),
            new PointF(3, 3),
            new PointF(1, 5),
            new PointF(0, 3)
        };

        PointF incenter = CalculateIncenter(concavePolygon);
        
        Console.WriteLine($"Incenter: ({incenter.X}, {incenter.Y})");
    }

    static PointF CalculateIncenter(List<PointF> polygon)
    {
        PointF incenter = new PointF(0, 0);
        double totalArea = 0;

        for (int i = 1; i < polygon.Count - 1; i++)
        {
            PointF p1 = polygon[0];
            PointF p2 = polygon[i];
            PointF p3 = polygon[i + 1];

            double area = CalculateTriangleArea(p1, p2, p3);
            totalArea += area;

            incenter.X += (float)((p1.X + p2.X + p3.X) / 3 * area);
            incenter.Y += (float)((p1.Y + p2.Y + p3.Y) / 3 * area);
        }

        incenter.X /= (float)totalArea;
        incenter.Y /= (float)totalArea;

        return incenter;
    }

    static double CalculateTriangleArea(PointF p1, PointF p2, PointF p3)
    {
        return 0.5 * Math.Abs((p1.X * (p2.Y - p3.Y) + p2.X * (p3.Y - p1.Y) + p3.X * (p1.Y - p2.Y)));
    }
}

到了这里,关于C#凹多边形求内心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 3DS MAX三维建模平面基础与初级多边形(可编辑多边形的讲解)

    3DS MAX三维建模平面基础与初级多边形(可编辑多边形的讲解)

            3DS MAX三维建模平面基础与初级多边形(可编辑多边形的讲解)         欢迎大家来学习3DS MAX教程,在这里先说一下研究好3ds Max一定要一边看教程一边要自己学的操作才能更快的进步,预祝大家学习顺利。         这篇是第四篇关于3ds Max的文章了,基于上一

    2024年04月12日
    浏览(48)
  • 计算两个多边形的交集

    计算两个多边形的交集

    已知两个多边形Polygon1和Polygon2,分别由点集C1={P1,P2,...,Pm}和C2={Q1,Q2,...,Qn}表示,求这两个多边形的交集。 两个多边形相交后,其顶点要么是两个多边形边的交点,要么是在多边形内部的点。 计算两个多边形每条边之间的交点。 计算包含在多边形内部的点。 将交点和多边形内

    2024年02月12日
    浏览(49)
  • 多边形边的插值

    多边形边的插值

    算法描述及提问: 给定一个最小长度,对多边形的每一条边不断的对半插值,使得插值后的每一条边都要不大于最小长度。 测试ChatGPT - 中文版 VSCode插件。 显然是错误的。 正确的结果: 使用ChatGPT-中文版 VSCode,基本可以写出一个简单的算法,但是正确与否还需要个人Debug及

    2024年02月12日
    浏览(44)
  • 使用OpenCV的函数polylines()绘制多条相连的线段和多边形;使用函数fillPoly()绘制带填充效果的多边形

    使用OpenCV的函数polylines()绘制多条相连的线段和多边形;使用函数fillPoly()绘制带填充效果的多边形

    函数polylines()可用来根据点集绘制多条相连的线段,也可用来绘制多边形。 函数polylines()有两种原型,这里只向大家介绍比较常用的那种原型。 函数polylines()的C++原型如下: 函数polylines()的Python原型如下: 函数polylines()的参数意义如下: img—绘制的多条相连线段或多边形所在

    2024年02月04日
    浏览(47)
  • CAD泰森多边形框架3D插件

    CAD泰森多边形框架3D插件

    CAD泰森多边形框架3D插件可用于在AutoCAD软件内生成三维Voronoi框架结构实体模型,适用于多孔Voronoi科研论文渲染绘图、Voronoi框架有限元建模、Voronoi空间结构优化等方面的应用。 插件可设置生成的几何尺寸、晶格尺寸及边框直径等信息。 插件可同时生成实体框架及线条框架两

    2024年02月11日
    浏览(43)
  • 利用fabric绘画矩形和多边形

    利用fabric绘画矩形和多边形

    需求在一张图片上标注矩形和多边形,支持回显; fabric版本:4.6.0; Fabric.js 是一个功能强大且操作简单的 Javascript HTML5 canvas 工具库。 官方文档 参考链接 组件代码drawer.vue createUuid 是为了让每一个图形有自己的id;方便用于获取用户点击的那个图形等操作; defaultRectStyle、d

    2024年02月08日
    浏览(50)
  • Openlayers实战:绘制点、线、圆、多边形

    Openlayers实战:绘制点、线、圆、多边形

    Openlayers地图中,绘制图形是非常重要的一个功能。Openlayers主要使用draw类来绘制图形,在实际项目中经常会绘制点、线、多边形、矩形等。 下面的示例是绘制点、线、圆形、多边形。

    2024年02月12日
    浏览(12)
  • Elasticsearch不规则多边形区域查询

    定义ES连接类 其中self.es = Elasticsearch(hosts=self.host.split(‘,’), port=self.port)中,hosts参数接收的是一个字符串列表,例如[‘192.168.16.96’,‘192.168.16.97’,‘192.168.16.98’]等,端口是9200 创建一个带有geo_shape字段类型的索引。(仅执行一次) 插入一条数据以后 可以利用 来检查location字

    2024年02月12日
    浏览(11)
  • cesium学习记录08-鼠标绘制多边形

    cesium学习记录08-鼠标绘制多边形

    上一篇学习了创建实体的一些基础知识,但有时还需要我们使用鼠标进行手动绘制,这一篇就来进行鼠标绘制实体的实现(点,线,矩形,圆,多边形)。 (这里需要掌握三个知识点,一是上一篇中的创建实体、二是鼠标事件、三是回调函数) 既然是鼠标绘制,自然离不开

    2024年02月12日
    浏览(15)
  • opencv 判断点在多边形内外

    opencv 判断点在多边形内外

            基于Python 和 OpenCV 画出多边形,以及判断某个点是不是在多边形内。         函数定义:cv2.pointPolygonTest(contour, pt, measureDist)         函数功能:找到图像里的点和轮廓之间的最短距离. 它返回的距离当点在轮廓外的时候是负值,当点在轮廓内是正值,如果

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包