【发布时间】:2010-11-23 23:06:00
【问题描述】:
好的,我正在尝试使用 c#/java 进行台球游戏。
-
start= 台球杆背面(x,y) -
end= 台球杆前面(x,y) -
circles= 球列表 (x,y,r)
因此,每次您移动鼠标时,我都会更新start、end,然后循环遍历`circles 检查它是否相交。那么这是我的问题我需要弄清楚如果我在交叉点击球会发生什么(它会向上向下)。
我将如何做到这一点。我在 google 上查看了一些示例,但只能找到他们使用 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);
}
【问题讨论】:
-
这类物理总是由向量建模。花点时间学习基本的线性代数,你需要的东西并不难。
-
现阶段我只想要角度,并不需要速度或摩擦力或任何其他...
-
这篇文章可能会有所帮助。 codeproject.com/KB/game/CSharpSnooker.aspx
标签: c# java trigonometry