已知值区间3700.10-4100.99,画布高400px怎么进行坐标值转换

mjle315 2015-03-30 10:50:30
已知值区间3700.10-4100.99,画布高400px怎么进行坐标值转换

我要最高点显示4100.99,最低点显示3700.10。


怎么转换坐标值?
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-04-01
  • 打赏
  • 举报
回复
还有,之前的公式,转换完应该是 Y=aX+b的形式 如果你把b当成0了,那保证不对了
於黾 2015-04-01
  • 打赏
  • 举报
回复
既然原始数据精确到小数点后2位,为什么乘以10??不是应该乘以100吗 还有,断点调试,看每次计算出来的到底是什么 然后,你把每一对X和Y存哪了?没看到你定义数组啊,费了半天劲转换,把最终结果都丢弃了?
於黾 2015-03-30
  • 打赏
  • 举报
回复
假设值区间是InMin,InMax,输入值是X 坐标区间是OutMin,OutMax,输出值是Y 那么(X-InMin)/(InMax-InMin)=(Y-OutMin)/(OutMax-OutMin) 整理一下,变成Y=dX的形式,输入X,求Y
於黾 2015-03-30
  • 打赏
  • 举报
回复
先乘以100,变成整数,就好转换了 不就是等比公式吗
  • 打赏
  • 举报
回复
最高点4101只要? 那就是4101/400,每1px代表10.25 3700/10.25,那就是361px
mjle315 2015-03-30
  • 打赏
  • 举报
回复
while ((line = sr.ReadLine()) != null)
            {
                string v = line.ToString().Split(',')[4];//值区间3700.10-4100.99

                int y1 = Convert.ToInt32(Convert.ToDouble(v) * 10);
                double px_high = y1 / 400;//计算每个PX代表多高

                int y = Convert.ToInt32(px_high);

                double temp_y = y1 / y;


                X(i * 20, Convert.ToInt32(temp_y));//绘图;X每次右移20PX

                i++;
            }
这样绘出来的图是一条直线。。不对的,那里错了?转换晕了都

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