计算不准确的三角形顶点位置对三角形边长的潜在影响
我不知道如何解决以下问题:
我有一个三角形,其中三个已知顶点位置 A、B、C 中的每一个都不准确,这意味着它们每个都可以偏离某些已知半径 rA、rB、rC 到任意方向。
给定这样一个三角形,我想计算在最坏的情况下三角形的两个特定边长的差异(例如边a和边b的长度之间的差)可能会改变多少。这个问题有什么优雅的数学解决方案吗?
我想到的天真的方法是计算所有 360^3 角度组合并测量每种情况的边缘差异,这是相当高的开销。
i'm not sure how to solve the following problem:
i have a triangle with each of the three known vertex positions A,B,C being inaccurate, meaning they can each deviate up to certain known radii rA, rB, rC into arbitrary directions.
given such a triangle, i want to calculate how much the difference of two specific edge lengths (for instance the difference between lengths of edge a and edge b) of the triangle may change in the worst case. is there any elegant mathematical solution to this problem?
the naive way i thought of is calculating all 360^3 angle combinations and measuring the edge differences for each case, which is a rather high overhead.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
下图说明了解决方案:
MinMaxEdgeDiff.png http://www.freeimagehosting.net/uploads/ b0f0f84635.png
一些注意点:
最大和最小的差异是:
<前><代码>d1 = |BC1| - |AC1| = (|B->C1| + _rB_) - (|A->C1| - _rA_)
= |B->C1| - |A->C1| + (_rA_ + _rB_)
d2 = |BC2| - |AC2| = (|B->C2| - _rB_) - (|A->C2| + _rA_)
= |B->C2| - |A->C2| - (_rA_ + _rB_)
因此最大和最小差异之间的变化是:
最后一点暗示可以通过从中心 A 和 B 求解,然后将半径相加来找到解rA 和rB。因此,C1 和 C2 的位置可以通过仅改变围绕 C 的边界圆的单个角度来迭代地发现(并且是单独的,因为它们彼此独立)。
我怀疑有一个解析解。这是一个有趣的问题,但还不足以让我对这个特定的任务猛烈抨击。对不起。 ;-)
The following image illustrates the solution:
MinMaxEdgeDiff.png http://www.freeimagehosting.net/uploads/b0f0f84635.png
Some points to note:
The largest and smallest differences are:
Thus the variation between the largest and smallest differences is:
The last point hints that the solution can be found by solving from the centers A and B, and then adding the radii rA and rB. Thus the locations of C1 and C2 may be discovered iteratively (and separately, since they are independent of each other) by varying just a single angle around C's bounding circle.
I suspect that there's an analytical solution. It's an interesting problem, but not enough for me to bash my head against this particular task. Sorry. ;-)