【发布时间】:2019-12-26 15:33:43
【问题描述】:
我正在使用 sdl2/sdl_gfx 在 c 中实现一个小游戏,以完成一项任务,您需要通过将小光标移动到白色圆圈下方(它围绕圆圈移动)来避免弧线(在中心)。
我的问题很简单:检测光标是否与圆弧相交的有效实现是什么?
对于每个圆弧都有:中心点(x,y),起点和终点半径,半径。 以下是哪些论点:
int arcRGBA(SDL_Renderer *renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a)
对于我的光标(圆圈下的小三角形),我有:三角形的坐标。
int filledTrigonRGBA(SDL_Renderer *renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint8 r, Uint8 g, Uint8 b, Uint8 a)
有了这些信息,我考虑使用三角形的线来检测它是否与弧相交。但我不知道如何用它所涉及的数学来实现它。
注意:弧线正在移动,并且它们的坐标每帧都会更新。我只需要知道检测交叉点的实现。
【问题讨论】:
-
你说你有圆弧中心点坐标。所以它们不是同心的?我问是因为对我来说(可能太近视了)看起来弧在小白盘上是同心的。
-
是的,它们都有相同的中心点。屏幕中间
-
你能计算出圆弧中心到光标的距离吗?如果它非常接近圆弧的半径,这意味着什么?
-
但是坐标是多余的,这似乎表明你没有正确地理解目标——或者没有正确和足够详细地解释它们,这似乎更有可能。
-
@Hazel: 或
arcRGBA需要中心点,即使所有弧线都具有相同的中心点。
标签: c trigonometry sdl-2 intersection