计算坡度 - 只需角度

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