gpt4 book ai didi

android - 如何检测点击了哪个矩形?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:34:31 25 4
gpt4 key购买 nike

我的屏幕上有几个矩形,其中一些是旋转的。现在用户点击屏幕的一个位置(x,y)。是否有标准算法来检测哪个矩形被点击(包含 (x,y) 坐标)?

这与我遇到的问题有关: Child Views that are translated, scaled or rotated disappear

最佳答案

如果您搜索“多边形算法中的点”,您会找到一堆。对于矩形,我想最简单的是将矩形分成两个三角形并检查测试点的barycentric coordinates。 .这是一个未经测试的即兴编码尝试:

boolean pointInTriangle(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3) {
int denom = (y2-y3)*(x1-x3) + (x3-x2)*(y1-y3);
if(denom==0) return false; // collinear

int num1 = (y2-y3)*(x-x3) + (x3-x2)*(y-y3);
if((denom < 0 && num1 > 0) || (denom > 0 && num1 < 0)) return false;

int num2 = (y3-y1)*(x-x3) + (x1-x3)*(y-y3);
if((denom < 0 && num2 > 0) || (denom > 0 && num2 < 0)) return false;

int num3 = denom - num1 - num2;
if((denom < 0 && num3 > 0) || (denom > 0 && num3 < 0)) return false;

return true;
}

现在您只需遍历矩形,检查该点是否位于构成矩形的两个三角形中的任意一个中。

关于android - 如何检测点击了哪个矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com