我有一条线,由参数定义m, h
,其中
y = m*x + h
这条线穿过一个网格(即像素)。对于网格的每个正方形(a, b)
(即 square [a, a+1] x [b, b+1]
),我想确定给定的线是否穿过这个正方形,如果是,那么正方形中线段的长度是多少。
最终,我希望能够同时使用多行(即m
和h
是向量,matlab 样式),但我们现在可以专注于“简单”的情况。
我想出了如何确定线是否穿过正方形:
- 计算直线与垂直线
x = a
和x = a + 1
以及水平线 和 的y = b
交点y = b + 1
- 检查这 4 个点中的 2 个是否在正方形边界上(即
a <= x < a + 1
和b <= y < b + 1
)
如果这些点上的两个在正方形上,则线穿过它。然后,要计算长度,只需减去两个点,并使用勾股定理。
我的问题更多在实施方面:我怎样才能很好地实施(尤其是在选择要减去的 2 个点时)?