Jeff_M 发表于 2015-8-15 15:18:12

C# - 查找 3 个或更多点之间的测量点?

首先,我必须声明,我的数学技能不是他们所能达到的……我上一节课是1975年的高中三年级,我参加了两个大学微积分课,然后我才决定我所做的事情太离谱了。话虽如此,我希望这个问题能在不太伤我大脑的情况下得到解决。我在StackExchange上找到了一些相关的消息/回复。
http://math.stackexchange.com/questions/366894/closest-point-to-3-or-more-circles
这是一个很好的例子http://math.stackexchange.com/questions/710547/solving-multivariate-polynomial-to-find-closest-point-to-a-3-or-more-circles?lq=1
但我不知道如何应用这些回答
让我解释一下我的目标:测量员定位3-6个或更多的已知点。这些点中的每一个都有到无法访问以进行测量的点的测量距离。我需要找到该点的最佳位置。现在,如果用距离每个点的测量距离绘制一个圆,并且所有圆都相交,那幺这很容易通过使用所有圆的最近交点的平均值来解决。然而,无法保证圆会相交,因为测量通常是用卷尺进行的。我想,这意味着我需要使用上面链接中显示的方程。除了,我不知道如何应用它们,如何使用它们,如何用C#编写它们。有人想启发我吗
这里是一个查找位置所需的示例,除了通常没有给出测量距离的方向:


**** Hidden Message *****

nobody 发表于 2015-8-15 17:52:52


我在这方面取得了一些成功:
http://www.codeproject.com/Articles/30615/Converting-math-equations-to-C
我确实需要在最后稍微整理一下方程,但不是太多。

Jeff_M 发表于 2015-8-15 19:34:47

谢谢,外星人。不知道我需要做什么才能正确复制单词方程式。我对Word选项进行了编辑,但当我复制到剪贴板时,我仍然只得到表达式,而不是MathML。

MickD 发表于 2015-8-15 20:16:45

嗨,杰夫,我不太确定我是否完全理解了目标,但是对于任何几何学的东西,我都喜欢把它分解成三角形。圆形和三角形是基本的构建块,实际上,要在代码中创建这些更高级别的函数,您需要将复杂的公式分解为较低级别的基本向量。
无论如何,如果可以的话,试着把它分解成三角形和基本三角形,它可能不那么优雅,但是一旦你得到较低的部分,你可以将这些部分优化成更复杂的函数,以达到更高层次的等效项,因为你的理解提高了。
hth

Kerry 发表于 2015-8-15 20:45:03

嗨,杰夫,
我需要将问题视为“已知”和“必需”...我的头目前以这种方式工作...
我的数学硕士(在63年)曾经说过:“世界是简单的男孩;一切都简化为圆形和三角形。
英语大师曾经说过不同,但那是另一回事了。

Jeff_M 发表于 2015-8-15 23:02:15

米克,克里——这是我用过的方法,我有一个使用圆和三角形的基本可行版本。只有当已知点的测量距离不等于这些点之间的距离时,它才会下降,所以没有相交的圆。这通常不是问题,但我正在努力解释这100个案例中的1个。明天我会试着用图形来更好地解释。我今天已经研究了大约10个小时,我的大脑需要休息一下。

nobody 发表于 2015-8-16 03:14:38


复制和粘贴是Word的痛苦...不得不添加选项卡,然后更改设置...如果方程式没有很好地放在方程式框中,就很难工作。希望有人能提供更好的解决方案。

MexicanCustard 发表于 2015-8-17 08:05:50

创建圆圈重叠的区域。 如果该区域为空,则它们在确切点处重叠,您可以通过所有圆的最近交点的平均值找到该点。 如果该区域不为空,则可以使用该区域的质量中心作为最近的参考点。

MexicanCustard 发表于 2015-8-17 09:38:27

顺便说一句,今天是基恩的博客。
http://through-the-interface.typepad.com/through_the_interface/2015/08/getting-the-centroid-of-an-autocad-region-using-net.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+typepad%2Fwalmsleyk%2通过接口+%28通过+接口%29

BillZndl 发表于 2015-8-17 09:40:08

杰夫,不知道这是不是你想要的。它需要一组点,并给出一个非常接近所有点中心的点。它在Autolisp中,但它可能会给你一些想法。;3/13/03。
;乔·伯克。
;欧特克论坛。
;。
(defun AveragePts (ptlist)。
(if (null (caddr (car ptlist)))); 测试 2D 点的第一个点。
(setq ptlist (mapcar '(lambda (x) (append x '(0.0))) ptlist))。
)。
(mapcar '(lambda (ord)(/ ord (length ptlist) 1.0))。
(列表。
(apply '+ (mapcar '(lambda (pt) (car pt)) ptlist))。
(apply '+ (mapcar '(lambda (pt) (cadr pt)) ptlist))。
(apply '+ (mapcar '(lambda (pt) (caddr pt)) ptlist))。
)。
)。
)。

页: [1] 2
查看完整版本: C# - 查找 3 个或更多点之间的测量点?