自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 bresenham 算法

Bresenham画法是一种用于计算计算机图形中线条的算法,其原理是沿着所需绘制的线段中的像素点进行递增或递减,来进行准确的点阵绘制。实现该算法的关键在于确定像素在基准线上的位置,以及在每次迭代时进行相应的调整。该算法比传统的直线算法更快且更准确,在低速处理器和低效内存设备上尤其适用。Bresenham画法的思想可以拓展到曲线绘制、圆形绘制等其他图像绘制领域。本文主要是解析这里面描述的直线光栅化算法。个人见解,如有错误,请多交流。

2024-09-12 21:34:06 2733

原创 Qt Raster模式下直线的光栅化算法

Qt绘制直线算法底层使用的还是DDA算法,用F26Dot6和FDot16两种格式将小数计算转换成整数计算。下面就是对源代码进行一下注释。(F26Dot格式指的是将32位的int,前26位表示一个数的整数部分,后6位表示小数部分。FDot16格式指的是32位int,前16位表示整数,后16位表示小数)

2024-09-07 22:51:16 276

原创 DDA算法

假设绘制的直线两个端点为xs​ys​xe​ye​直线ykxm则dxxe​−xs​dyye​−ys​斜率kdxdy​在DDA算法中当∣k∣1时,xs1​xs​1ys1​kxs1​m当∣k∣1时ys1​ys​1xs1​kys1​​−km​即 往"平缓"的那个坐标轴方向每次加1进行求点所以我们可以求得所需要绘制的格子数step。

2024-09-07 22:50:31 2293

原创 Qt 视口和窗口

setWindow(设置窗口),即是在世界坐标下扣出一块作为窗口,以窗口的左上角为原点作为一个窗口坐标系,后续绘制的内容会基于窗口坐标系投影到设备坐标系的视口上。setViewPort(设置视口),即是在设备坐标下,固定一块区域作为显示的范围,在窗口上绘制的内容会通过缩放平移到视口上。注意的是,这个转换通常是在QPainter要去draw的时候去处理的(比如说drawLine等draw函数),所以定义绘制内容的时候的坐标也是需要根据世界坐标系来定。需要在世界坐标系下考虑和窗口的相对位置。

2024-09-06 22:48:36 1996

原创 qobject_ cast原理

如果是向上转型这个时候Type的staticMetaObject 和 A 的staticMetaObject 就不是同一个指针了(因为get这个staticMetaObject 是虚函数,通过A拿到的staticMetaObject 其实是他子类的)。如果是向下转型,Type 的 staticMetaObject 和 A的 staticMetaObject 应该是同一个指针。A的staticMetaObject 是否在 Type 的staticMetaObject的内部。

2024-09-06 22:14:07 411

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除