我正在用c ++制作游戏。这是一个纸牌游戏。我已经制作了13张牌,它们围绕着一个点旋转,以便制作你的牌。我需要一种方法来确定用户点击的卡片。我的卡片基本上是围绕卡片中心的一个点旋转的矩形。我想到可能得到鼠标点并围绕我的中心点旋转它,但我不知道如何围绕一个点旋转一个点。感谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果( x 0 , y 0 )是中心点且( x < / em> m , y m )是鼠标的位置,您可以通过以下方式计算鼠标相对于中心点的角度将( x 0 , y 0 )转换为原点(0,0),然后转换为极坐标
翻译成原点:
( x ', y ')=( x m - x 0 , y m - y 0 )
从矩形转换为极坐标( x , y )→( r ,θ) :
r = sqrt( x ' 2 + y ' 2 )
θ = tan -1 ( y '/ x ')
角度θ应足以告诉您选择了哪张卡。
答案 2 :(得分:0)
你已经有了几种可能性。这是一个相当不同的一个,它更多地依赖于编程而不是三角形。
这个想法是在后面的缓冲区中以独特的,纯色的颜色绘制每张卡片。检查与鼠标单击匹配的点的颜色,并且您有卡。曾经有一段时间这是非常不切实际的 - 但是使用现代图形硬件,这可能非常具有竞争力。
答案 3 :(得分:0)
您可以检查该点是多边形的一部分。 Here你可以找到相当快的实现。