image 图片边框 java_如何在ImageView中查找图像的中心点和边框

本文介绍了如何在Java中计算ImageView中图像的中心点和边框坐标,涉及数学依赖关系、直角矩形假设以及使用三角变换计算各个角落的坐标。通过计算对角线一半的长度和应用旋转角度,可以得到图像的边界信息。
摘要由CSDN通过智能技术生成

两者之间存在数学依赖关系 . 如果还有其他可用信息: - 假设矩形对所有角落都有直角 - .

center.X = (aCorner.X + oppositeCorner.X)/2;

center.Y = (aCorner.Y + oppositeCorner.Y)/2;

其中aCorner是一个任意角落,而cornerCorner则与aCorner相对 .

这是微不足道的,包括计算边界(以及更多信息;中心位置,宽度和图片的高度以及旋转角度)的更多努力 . 假设图像的宽度为“w”,高度为“h”,角度为“a”,中心为“cX”和“cY” . 第一个角落;

length = sqrt(w^2+h^2)/2;

x = (length)*(cos(a)*(-w/length) - (h/length)*sin(a)) + cX;

y = (length)*(sin(a)*(-w/length) + (h/length)*cos(a)) + cY;

第二个角落;

x = (length)*(cos(a)*(w/length) + sin(a)*(h/length)) + cX;

y = (length)*(cos(a)*(h/length) - sin(a)*(w/length)) + cY;

第三;

x = -(length)*(cos(a)*(-w/length) + (h/length)*sin(a)) + cX;

y = -(length)*(sin(a)*(-w/length) - (h/length)*cos(a)) + cY;

第四;

x = -(length)*(cos(a)*(w/length) - sin(a)*(h/length)) + cX;

y = (length)*(cos(a)*(h/length) - sin(a)*(w/length)) + cY;

长度是矩形对角线的一半 . cos和sin的内部是三角变换的结果:

sin(a+b) = sin(a)*cos(b) + cos(a)*sin(b)

[....]

并且cX和cY用于将角从任意坐标系转换为特定坐标系 .

我知道,我知道这有点矫枉过正 . Matrix类可以单独使用此功能 . 我相信如果有的话,其中使用的方法可以分解为我在这里描述的方法 .

注意:角度 - 实际上甚至sin(a)和cos(a),这是更好的 - 可以通过访问

Matrix.getValues(float []值)

大多数2D矩阵使用此方案:

| sin(a) 0 0 |

| 0 -cos(a) 0 |

| 0 0 scale|

我不确定Android API的具体实现 .

顺便说一句,那里可能有一些签名错误,所以要小心 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值