假设我正在创建一个基于光栅的绘图程序。我的刷子是椭圆形的。用户单击然后拖动鼠标来绘制一个区域。我现在有两个点:pointA(他们单击的位置)和 pointB(从鼠标拖动返回的第一个点)。我想填充画笔区域内的所有像素。最好的方法是什么?
我的第一种方法是计算两点之间的斜率,然后从 A 点增加到 B 点。对于中间的每个点,我搜索椭圆范围内的所有像素,如果它们在范围内,则将它们打开。但这似乎效率低下,因为像素通常会被检查不止一次——通常是多次检查,因为增量比椭圆小得多(想想维恩图)。
有更好的方法吗?一种更有效且最小化需要检查像素的次数的方法。