如何获得折线的每个像素的坐标
本文关键字:像素 坐标 折线 何获得 | 更新日期: 2023-09-27 18:01:46
我有256x256个Canvas
和一个Polyline
在上面,第一个Point
与X
坐标= 0,最后一个Point
与X
= 255。在运行期间,用户可能会输入更多的点。
Polyline
的0 - 255范围内获得每个X
的Y
坐标?假设折线的点为(x[i], y[i]),对于i = 0到n,其中x值按递增顺序排列。我们知道x[0] = 0 x[n] = 255。然后假设我们得到一个范围在0到255之间的x值。我们首先找到一个索引i,使得x[i]
y = y[i] + (y[i+1] - y[i])*(x - x[i])/(x[i+1] - x[i])
,或者说等价于
y = ( (x[i+1] - x)*y[i] + (x - x[i])*y[i+1] ) / (x[i+1] - x[i])
当然,如果x[i] = x[i+1]会有问题,所以这种特殊情况需要额外的注意。
另外,请注意这些公式将给出y的非整数值,这显然不直接对应于任何像素位置。具体渲染哪些像素取决于线的宽度和扫描转换算法的内部细节,我们无法知道。但是,如果您将y值四舍五入为整数,则很有可能会呈现相应的像素。