前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安卓编程坐标系的一个问题

安卓编程坐标系的一个问题

作者头像
Jerry Wang
发布2020-02-20 12:05:36
5210
发布2020-02-20 12:05:36
举报

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个距离进行排序,取出最小值返回。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Sent: Thursday, August 16, 2012 10:51 AM
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档