y = -1.56x + 12.36
y = 0.64x + 0.32
I (5.47, 3.82)
在这个阶段,我们已经有四个点使我们的边界框 - > C, H, D , I
万一你不知道或不记得如何用编程语言解决线性系统,我会给你一个小例子
这是纯粹的代数
假设我们有以下系统
Ax + By = C
Dx + Ey = F
然后
Dx = F - Ey
x = (F - Ey) / D
x = F/D - (E/D)y
替换另一个等式
A(F/D - (E/D)y) + By = C
AF/D - (AE/D)y + By = C
(AE/D)y + By = C - AF/D
y(-AE/D + B) = C - AF/D
y = (C - AF/D) / (-AE/D + B)
= ( (CD - AF) / D ) / ( (-AE + BD) / D) )
所以
y = (CD - AF) / (BD - AE)
而对于 x ,我们也这样做
Dx = F - Ey
Dx - F = -Ey
Ey = F - Dx
y = F/E - (D/E)x
替换另一个等式
Ax + B(F/E - (D/E)x) = C
Ax + (BF/E - (DB/E)x) = C
Ax - (DB/E)x = C - BF/E
x (A-(DB/E)) = C - BF/E
x = (C - BF/E)/(A-(DB/E))
= ((CE - BF) / E) / ((AE-DB) / E)
x = (CE - BF) / (AE - DB)
3 回答
生成以下几点:
圆圈的中心
圆上两个半径的位置
两个之间每个角度的圆上的点除以90o(最多4个点)
从上述点计算最小值和最大值x和y . 这是你的边界框
我要改写yairchu的答案,以便更清楚(对我来说,无论如何) .
暂时忽略中心坐标并在原点绘制圆 . 说服自己以下内容:
弧与轴相交的任何位置都是最大值或最小值 .
如果圆弧不与轴相交,则中心将是边界矩形的一个角,这是唯一的情况 .
该部门唯一需要考虑的其他可能的极点是半径的终点 .
你现在最多可以找到4 1 2个点 . 找到绘制矩形的坐标的最大值和最小值 .
通过将原始圆心的坐标添加到矩形的坐标,可以将矩形轻松转换为原始圆 .
首先,如果我犯错误,我会道歉但英语不是我的第一语言,实际上是西班牙语!
我遇到了这个问题,我想我找到了一个有效的解决方案 .
首先让我们看一下情况的图像
所以我们有一个椭圆(实际上是一个圆圈)和两个点(
C
,D
)表示我们的扇区 . 我们还有圆圈的中心(B
)和圆弧的角度alpha
.现在,在这种情况下,我让它通过porpouse上的
360º
来查看它是否可行 .让我们说
alpha -> -251.1º
(它使其顺时针方向为负),让它转换为正值360º - 251.1º = 108.9º
现在我们的目标是找到该角度的二分角,这样我们就可以找到边界框的最大点(图像中的E
),实际上你可能已经意识到,段BE
的长度等于圆的半径,但我们必须有角度才能获得E
点的实际坐标 .那么
108.9º / 2 -> 54.45º
现在我们有了这个角度 .为了找到E的坐标,我们使用极坐标
我们有
r
和theta
所以我们可以计算x和y在我的例子
r = 2.82
...(实际上它是理性的,但我把前两个十进制数字作为一个容易的事情)我们知道我们的第一个半径是
87.1º
所以theta将是87.1 - 54.45º -> 32.65º
我们知道* theta *是
32.65º
所以让我们做一些数学运算现在我们需要将这些值调整到圆的实际中心
在示例中,圆圈以
(1.86, 4.24)
为中心在这个阶段我们应该使用一些微积分 . 我们知道边界框的一个边缘将是穿过我们刚刚计算的点的弧的切线,因此我们可以找到切线(红线) .
我们知道切线穿过我们的点
(4.23, 5.76)
现在我们需要一个斜率 .如您所见,斜率与通过我们的半径的矩形的斜率相同,因此我们必须找到斜率 .
为此,我们需要获得半径的坐标(从极坐标快速转换到卡西斯坐标) .
所以
(
21.8º
是从水平轴到其下方的半径顺时针测量的角度,因此我将其置为负值)现在让我们找到斜率:
我们需要计算切线方程的斜率,基本上是一个已知斜率(
m = -1.56
)的矩形,它通过已经知道的点(E -> (4.23, 5.76)
)所以我们有
Y = mx + b
其中m = -1.56
,y = 5.76
和x = 4.23
所以b
必须是现在我们有完整的正切方程 - >
Y = -1.56X + 12.36
我们必须知道的是在那个矩上投射点C
和D
.我们需要rects
CH
和DI
的等式,所以让's calculate ' em让我们从
CH
开始:我们知道(从tanget方程式)我们的方向向量是
(1.56, 1)
我们需要找到一个通过该点的矩形
C -> (2, 7.06)
做一些代数 - >
y = 0.64x + 5.78
我们知道有方程式
CH
我们必须计算点H
.我们必须如下解决线性系统
解决这个问题我们会发现
H (3, 7.69)
我们需要对rect
DI
做同样的事情,所以让我们这样做我们的方向向量又是
(1.56, 1)
做一些代数 - >
y = 0.64x + 0.32
让我们解决线性系统
在这个阶段,我们已经有四个点使我们的边界框 - >
C, H, D , I
万一你不知道或不记得如何用编程语言解决线性系统,我会给你一个小例子
这是纯粹的代数
假设我们有以下系统
然后
替换另一个等式
所以
而对于
x
,我们也这样做替换另一个等式
我为答案的范围道歉,但我的意思是尽可能清楚,因此,我几乎一步一步地做到了 .