坐标系的生成

news/2024/9/22 0:55:08

1、包装一下Point类,增加Id

public class PointWithId
{public int Id { get; set; }public Point Coordinate { get; set; }public PointWithId(int id, Point coordinate){Id = id;Coordinate = coordinate;}
}

2、获取第一象限的坐标
我们使用Linq生成(0,0)到(4,4)的25个坐标

// 使用Enumerable.Range和LINQ生成带有Id的PointWithId对象列表
List<PointWithId> originalPoints = Enumerable.Range(1, 25) // Id从1到9.Select((id, index) => new PointWithId(id, new Point(index / 5, index % 5))).ToList();

3、同理可以获取其他3个象限的坐标

 List<PointWithId> secondQuadrantPoints = originalPoints.Select(p => new PointWithId(p.Id, new Point(-p.Coordinate.X, p.Coordinate.Y))).ToList();List<PointWithId> thirdQuadrantPoints = originalPoints.Select(p => new PointWithId(p.Id, new Point(-p.Coordinate.X, -p.Coordinate.Y))).ToList();List<PointWithId> fourthQuadrantPoints = originalPoints.Select(p => new PointWithId(p.Id, new Point(p.Coordinate.X, -p.Coordinate.Y))).ToList();

4、对于标定板上的坐标,我们需要填充真值

 // 已知点(17, 4)的Idint knownPointId = 2; // 假设已知点的Id是2Point knownPointNewPosition = new Point(17, 4);// 找到已知点在原始列表中的对象PointWithId knownPoint = originalPoints.Find(p => p.Id == knownPointId);if (knownPoint != null){// 计算偏移量var deltaX = knownPointNewPosition.X - knownPoint.Coordinate.X;var deltaY = knownPointNewPosition.Y - knownPoint.Coordinate.Y;// 使用偏移量计算其他点的新位置foreach (PointWithId point in originalPoints){Point newPosition = new Point(point.Coordinate.X + deltaX,point.Coordinate.Y + deltaY);point.Coordinate = newPosition; // 更新点的位置}// 打印新位置foreach (PointWithId point in originalPoints){Console.WriteLine($"Id: {point.Id}, Original: ({point.Coordinate.X}, {point.Coordinate.Y})");}}else{Console.WriteLine("Known point not found in the original list.");}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

《MySQL 基础篇》六:表和数据的管理

MySQL 表的创建和管理,以及数据的增删改操作。Author: ACatSmiling Since: 2024-09-20创建和管理表 基础知识 一条数据存储的过程 存储数据是处理数据的第一步。只有正确地把数据存储起来,才能进行有效的处理和分析。否则,只能是一团乱麻,无从下手。 那么,怎样才能把用户各…

《MySQL 基础篇》七:数据类型

MySQL 中的数据类型。Author: ACatSmiling Since: 2024-09-20MySQL 中的数据类型数据 数据类型整数类型 TINYINT、SMALLINT、MEDIUMINT、INT(或 INTEGER)、BIGINT浮点类型 FLOAT、DOUBLE定点数类型 DECIMAL位类型 BIT日期与时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP文…

《MySQL 基础篇》八:约束和视图

MySQL 的约束和视图。Author: ACatSmiling Since: 2024-09-20约束 常见的数据库对象对象 描述表(TABLE) 表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录数据字典 即系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应…

《MySQL 基础篇》四:查询操作

MySQL 多表查询和子查询的语法。Author: ACatSmiling Since: 2024-09-19多表查询 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能…

《MySQL 基础篇》三:运算符

MySQL 中运算符的分类和使用。Author: ACatSmiling Since: 2024-09-18算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加 (+)、减 (-)、乘 (*)、除 (/) 和取模 (%)运算。运算符 名称 作用 示例+ 加法运算符 计算两个值或表…

Linux强制修改用户密码

1.在开机过程中,快速按下键盘上的方向键↑和↓。目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停。使用↑和↓将选择行设置为第一行(背景高亮即为选中),按下键盘上的e,进入编辑模式2.将光标一直移动到 rhgb quiet 后面,将其(rhgb quiet) 替换…

MySQL 系列一:基础概念

MySQL 概述。Author: ACatSmilin Since: 2024-09-18数据库与数据库管理系统 数据库的相关概念 DB:Database,数据库,即存储数据的 "仓库",其本质是一个文件系统。它保存了一系列有组织的数据。 DBMS:Database Management System,数据库管理系统,是一种操纵和管…

学习高校课程-软件工程-流程模型(ch4)

4.1 PRESCRIPTIVE PROCESS MODELS A process model provides a specific roadmap for software engineering work. 过程模型为软件工程工作提供了特定的路线图 The Waterfall Model 瀑布模型 sometimes called the classic life cycle ,suggests a systematic, sequential appr…