对于方程y = mx + c
的给定行,其中m
是梯度,c
是y轴截距。如何确定图形上的“边缘点”?
为弄清“边缘点”的含义,我在下面添加了一个示例。
边缘点用红色圈出。要确定此处的边缘点,只需将其设为(0, c) & (maximum x-value, m * maximum x-value + c)
。但是,当我考虑具有不同m
值的行时,就会出现问题。例如:
我在这里不能应用相同的逻辑,取而代之的是边缘点((maximum y-value - c) * m, maximum y-value) & (-c * m, 0)
,它是从方程y = mx + c
导出的。所以我的问题是,在给定m
或c
的情况下,如何确定这两个边缘点?我在这里没有看到某种模式吗?
答案 0 :(得分:2)
您需要求解4个简单的线性方程(不是方程组!):
y = m * 0 + c = c
y = m * maxX + c
0 = m * x + c
maxY = m * x + c
并获得与轴和最大线的交点。然后滤除负坐标和太大坐标的点,因为只需要第一象限
第一个方程式已经解决y=c
第二个给出与垂直线垂直的交点
第三个给出与OX轴的交点
第四个给出与顶部水平线的交点
示例:
maxX = 5
maxY = 5
line y = 2 *x - 1
x0, y0 = 0, -1
x1, y1 = 5, 9
x2, y2 = 1/2, 0
x3, y3 = 2, 5
第一对包含负坐标y=-1
第二对包含y=9 > maxY
第三和第四个满足您的约束。
因此,此行给出了(1/2, 0)-(2, 5)
段(就像第二张图片的垂直段附近)
矩形可以认为这种算法是line clippping的简单类型
答案 1 :(得分:0)
对于要在给定矩形中的线,有x值给定的约束和y值给定的约束。
x约束琐碎地导致x值必须在其中间隔。
y约束还为您提供了x值的这种间隔,但要经过一些简单的计算。
现在确定两个间隔的交点(也可以为空)。