计算坡度 - 只需角度
Calculate slope - just with angle
我想以 % 为单位计算斜率
例如我只有角度:
(可能在 PHP 或 Javascript 中)
斜率(22.5) //50%
0=0%
22.5=50%
45=100%
67,5=50%
90=0%
112,5=50%
135=100%
180=0
202,5=50%
225=100%
270=0
坡度=abs(tan(角度))*100
¿这是你想要的吗?
根据您的数据显示,在 每个 象限中,您在前 45 度内从 0% 线性上升到 100%,在第二个 45 度内下降回 0% 45度。
因此,您可以将所有角度映射到第一象限,0 <= angle < 90
,其中:
angle = angle % 90
然后,如果它位于该象限的后半部分,则将其围绕 45 度线旋转:
if angle >= 45:
angle = 90 - angle
现在你有一个角度 0 <= angle < 45
,它实际上是距离最近的象限边界的 "distance",你可以这样做:
percent = angle * 100 / 45
以百分比表示。
所以,简而言之:
angle = angle % 90
if angle >= 45:
angle = 90 - angle
percent = angle * 100 / 45
作为概念证明,这里有一些 Python 代码展示了它的实际效果:
for i in range (361):
angle = i % 90
if angle >= 45:
angle = 90 - angle
percent = angle * 100 // 45
print("%d -> %d" % (i, percent))
连同删节输出:
0 -> 0
1 -> 2
2 -> 4
3 -> 6
::
43 -> 95
44 -> 97
45 -> 100
46 -> 97
47 -> 95
48 -> 93
49 -> 91
::
87 -> 6
88 -> 4
89 -> 2
90 -> 0
91 -> 2
92 -> 4
93 -> 6
::
352 -> 17
353 -> 15
354 -> 13
355 -> 11
356 -> 8
357 -> 6
358 -> 4
359 -> 2
360 -> 0
使用与 paxdiablo 类似的推理,我想出了这个单行
slope = 100*abs(((angle+45) mod 90)-45)/45;
你应该可以在这里看到情节:go to wolframalpha
我想以 % 为单位计算斜率 例如我只有角度: (可能在 PHP 或 Javascript 中) 斜率(22.5) //50%
0=0%
22.5=50%
45=100%
67,5=50%
90=0%
112,5=50%
135=100%
180=0
202,5=50%
225=100%
270=0
坡度=abs(tan(角度))*100
¿这是你想要的吗?
根据您的数据显示,在 每个 象限中,您在前 45 度内从 0% 线性上升到 100%,在第二个 45 度内下降回 0% 45度。
因此,您可以将所有角度映射到第一象限,0 <= angle < 90
,其中:
angle = angle % 90
然后,如果它位于该象限的后半部分,则将其围绕 45 度线旋转:
if angle >= 45:
angle = 90 - angle
现在你有一个角度 0 <= angle < 45
,它实际上是距离最近的象限边界的 "distance",你可以这样做:
percent = angle * 100 / 45
以百分比表示。
所以,简而言之:
angle = angle % 90
if angle >= 45:
angle = 90 - angle
percent = angle * 100 / 45
作为概念证明,这里有一些 Python 代码展示了它的实际效果:
for i in range (361):
angle = i % 90
if angle >= 45:
angle = 90 - angle
percent = angle * 100 // 45
print("%d -> %d" % (i, percent))
连同删节输出:
0 -> 0
1 -> 2
2 -> 4
3 -> 6
::
43 -> 95
44 -> 97
45 -> 100
46 -> 97
47 -> 95
48 -> 93
49 -> 91
::
87 -> 6
88 -> 4
89 -> 2
90 -> 0
91 -> 2
92 -> 4
93 -> 6
::
352 -> 17
353 -> 15
354 -> 13
355 -> 11
356 -> 8
357 -> 6
358 -> 4
359 -> 2
360 -> 0
使用与 paxdiablo 类似的推理,我想出了这个单行
slope = 100*abs(((angle+45) mod 90)-45)/45;
你应该可以在这里看到情节:go to wolframalpha