给定直线方程式,确定“边缘”点

时间:2018-12-13 14:21:16

标签: algorithm graph coordinates

对于方程y = mx + c的给定行,其中m是梯度,c是y轴截距。如何确定图形上的“边缘点”?

为弄清“边缘点”的含义,我在下面添加了一个示例。

Example graph

边缘点用红色圈出。要确定此处的边缘点,只需将其设为(0, c) & (maximum x-value, m * maximum x-value + c)。但是,当我考虑具有不同m值的行时,就会出现问题。例如:

enter image description here

我在这里不能应用相同的逻辑,取而代之的是边缘点((maximum y-value - c) * m, maximum y-value) & (-c * m, 0),它是从方程y = mx + c导出的。所以我的问题是,在给定mc的情况下,如何确定这两个边缘点?我在这里没有看到某种模式吗?

2 个答案:

答案 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值的这种间隔,但要经过一些简单的计算。

现在确定两个间隔的交点(也可以为空)。