java - 如何找到矩形内某个位置对应的子三角形

标签 java math position

我有一个动态矩形,其中创建了 4 个子三角形 (t0-t3)(通过添加顶点的对角线)。当给定某个 x|y 坐标时,找到相应三角形的最快方法是什么?矩形具有特定的位置和尺寸。我只需要正确的“id”,所以不需要三角形的顶点,因此例如在图形中,当 p1 被指定为位置 0 时应该返回,3 在 p2 处,2 在 p3 处,...

当然,一种可能的解决方案是创建三角形并查询该点是否包含在其中一个三角形中,但对于如此简单的事情来说,这感觉像是一个非常复杂的解决方案。 我还考虑过从中心创建一个 vector 并测量角度,但在不同尺寸的矩形中它似乎也很复杂。

Example Rectangle

最佳答案

考虑以下因素:

设矩形的左下角为(0,0),右上角为(1,1)。现在,形成三角形的两条线定义为:

y = x and y = 1-x

对于除 (.5,.5) 之外的每个点,对于给定的 x 或 y,我们都有一个三元条件。例如,假设 x = .2,我们知道:

如果 y < .2,我们位于底部三角形 (t2),
elif .2 < y < .8,我们位于左侧三角形 (t3),
否则,我们位于顶部三角形 (t0)。

希望这对您有所帮助,而无需明确向您提供代码。

关于java - 如何找到矩形内某个位置对应的子三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047506/

相关文章:

java - 使用现有的 Fibonacci 堆 Java 实现和 Dijkstra 的最短路径 Java 实现

javascript - 我们可以在react中的<return>标签中使用Math.Round吗

c++ - 指定范围内的保值

html - 更改分辨率时点位置的更改

python - 使用 pygtk 设置图像在窗口中的位置

java - log4j 附加程序 : buffered holder: only write to file on error

java - Apache Ignite 查询/索引

java - "openTlsConnect"CA 和 openTlsConnect 认证

c++ - 将所有 double 转换为整数以获得更好的性能,这只是谣言吗?

html - 内联显示一些 div