C#矩阵XY排序

矩阵XY快速排序

using MyVision.Script.Method;public class MyScript : ScriptMethods
{//struct MOTIONPOSXY_S{public double Pos_x;public double Pos_y;};//脚本执行该方法public bool Process(){//@try{//脚本代码写在下方 List<double> PointX = GetDoubleList("斑点分析.X");List<double> PointY = GetDoubleList("斑点分析.Y");List<MOTIONPOSXY_S> PointList = new List<MOTIONPOSXY_S>();for (int i = 0; i < PointX.Count(); ++i){MOTIONPOSXY_S tmp;tmp.Pos_x = PointX[i];tmp.Pos_y = PointY[i];PointList.Add(tmp);}//QuickSort(ref PointList, 0, PointX.Count() - 1);for (int i = 0; i < PointX.Count(); ++i){PointX[i] = PointList[i].Pos_x;PointY[i] = PointList[i].Pos_y;//LogWarn("" + i + ":" + PointList[i].Pos_x + " " + PointList[i].Pos_y+ "", "");}//List<double> MPointX = new List<double>();List<double> MPointY = new List<double>();for (int i = 0; i < PointX.Count(); ++i){MPointX.Add(PointList[i].Pos_x);MPointY.Add(PointList[i].Pos_y);}//SetDoubleList("数组定义.PointX", MPointX);SetDoubleList("数组定义.PointY", MPointY);//return true;}catch (Exception ex){LogError(GetLogPre() + ex.ToString());return false;}}int Partition(ref List<MOTIONPOSXY_S> list, int low, int high){MOTIONPOSXY_S pbase = list[low];while (low < high){while (low < high && CompareMotion_PosXy(pbase, list[high])){--high;}if (low < high){list[low] = list[high];}while (low < high && CompareMotion_PosXy(list[low], pbase)){++low;}if (low < high){list[high] = list[low];}}list[low] = pbase;return low;}void QuickSort(ref List<MOTIONPOSXY_S> list, int low, int high){if (low < high){int pbase = Partition(ref list, low, high);QuickSort(ref list, low, pbase - 1);QuickSort(ref list, pbase + 1, high);}}//两个坐标比较大小const Test &v1, const Test &v2bool CompareMotion_PosXy(MOTIONPOSXY_S p1, MOTIONPOSXY_S p2){double difference = p1.Pos_y - p2.Pos_y;difference = (difference >= 0 ? difference : (-difference));if (p1.Pos_y < p2.Pos_y){if (difference < 100) return (p1.Pos_x < p2.Pos_x);else return true;}else if (p1.Pos_y == p2.Pos_y){return (p1.Pos_x < p2.Pos_x);}else{if (difference < 100) return (p1.Pos_x < p2.Pos_x);else return false;}}
}

九点标定从中间往外排序

