Math 将360度的自定义部分映射为从0到1的浮点

Math 将360度的自定义部分映射为从0到1的浮点,math,geometry,processing,Math,Geometry,Processing,我正在从传感器获取从0到360的输入。但是我想把事物映射成340度等于0和20度等于1 我尝试过使用map函数 float myInput = readData(); float myVar = map(myInput, 0, 360, 0, 1); 但这只会使340高于20。我认为它从340到0再到20这一事实使事情变得复杂。有没有一种方法可以将360度的自定义部分从0映射到1,当我的低点的数字高于高点时?您可以先将输入转换到不同的范围。大概是这样的: if(myInput>180){ m

我正在从传感器获取从
0
360
的输入。但是我想把事物映射成
340
度等于
0
20
度等于
1

我尝试过使用
map
函数

float myInput = readData();
float  myVar = map(myInput, 0, 360, 0, 1);

但这只会使
340
高于
20
。我认为它从
340
0
再到
20
这一事实使事情变得复杂。有没有一种方法可以将
360
度的自定义部分从
0
映射到
1
,当我的低点的数字高于高点时?

您可以先将输入转换到不同的范围。大概是这样的:

if(myInput>180){
myInput=myInput-360;
}
这将把像
340
这样的值转换为
-20
。因此,现在您的输入范围是
-20
20
,您可以使用
map
功能:

float-mappedInput=map(myInput,-20,20,0,1);
你没有说如果你的输入超出这个范围会发生什么,所以你可能需要更仔细地考虑这些情况,但是一般的方法应该有效