gpt4 book ai didi

java - 从给定角度获取屏幕边缘的坐标

转载 作者:行者123 更新时间:2023-11-29 03:06:18 27 4
gpt4 key购买 nike

我知道起点(屏幕中间)和角度(在我的示例中为 20°)。现在我想知道屏幕边缘的位置,就像一条看不见的线以给定的角度从中心画到边缘。为了更好地解释,我附上了一张图片:

example

最佳答案

实现此目的的一种方法是计算半径等于或大于最大对角线的圆上的一个点,然后将其裁剪到屏幕边界。

利用毕达哥拉斯定理,最大对角线的长度为

float d = Math.sqrt((width/2)*(width/2) + (height/2)*(height/2));

所以你可以像这样计算圆上的点(角度是从顶部顺时针方向的弧度):

float x = Math.sin(angle) * d;
float y = -Math.cos(angle) * d;

然后你必须将 vector 从原点剪裁到 4 边的每一点,例如左右边:

if(x > width/2)
{
float clipFraction = (width/2) / x; // amount to shorten the vector
x *= clipFraction;
y *= clipFraction;
}
else if(x < -width/2)
{
float clipFraction = (-width/2) / x; // amount to shorten the vector
x *= clipFraction;
y *= clipFraction;
}

同样对 height/2 和 -height/2 执行此操作。最后,您可以将 width/2、height/2 添加到 x 和 y 以获得最终位置(屏幕中心为 width/2,height/2 而不是 0,0):

x += width/2
y += height/2

关于java - 从给定角度获取屏幕边缘的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030488/

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