algorithm - 协助创建围绕圆弧创建框的算法

标签 algorithm geometry rectangles

我正在寻找有关创建能够计算弧形边界框的算法的帮助。通常,这将是一个简单的问题。但是,我需要将盒子的边缘之一作为连接弧的起点和终点的线。

我在开发能够计算矩形的另外两个点的算法时遇到了困难。

这是我正在尝试计算的图片:

arc box

两个紫色的点,我需要开发一个算法来确定这两个位置。绿点是可以输入的已知点。此外,我确实知道圆弧的半径和圆心。

我需要算法来处理 AB 线垂直、具有 + 斜率和 - 斜率的不同情况。

我一直在考虑几个方向。例如,我知道通过点 E 的线平行于线 AB。因为它是平行的,这意味着它们将具有相同的斜率,并且从点 A 到紫色点的线垂直于这条线。然后我可以考虑通过 E 的线与这条垂直线的交点。

这种方法看起来很麻烦,因为那时我需要考虑 AB 线的斜率无限大且为 0 的情况。我想知道是否有某种算法可以自动解决这个问题(或者甚至不考虑斜率在全部用于 AB 行)

最佳答案

enter image description here

你声称知道点ABCDE,圆弧的支撑角幅度不超过180°(半圆)。
P1, 和P2, 补充bounding box的两个点——(在图中,P1就是上面的紫色点AP2 B 上面的那个)。

使用向量:

E-C = 垂直于线段 AB' 的向量,即从 E 中减去 C;它的大小等于距离 EC
P1 = A + (E-C)
P2 = B + (E-C)

边界框 = 矩形 A, P1, P2, B

如果需要更紧密的拟合,可以将vector (E-C)替换为vector (D-C)以放置边界线段P1P2切线到 D

关于algorithm - 协助创建围绕圆弧创建框的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49804636/

相关文章:

java - 试图在 Java 中测试矩形的交集,我做错了什么?

java - 在 Java 中使用大量对象是否存在性能问题

css - 剪辑路径插入圆

java - 在 Canvas 上以更好的分辨率绘画? (安卓)

iphone - 以编程方式在 CircleImage 上创建 UIButton

计算最小外接矩形左下角的坐标和长宽提供的2个矩形

math - 如何在矩形的周长中找到与给定点最近的点?

algorithm - 查找行之间矩阵的公共(public)元素

c - 大量 - 有缺陷的数字代码不显示结果

c# - C#中快速查找唯一单词的有效方法