坐标系的生成

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)的Id
 int knownPointId = 2; // 假设已知点的Id是2
 Point 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.");
 }

本文作者:孤沉

本文链接:https://www.cnblogs.com/guchen33/p/18424727

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   孤沉  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开