如果我有如下图所示的图,我想通过某种因素缩放顶部矩形,使得左侧仍然像现在一样触摸圆圈,我将如何去做?这是在C ++中完成的,矩形由四个顶点表示,圆由中心和半径表示。
要缩放,我只需将所有顶点乘以比例因子,然后我需要将矩形平移回来,使其仍然接触圆圈。我不确定如何翻译。
感谢。
答案 0 :(得分:1)
首先,找到圆圈接触矩形的点。您可以通过计算一个长矩形边的角度来实现这一点,该长边与从圆心到与矩形接触的点平行。取远角的x和y值,并从它们中减去近角x和y。那么角度是
angle = atan2(y差异,x差异)。
然后将其与圆心和圆半径一起使用以计算它们接触的点:
touch.x = center.x + cos(angle)* radius; touch.y = center.y + sin(角度)* radius;
然后,对于矩形的每个角点:
这会缩放触摸点周围的矩形,因此触摸点本身不受影响。