坐标变换中出现的像素点位置偏离
来源:互联网 发布:超基因优化液下载免费 编辑:程序博客网 时间:2024/04/29 14:51
坐标变换中出现的像素点位置偏离
3d引擎中实现坐标系变换时,发现一个诡异问题,在屏幕右半边画出来的线有很明显的锯齿状,断断续续,而左半边没有问题,困扰多日。偶然间受到启发,把参与变换的x源坐标多加0.5,就一切正常了。
我的变换是这样:源坐标系以屏幕左下角为原点,屏幕宽高为(640,480),即x轴范围是0--639,y轴范围是0--479。目标坐标系以屏幕中心为原点,x轴范围是-1–1,y轴范围是-1–1。例如:需要把坐标(320,240)变换成(0,0)。
在没有加0.5前,变换算法是这样:
Vec2 v;float w = s_screenSize.width / 2;float h = s_screenSize.height / 2;v.x = (x - w) / w;v.y = (y - h) / h;调试log如下:
源x 目标x
319 -0.00312
320 0
321 0.00312
加上0.5后,变换算法是这样:
Vec2 v;float w = s_screenSize.width / 2;float h = s_screenSize.height / 2;v.x = (x + 0.5f - w) / w;v.y = (y - h) / h;调试log如下:
源x 目标x
319 -0.00156
320 0.00156
321 0.00468
可以看出,没加0.5时,如果源x为320,则目标x正好为0;加上0.5后,即使源x为320,目标x也是非0。我画点用的底层库是OpenGL,为什么在原点处画点后会导致后续点位置都略有偏差呢?而y轴变换不需要加0.5也是正常的?这里还是有点不太明白。
0 0
- 坐标变换中出现的像素点位置偏离
- 图形学中坐标点和坐标系的变换
- Object-C中获取当前触摸点的坐标位置
- Object-C中获取当前触摸点的坐标位置
- Object-C中获取当前触摸点的坐标位置
- iOS7中 navigationItem的左、右barButton 各向右、左偏离10个像素 (纠正方法}
- OpenCV中二维点求取进行仿射和透视变换之后的坐标点方法
- 坐标点旋转变换
- 如何根据坐标架进行点的坐标变换
- OPENCV系列(一)读取图像中任意点的像素值,并显示坐标
- PS中出现:不能变换所选像素,因为所选区域是空的。
- opencv如何获得图片所有像素点的坐标
- 图像指定坐标点的各通道像素值提取
- VTK中图像像素位置的提取
- MapGIS6.7_学习中遇到的问题(6):点位置坐标转为属性
- ios 点坐标、渲染像素、物理像素、设备像素
- 同一个点在不同坐标系下的坐标变换关
- C#以像素坐标点转以自定义坐标点
- Android图片缩放,压缩总结(inSampleSize,Matrix比较)
- getuid
- volatile关键字
- Universal-Image-Loader中的线程池
- getutent
- 坐标变换中出现的像素点位置偏离
- django中manytomanyfield 因为verbose_name导致filter_horizontal不显示的问题。
- add ssl to CentOS-6.5
- getutid
- 常识算法--素数判断
- HTML5规范尘埃落定,5个开发工具推荐
- android开源项目和框架
- java 多线程
- getutline