这个问题有点晚了。我对这个问题的解决方案(尽管仍然需要工作)是:
我正在使用情节教程中给出的表盘的 svg 路径,即
M 0.235 0.5 L 0.24 0.65 L 0.245 0.5 Z
中心点(0.24,0.65)
接触仪表内部的圆弧。因此,拱门是一个圆心为(0.24,0.5)
和半径为0.15
.
给定一个角度theta
以弧度为单位,中心(h,k)
,并以极坐标形式表示圆,我们可以轻松获得该度数的圆上一点的笛卡尔坐标,如下所示:
x = h + r * cos(theta)
y = k + r * sin(theta)
然后,我们可以简单地将输入映射到仪表上应该具有的预期角度并计算x
and y
从那里。对于我在 python 中的实现,使用math
库,这翻译成以下内容:
h = 0.24
k = 0.5
r = 0.15
# Map my_raw_value to degrees. my_raw_value is between 0 and 300
theta = my_raw_value * 180 / 300
# and then into radians
theta = theta * math.pi / 180
x = h + r*math.cos(theta)
y = k + r*math.sin(theta)
path = 'M 0.235 0.5 L ' + str(x) + ' ' + str(y) + ' L 0.245 0.5 Z'
这将为您的形状动态生成三角形路径,并将表盘的长边粗略地设置在它应该在的位置。理想情况下,我们希望旋转整个物体,因为在这个实现中,三角形的底边保持静态,从而在图形的边界上形成一条直线。
您需要将路径上的所有三个点乘以旋转矩阵才能获得准确的坐标。