gpt4 book ai didi

c# - 台球/台球三角

转载 作者:行者123 更新时间:2023-12-01 05:52:22 26 4
gpt4 key购买 nike

好吧,我正在尝试用 C#/java 进行台球游戏。

  • 开始 = 池后面提示(x,y)
  • end = 池提示的前面(x,y)
  • 圆圈 = 球列表 (x,y,r)

因此,每次您移动鼠标时,我都会更新 startend,然后循环遍历“circles”,检查它是否相交。那么这就是我的问题,我需要弄清楚如果我在交叉点击中球会发生什么(它会直接向上向下)。

我将如何做到这一点。我在谷歌上查看了一些例子,但只能找到他们用 vector 做的例子,这超出了我的想象......

我的第一个想法是获取台球杆的角度,并从圆中点画一条相同角度的线,但由于某种原因这是错误的。这可能是我的 GetEnd 函数

    public Point GetEnd(Point start, double angle, int len)
{
double y = start.Y + (len * Math.Sin(angle));
double x = start.X + (len * Math.Cos(angle));

return new Point((int)x, (int)y);
}

最佳答案

我认为提示点与球移动方向之间的角度是:

Math.ASin(a/r)

其中a是代表球杆的射线与球中心之间的最小距离,r是球的半径。

通过最小化 lamda 的 a^2 = (Cue.Position+Cue.Direction*Lamda-Ball.Position)^2,然后计算平方根,可以获得 a该表达式的。

但是我懒得在没有 vector 的情况下重新表述该表达式。

关于c# - 台球/台球三角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4256833/

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