- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
foreach (Tuple<Point, Point> pair in pointsCollection)
{
var points = new List<Point>()
{
pair.Value1,
pair.Value2
};
}
在此 foreach 中,我希望能够确定哪一对点在该对中每个点的坐标之间具有最重要的长度。
因此,假设点由以下对组成:
(1) var points = new List<Point>()
{
new Point(0,100),
new Point(100,100)
};
(2) var points = new List<Point>()
{
new Point(150,100),
new Point(200,100)
};
所以我有两组对,如上所述。他们都将绘制一条水平线。我很想知道找到它们之间距离最大的一对点的最佳方法是什么,无论是垂直的还是水平的。在上面的两个例子中,第一对点在 X 坐标之间有 100 的差异,因此这将是差异最大的点。但是,如果我有一组点对,其中一些点将绘制一条垂直线,一些点将绘制一条水平线,那么从垂直或水平差异的点集中检索该对的最佳方法是什么, 是集合中所有点中最大的吗?
谢谢!
克里斯
最佳答案
使用 OrderBy 根据您的条件创建排序,然后选择第一个。在这种情况下,按水平和垂直分量之间的最大绝对差值降序排列。
编辑:实际上,我认为您应该对元组本身执行此操作,对吗?我将努力使示例适应这一点。
首先,让我们为 Tuple<Point,Point>
添加一个扩展名计算它的长度。
public static class TupleExtensions
{
public static double Length( this Tuple<Point,Point> tuple )
{
var first = tuple.Item1;
var second = tuple.Item2;
double deltaX = first.X - second.X;
double deltaY = first.y - second.Y;
return Math.Sqrt( deltaX * deltaX + deltaY * deltaY );
}
}
现在我们可以按长度对元组进行排序
var max = pointCollection.OrderByDescending( t => t.Length() )
.FirstOrDefault();
注意:仅迭代集合并跟踪最大值比使用 LINQ 排序/选择更快。
Tuple<Point,Point> max = null;
foreach (var tuple in pointCollection)
{
if (max == null || tuple.Length() > max.Length())
{
max = tuple;
}
}
显然,如果您在多个地方使用它,可以将其重构为 IEnumerable 扩展。
关于c# - Linq 找到最长长度的一对点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2554367/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!