gpt4 book ai didi

java - 模拟棒的逻辑产生正方形而不是圆形

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:53 24 4
gpt4 key购买 nike

我正在尝试在移动平台上模拟模拟摇杆。

我根据手指的位置和棍子的半径计算了一个棍子 vector ,返回一个从 -1 到 1 的值。

public void calcStickVector(float x, float y)
{
float cx = getCenterX();
float cy = getCenterY();

float distX = x - cx;
float distY = y - cy;
distX /= getRadius();
distY /= getRadius();

distX = JMath.clamp(-1.0f, 1.0f, distX);
distY = JMath.clamp(-1.0f, 1.0f, distY);
stickVector.x = distX;
stickVector.y = distY;
}

public RectF getInnerStickRect()
{
float r = getInnerRadius();
float cx = getCenterX() + (getRadius() * getStickVector().x);
float cy = getCenterY() + (getRadius() * getStickVector().y);

innerStickRect.left = cx - r;
innerStickRect.top = cy - r;
innerStickRect.right = cx + r;
innerStickRect.bottom = cy + r;

return innerStickRect;
}

它几乎可以工作,但从视觉上看,内杆在四处移动时似乎形成了一个正方形,而不是绕着一个圆圈移动。我的逻辑有问题吗?

谢谢

最佳答案

事实上,您实际上是在制作一个以 1 为角的盒子。您需要对 vector 进行归一化(按距离除以 x 和 y),而不是除以半径和钳位。

double dist = Math.sqrt(distX*distX) + (distY*distY));
distX /= dist;
distY /= dist;

关于java - 模拟棒的逻辑产生正方形而不是圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850668/

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