From: Wang, Jerry

Sent: Thursday, August 16, 2012 10:51 AM

Subject: reason why I cannot judge whether the current click resides within icon or outside it

我解释一下昨天说的为什么现在不能判断当有单击事件的时候,当前单击的位置是否落在六个图标任意一个之内,还是之外。

我们肉眼看到的椭圆(上面那个),是通过六个点的圆心角经过三角函数计算出来的3D坐标,来模拟3D效果。(把X,Y坐标用三角函数处理,产生弧度),再加上Z产生纵深效果。

当你单击的时候,event handler传进来的x和y是基于设备坐标系(红色的X’和Y’)的绝对坐标。因此,每次一个单击事件之后,要计算当前单击位置离哪一个点最近,必须要得到6个点在设备坐标系的绝对坐标。

图中的6条虚线就代表了从3D坐标转换到2D设备坐标系坐标的映射逻辑。

现在最主要的issue:

3D坐标的计算逻辑:( 注意3D的y是depend到Z的)


float x = -(float)(diameter/2*Math.sin(angleOffset));float z = diameter/2 * (1.0f - (float)Math.cos(angleOffset));float y = - getHeight()/2 + (float) (z * Math.sin(mTheta));

在映射到2D坐标时,令新的2D坐标为(x’, y’ )

X’ = f(x)

Y’ = g(y)

现在的问题是我们无法精确地determine函数f和g, 因为3D的x,y,z都是根据圆心角算出来的,而不是x’, y’.所以我现在只能用一种比较粗略的方式来近似模拟出f和g,有一定的误差。

因此,这些通过近似计算出来的x’和y’只能用来比较六个点到底哪个离点击坐标最近,而不能用来精确计算点击坐标是否落在图标的矩形范围内。换句话说,点击事件发生后,我没办法知道是否点在某个图标上,还是点在空白处。我只能求出点击坐标离近似计算出来的六个点的2D坐标的距离,然后对这6个距离进行排序,取出最小值返回。

安卓编程坐标系的一个问题相关推荐

  1. ur机器人编程-坐标系

    ur机器人编程-坐标系 特征:有三个相互垂直的xyz坐标轴组成 基座特征: 工具特征:tcp Tcp:控制xyz 控制工具围绕每个轴的旋转,Rx:Ry:Rz: 可以设置特征,通过移动特征移动该路点 1 ...

  2. java定义一个类计算圆的半径,C++编程:定义一个圆类要求属性为半径,操作为计算圆的周长和面积...,java编程:定义一个圆类,属性为半径,方法为对输入的半径计...

    导航:网站首页 > C++编程:定义一个圆类要求属性为半径,操作为计算圆的周长和面积...,java编程:定义一个圆类,属性为半径,方法为对输入的半径计 C++编程:定义一个圆类要求属性为半径, ...

  3. python编程前面需要一个空格怎么做_初学python,不明白代码之间时空格的用处

    展开全部 代码之间的2113空格其实没有什么作用.只5261是为了增强可读性. 代码不是越集4102中越好,符合规范的结构,比如让1653大括号单独成行,反而看起来更加清晰.舒服,是更能避免笔误的好习 ...

  4. Day14作业 三、编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包)

    三.编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包) 写一个测试类:创建一个集合,里面装6个学生(有三个班级class01,class02,class03) 例如:list. ...

  5. 如今编程成为了一个越来越重要的「技能」,如何自学编程我来教你

    如今编程成为了一个越来越重要的「技能」:作为设计师,懂一些编程可能会帮你更好地理解自己的工作内容:作为创业者,技术创始人的身份则会让你的很多工作显得更容易.而作为刚想入门的新手,面对眼前海量的信息,或 ...

  6. 安卓HTML中打开一个连接!点击跳转了,可以实现返回上一级的HTML的页面!

    安卓HTML中打开一个连接!点击跳转了,可以实现返回上一级的HTML的页面! 一般都要监听手机的返回按钮和页面上的返回按钮 //监听手机的返回按钮 @Override public boolean o ...

  7. java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...

    问题标题 java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题.编写一个应用程序计算圆的周长和面积,设圆的半 2019-5-23来自ip:15.196.194.53的 ...

  8. 【c】C语言编程写的一个http下载程序

    来自: 百度空间-软件工程师 大家都很熟悉HTTP协议的应用,因为每天都在网络上浏览着不少东西,也都知道是HTTP协议是相当简单的.每次用到FlashGet之类的下载软件下载网页,当用到那个" ...

  9. 安卓编程 app图标自定义

    安卓编程 app图标自定义 修改前后样式对比 修改之后的效果如下 正文 图标的修改 从android Studio中打开配置文件AndroidManifest.xml 找到上图代码的位置 其中 ico ...

最新文章

  1. 用vs2010编译vigra静态库及简单使用举例
  2. apt-get install php 指定版本号,如何使用apt-get升级单个软件包?
  3. error: expected ‘{‘ before ‘;‘ token
  4. 2 Oracle用户和表空间
  5. 【MySQL】数据库死锁查询及处理
  6. java 8 Stream中操作类型和peek的使用
  7. DIV+CSS 让同一行的图片和文字对齐
  8. ELK下Elasticsearch如何关掉服务
  9. tensorflow: slim
  10. Failed to load class org.slf4j.impl.StaticLoggerBinder
  11. 10月11 小结: 你又贪玩了不是?
  12. 制作 Eset Nod32 离线升级包
  13. 小程序生态化,Hybrid App要崛起了?
  14. c语言编程学习宝典,C语言学习宝典
  15. 玉米社:竞价推广对话成本优化办法
  16. 求学信计算机专业英语,英语求学信模板
  17. 再见,996!程序员开源考公指南火了:三人已成功上岸!
  18. 查找目录下大小超过10M的文件
  19. 数据中台怎么选型?终于有人讲明白了
  20. vx2阀(未完待续)

热门文章

  1. 《从0到1学习Flink》—— Flink 写入数据到 ElasticSearch
  2. hdu 6406(思路+数据结构)
  3. [转载] 什么是istio 官网内容
  4. Debian 8开启sftp服务
  5. poj 1338 Ugly Numbers(丑数模拟)
  6. Java与.NET的WebServices相互调用
  7. Sonar 质量扫描的输出日志--对应源码的跟踪(一){源码解析sonar-scanner-maven3.2}
  8. Linux NFS服务器的安装与配置(最简单的文件共享集群)
  9. CTR深度学习模型之 DIN(Deep Interest Network) 的理解与例子
  10. 今日代码(200708)--缺失值处理