- 博客(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算法
假设绘制的直线两个端点为xsysxeye直线ykxm则dxxe−xsdyye−ys斜率kdxdy在DDA算法中当∣k∣1时,xs1xs1ys1kxs1m当∣k∣1时ys1ys1xs1kys1−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关注的人
RSS订阅