浮点与整形在GUI下的相关思考
平时不接触绘图,似乎感觉不到浮点和整形所带来的区别,这次项目中意外的碰到了浮点与整形进行迁移的工作。因此写点心得,让自己以后也可以看看。
用浮点作图有个最大的弊端就是边界情况,比如你需要在点(20,20)的地方画一根直线,但由于是浮点,此时你不一定真的能到(20,20),你可能在横坐标或者纵坐标下只能到19.784类似的小数,而到不了真正的20.因为再一加,可能都已经抄20了,你的碰撞检测就已经报警了。因此,解决此类浮点边界情况的方法是建立跳跃机制--即当系统检测到此时你的offset出现了一个大于20的值,可能20.001也可能200,我们默认给他一个边界值,就是20.也就是说当用户操作在边界进行恶意耍鼠标导致offset出现极大的时候,我们的检测机制可以让它乖乖的到达边界,一来解决到不了20的情况,而来可以顺利的做到边界的特殊处理(比如颜色变红提醒用户)。以为如果没有跳跃机制,我们很难拿出一个合理的值来做红线检测,比如我此时的点是19.874,我就能保证当 currentPos.x() + offset - 20.0f < 0.2f的时候就一定可以触发红线了吗?如果用户进行一次恶意跳跃,忽然一拉鼠标,此时你的线已经在边界了19.874了,忽然来了个特大的offset比如40,这个时候19.874 + 40 > 0.2,你能说这个时候不在边界么?
相反,整形就容易的多,不需要考虑过多的四舍五入问题,当然面对跳跃也需要做相应的取舍。当然最简单的整形偷懒方法就是每次+1了,这个也要看到时候具体的项目需求了。
浮点与整形在GUI下的相关思考的更多相关文章
- linux 下crontab相关定时触发的配置规则
linux 下crontab相关定时触发的配置规则: 1.基本格式 :* * * * * command(分 时 日 月 周 命令)2.取值范围:分钟1-59 每分钟用*或者 */1表示小时1-23( ...
- 20145234黄斐《信息安全系统设计基础》第八周(Linux下vim相关命令)
Linux下vim相关命令 在编辑程序时经常使用vim,所以记住一些常用的指令还是很有必要的 文件命令 vim file 打开单个文件vim file vim file1 file2 file3 .. ...
- Linux下mysql相关操作
Linux下mysql相关操作 1.创建MySQL mysql -u root -p create user 'username'@'%' identified by 'password'; %可以选 ...
- Linux下 svn相关操作
Linux下 svn相关操作 一.首先看看svn安装的位置: 命令: find / -name svn /var/svn :表示安装目录 /user/bin/svn :表示命令目录 可以看到的是svn ...
- linux下进程相关操作
一.定义和理解 狭义定义:进程是正在运行的程序的实例. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的 ...
- Linux下Openfire相关安装和配置
记录下来,方便下次再用时从头查找资料 小京东ecshop中的通讯有用到openfire,Window下配置安装很简单,直接下载exe文件安装就行,而linux下要麻烦一点.安装后的配置下面会细说: 一 ...
- windows环境下memcache相关配置及PHP加载相应模块(php7版本)
原文:https://blog.csdn.net/zhangatle/article/details/77504094 亲测安装成功 php 7.0 nts 86 第一步,首先下载windows版本的 ...
- windows下数据挖掘相关包numpy、pandas的安装
安装Anaconda的绕道 这里介绍如何在windows下安装numpy/scipy/matplotlib/pandas/scikit_learn等数据分析相关包 相关环境: win7 64位 pyt ...
- Linux 下 终端 相关的命令
1. 概述 Linux 服务器, 通常可以由多个终端连接 简单介绍一些 终端 相关的操作 最终的目的, 是定位到某个终端, 然后把它 踢下来, 甚至可以不让他再次连接 2. 环境 操作系统 CentO ...
随机推荐
- bzoj3230
以前觉得这题好难,现在觉得这题还是挺简单首先看到类似LCP问题不难想到后缀数组吧前后的相似需要我们分别做一个后缀数组和“前缀数组”(就是把字符串反向然后跑后缀数组)这道题的难点就在于如何确定子串是什么 ...
- 实战weblogic集群之创建domain,AdminServer
在weblogic安装完后,接下来就可以创建domain,AdminSever了. 第1步: $ cd /app/sinova/Oracle/wlserver_10./common/bin $ ./c ...
- 数据结构(线段树):BZOJ 1018: [SHOI2008]堵塞的交通traffic
1018: [SHOI2008]堵塞的交通traffic Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 2638 Solved: 864 Descri ...
- 贪心:SPOJ Backup Files
BACKUP - Backup Files no tags You run an IT company that backs up computer data for large offices. ...
- ToArray()和IEnumerable<T>,List<T>
一:ToArray() 在程序中,我们往往习惯使用List<>这种集合类,但是程序中却要求需要传递一个数组,List<>已经为我们提供了toArray()方法 二:IEnume ...
- 201512读书分享——读《做自己的No.1》“哪一天”是永远不会到来的
在看这本书的同时,最近也看了一部电影叫做<令人怦然心动的人生整理魔法>,讲一个女孩子平常不善收理,然后房间和人生乱七八糟,她总想着“等哪一天有空了就收拾”.但是,最终一句话打醒了——“哪一 ...
- 跑步进入全站 HTTPS ,这些经验值得你看看
随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在前几天,免费提供证书服务的 Let’s Encrypt 项目也正式开放测试,HTTPS 很快就会成为 WE ...
- Web项目初始化过程
在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>. 接着容器会创建一个ServletCont ...
- Android URI简单介绍
就Android平台而言,URI主要分三个部分:scheme, authority and path.当中authority又分为host和port.格式例如以下: scheme://host:por ...
- [PWA] 0. Introduce to Offline First
Why offline first? Imagin you are visiting a website, it is fine if wifi connection is good. It migh ...