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);
你没有说如果你的输入超出这个范围会发生什么,所以你可能需要更仔细地考虑这些情况,但是一般的方法应该有效