数学问题:根据外角半径/厚度确定内边框的角半径

10

这是一个数学/几何问题,针对数学高手(不是我的强项)。这是针对WPF的,但应该足够通用,可以解决:

我有两个嵌入的Border元素,外部元素具有特定的角半径R和边框厚度T。鉴于这两个值,内部Border的角半径R'应设置为多少,以使两个角边缘相遇且没有重叠或孔洞?

alt text

到目前为止,我只是凭感觉来做,但如果有人能给我一个正确的公式就太好了。如果你能做到的话,就会获得尊重分数!!;)


这是一个视觉问题 - 如果您能够发布所需的图表,可能会极大地帮助! :) - FrustratedWithFormsDesigner
3
为什么显而易见的答案 R' = R - T 不能使用? - Ignacio Vazquez-Abrams
1
添加了一张插图。@Ignacio:我确实尝试过这个,但它没有起作用。 - devios1
@Ignacio:为了说明为什么它不能是 R - T,请想象 R 和 T 都是 1。根据这个公式,R' 将变成 0,但它不能为零,因为零意味着方形角,而 R 不是方形的。--不过,如果 R 足够小或 T 足够大,内侧半径可能会是方形的。耸肩 - devios1
1
在我的看法中,示例中的内边框没有正确地位于虚拟圆上(与直线边框的连接不平滑)。如果它是这样的话,Ignacio的公式就可以奏效了。 - Tomer Vromen
1个回答

17

T'/2 + R` = R - T/2

或者

给定T,R和T',则R' = R - T/2 - T'/2

例如,对于外边框厚度为(T=10),半径为(R=8),内边框厚度为(T'=4),需要一个内边框半径为1。


2
是的!就是这样!仔细检查后,我发现R-T在我的值上略有重叠。这个公式似乎非常准确。耶,给Aviad加分!++++ :) - devios1
对于特定情况,这个公式给出了一个厚度为0的圆角半径。显然这是不起作用的,但填入0.01就很好用了。 - Wouter
谢谢您提供这个伟大的公式。但是,如果在任何一侧,我的外边框和内边框的厚度不同怎么办?例如<Border x:Name="outerBorder" CornerRadius="5 5 2 2" BorderThickness="10 4 2 4"><Border x:Name="innerBorder" BorderThickness="3 2 3 2" /></Border>,如何计算每个角的 innerBorder 元素的圆角半径。我必须考虑两个外边框和内边框以进行计算。 - Martin Braun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接