假设我正在创建一个基于光栅的绘制程序。我的画笔是椭圆形的。用户单击,然后拖动鼠标绘制一个区域。我现在有两个点:点A(点击的地方)和点B(鼠标拖动返回的第一个点)。我要填充画笔区域内的所有像素。最好的方法是什么?
我的第一个方法是计算两点之间的斜率,然后从点A到点B递增。对于中间的每个点,我搜索椭圆范围内的所有像素,如果它们在范围内,则打开它们。但这似乎效率很低,因为像素经常会被检查不止一次——通常是多次检查,因为增量比椭圆小得多(想想维恩图)。
有更好的方法吗?一种效率更高、像素需要检查的次数最少的方法。
我目前正在做一些非常相似的事情,可以告诉你我在做什么:
因为我不知道你使用什么编程语言/框架,所以我不能给你代码:)