using MyVision.Script.Method;public class MyScript : ScriptMethods
{//struct MOTIONPOSXY_S{public double Pos_x;public double Pos_y;public double Pos_r;};//脚本执行该方法public bool Process(){//@try{//脚本代码写在下方 List<double> PointX = GetDoubleList("斑点分析.X");List<double> PointY = GetDoubleList("斑点分析.Y");List<double> PointR = GetDoubleList("斑点分析.最大内直径");List<MOTIONPOSXY_S> PointList = new List<MOTIONPOSXY_S>();for (int i = 0; i < PointX.Count(); ++i){MOTIONPOSXY_S tmp;tmp.Pos_x = PointX[i];tmp.Pos_y = PointY[i];tmp.Pos_r = PointR[i]/2;PointList.Add(tmp);}//QuickSort(ref PointList, 0, PointX.Count() - 1);for (int i = 0; i < PointX.Count(); ++i){PointX[i] = PointList[i].Pos_x;PointY[i] = PointList[i].Pos_y;PointR[i] = PointList[i].Pos_r;LogWarn("" + i + ":" + PointList[i].Pos_x + " " + PointList[i].Pos_y + PointList[i].Pos_r + "", "");}//List<double> MPointX = new List<double>();List<double> MPointY = new List<double>();List<double> MPointR = new List<double>();//MPointX.Add(PointX[4]); MPointX.Add(PointX[5]);MPointX.Add(PointX[2]); MPointX.Add(PointX[1]); MPointX.Add(PointX[0]);MPointX.Add(PointX[3]);MPointX.Add(PointX[6]); MPointX.Add(PointX[7]); MPointX.Add(PointX[8]);//MPointY.Add(PointY[4]); MPointY.Add(PointY[5]);MPointY.Add(PointY[2]); MPointY.Add(PointY[1]); MPointY.Add(PointY[0]);MPointY.Add(PointY[3]);MPointY.Add(PointY[6]); MPointY.Add(PointY[7]); MPointY.Add(PointY[8]);//MPointR.Add(PointR[4]); MPointR.Add(PointR[5]);MPointR.Add(PointR[2]); MPointR.Add(PointR[1]); MPointR.Add(PointR[0]);MPointR.Add(PointR[3]);MPointR.Add(PointR[6]); MPointR.Add(PointR[7]); MPointR.Add(PointR[8]);//SetDoubleList("数组定义.Value0", MPointX);SetDoubleList("数组定义.Value1", MPointY);SetDoubleList("数组定义.Value2", MPointR);//return true;}catch (Exception ex){LogError(GetLogPre() + ex.ToString());return false;}}int Partition(ref List<MOTIONPOSXY_S> list, int low, int high){MOTIONPOSXY_S pbase = list[low];while (low < high){while (low < high && CompareMotion_PosXy(pbase, list[high])){--high;}if (low < high){list[low] = list[high];}while (low < high && CompareMotion_PosXy(list[low], pbase)){++low;}if (low < high){list[high] = list[low];}}list[low] = pbase;return low;}void QuickSort(ref List<MOTIONPOSXY_S> list, int low, int high){if (low < high){int pbase = Partition(ref list, low, high);QuickSort(ref list, low, pbase - 1);QuickSort(ref list, pbase + 1, high);}}//两个坐标比较大小const Test &v1, const Test &v2bool CompareMotion_PosXy(MOTIONPOSXY_S p1, MOTIONPOSXY_S p2){double difference = p1.Pos_y - p2.Pos_y;difference = (difference >= 0 ? difference : (-difference));if (p1.Pos_y < p2.Pos_y){if (difference < 100) return (p1.Pos_x < p2.Pos_x);else return true;}else if (p1.Pos_y == p2.Pos_y){return (p1.Pos_x < p2.Pos_x);}else{if (difference < 100) return (p1.Pos_x < p2.Pos_x);else return false;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tensor-动手学深度学习-李沐_笔记

介绍 Tensor&#xff0c;又称"张量"&#xff0c;其实就是n维度数组。不同维度的Tensor示意图如下&#xff1a; 关于Tensor.reshape reshape函数可以处理总元素个数相同的任何新形状&#xff0c;【3&#xff0c;2&#xff0c;5】->【3&#xff0c;10】->【5&a…

[系统] 电脑突然变卡 / 电脑突然** / 各种突发情况解决思路

今天来公司办公&#xff0c;开机之后发现电脑出现各种问题&#xff0c;死机、卡顿、点什么都加载&#xff0c;甚至开一个文件夹要1分钟才能打开&#xff0c;花了2个小时才解决&#xff0c;走了很多弯路&#xff0c;其实早点想通&#xff0c;5分钟就能解决问题&#xff0c;所以打…

本地部署 Stable Diffusion(Mac 系统)

在 Mac 系统本地部署 Stable Diffusion 与在 Windows 系统下本地部署的方法本质上是差不多的。 一、安装 Homebrew Homebrew 是一个流行的 macOS &#xff08;或 Linux&#xff09;软件包管理器&#xff0c;用于自动下载、编译和安装各种命令行工具和应用程序。有关说明请访问官…

ICT产教融合创新实训基地物联网实训室建设方案

一、概述 1.1物联网定义 物联网工程&#xff08;Internet of Things Engineering&#xff09;是一种以信息技术&#xff08;IT&#xff09;来改善实体世界中人们生活方式的新兴学科&#xff0c;它利用互联网技术为我们的日常生活活动提供服务和增益&#xff0c;从而让各种智能…

什么是Sui Kiosk,它可以做什么,如何赋能创作者?

创作者和IP持有者需要一些工具帮助他们在区块链上实现其商业模式。Sui Kiosk作为Sui上的一种原语可以满足这种需求&#xff0c;为创作者提供动态选项&#xff0c;使他们能够在任何交易场景中设置完成交易的条件。 本文将向您介绍为什么要在SuiFrens中使用Sui Kiosk&#xff0c…

0基础学习VR全景平台篇 第90篇:智慧眼-数据统计

【数据统计】是按不同条件去统计整个智慧眼项目中的热点&#xff0c;共包含四大块&#xff0c;分别是数据统计、分类热点、待审核、回收站&#xff0c;下面我们来逐一进行介绍。 1、数据统计 ① 可以按所属分类、场景分组、所属场景、热点类型以及输入热点名去筛选对应的热点&…

Node.js 的 Buffer 是什么?一站式了解指南

在 Node.js 中&#xff0c;Buffer 是一种用于处理二进制数据的机制。它允许你在不经过 JavaScript 垃圾回收机制的情况下直接操作原始内存&#xff0c;从而更高效地处理数据&#xff0c;特别是在处理网络流、文件系统操作和其他与 I/O 相关的任务时。Buffer 是一个全局对象&…

【80天学习完《深入理解计算机系统》】第十天 3.3 条件码寄存器【CF ZF SF OF】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

利用敏捷开发工具实现敏捷项目管理的实践经验分享

Scrum中非常强调公开、透明、直接有效的沟通&#xff0c;这也是“可视化的管理工具”在敏捷开发中如此重要的原因之一。通过“可视化的管理工具”让所有人直观的看到需求&#xff0c;故事&#xff0c;任务之间的流转状态&#xff0c;可以使团队成员更加快速适应敏捷开发流程。 …

Python科研绘图--Task03

目录 图类型 关系类型图 散点图的例子 数据分布型图 rugplot例子 分类数据型图 ​编辑回归模型分析型图 多子图网格型图 FacetGrid() 函数 PairGrid() 函数 绘图风格、颜色主题和绘图元素缩放比例 绘图风格 颜色主题 绘图元素缩放比列 图类型 关系类型图 数据集变量…

浅析 GlusterFS 与 JuiceFS 的架构异同

在进行分布式文件存储解决方案的选型时&#xff0c;GlusterFS 无疑是一个不可忽视的考虑对象。作为一款开源的软件定义分布式存储解决方案&#xff0c;GlusterFS 能够在单个集群中支持高达 PiB 级别的数据存储。自从首次发布以来&#xff0c;已经有超过十年的发展历程。目前&am…

HAProxy+nginx搭建负载均衡群集

目录 一、常见的Web集群调度器 二、HAProxy群集介绍 1、Haproxy的特性 : 2、Haproxy常用的调度算法 ① 轮询调度&#xff08;Round Robin&#xff09; ② 最小连接数&#xff08;Least Connections&#xff09; ③ 基于来源访问调度算法&#xff08;Source Hashing&am…

基于JAYA算法优化的BP神经网络(预测应用) - 附代码

基于JAYA算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于JAYA算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.JAYA优化BP神经网络2.1 BP神经网络参数设置2.2 JAYA算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…

go语言学习之有关变量的知识

文章目录 变量的学习1.变量的使用步骤2.变量的注意事项3.变量使用的三种方式&#xff1a;4.程序中 号的使用5.变量的数据类型1&#xff09;int数据类型2&#xff09;小数类型浮点型3&#xff09;**字符类型**4&#xff09;**字符串&#xff08;String&#xff09;类型**5&…

行业追踪,2023-08-25

自动复盘 2023-08-25 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

GE 8920-PS-DC安全模块

安全控制&#xff1a; 这个安全模块通常用于实现工业自动化系统中的安全控制功能。它可以监测各种安全参数&#xff0c;如机器运动、温度、压力等&#xff0c;以确保系统在安全范围内运行。 PLC兼容性&#xff1a; 通常&#xff0c;这种安全模块可以与可编程逻辑控制器&#x…

Java 程序打印 OpenCV 的版本

我们可以使用 Java 程序来使用 OpenCV。 OpenCV 的使用需要动态库的加载才可以。 加载动态库 到 OpenCV 的官方网站上下载最新的发布版本。 Windows 下载的是一个可执行文件&#xff0c;没关系&#xff0c;这个可执行文件是一个自解压程序。 当你运行以后会提示你进行解压。…

sql数据库怎么备份,sql 实时备份

在当今互联网时代&#xff0c;数据已经成为企业的核心资产。然而&#xff0c;数据的安全性和完整性面临硬件问题、软件故障、人工操作错误等各种威胁。为了保证数据的安全&#xff0c;实时备份已经成为公司必须采取的重要措施之一。下面我们就重点介绍SQL实时备份的重要实施方法…

【翻译】RISC-V指令集手册第Ⅱ卷:特权体系结构

第三章 机器级ISA&#xff0c;版本1.11 本章描述RISC-V系统中最高权限的机器模式(M-mode)下的机器级操作。M模式用于对硬件平台的低级访问&#xff0c;是复位时进入的第一个模式。M模式还可以用于实现在硬件中直接实现过于困难或代价过高的特性。RISC-V机器级ISA包含一个公共核…