c# - 双 Y 从 -10 增加到 10,使双 X 从 500 减少到 0
问题描述
我的 webapp 上的一个移动元素有问题。有一个double y
值可以来自-10 to 10
。然后我有一个double tope
which can be from 0 to 500
,它代表绝对元素顶部的位置。
这两个值都是相对的。所以什么时候y
增加tope
就是减少。问题是我无法更改初始y = -10
值,否则我只会将其从 1 变为 20。所以我做了一些操作:
double y = -10 to 10 // comes from function, increases, decreases randomly, but never jumps over numbers
double ynum = 25;
double divy = 250;
double tope = 500;
if(y<0)
{
y = y * -1; //Since y starts at -10, I convert it to 10
y = y + 10; // I add 10 to reverse, so 10+10 is 20, or 9+10 is 19 ...
tope = ynum * y; // 25x20 first initial tope value is 500px, then lets say 25x19.. dropping
}
else // at some point y reaches positive side and I need to decrease tope value further
{
tope = divy / y;
}
所有这一切都很好。y
从-10 to 10
和 tope 从500 to 0
. 除非y
达到低于零的双精度值,-0.154.., -0.254.., 0.345 ..
因为分数的除法/乘法完全不同。
我试图强制所有分数为 1 或 0,但是移动的绝对元素失去了它的平滑度。
我该如何解决这个问题?
解决方案
你想要一个线性函数,将 [-10, 10] 映射到 [500, 0],所以
tope = a*y + b
替换您的条件:
0 = 10a + b => b=-10a
500 = -10a + b
插件第一个到第二个:
500 = -10a + -10a => a = -500/20 = -25
b = -10a = 250
所以你只需要:
tope = -25y + 250
推荐阅读
- swift - 即使将其类别设置为播放(Swift),音频会话也会与其他会话混合?
- java - Spring RestController 将错误返回为 html 而不是 json
- python - 从 Python 中的列表中提取字母字符串值
- python - 是否有必要在多线程的 Paramiko 中为每个线程打开一个 SFTPClient?
- python - 谷歌历史价格进入熊猫数据框
- javascript - DateTime datesAgo 集合函数
- matlab-guide - ODE45 Matlab 的不同解决方案
- java - Elasticsearch 集群节点,需要连接哪个节点?
- php - 在实时服务器上打开所需文件失败
- java - 在 Java 中声明一个公共类