我正在实现触摸屏用户界面的滚动行为,但我现在太累了,无法将我的思想包裹在一些所谓的微不足道的数学中:
y (distance/velocity)
|********
| ******
| ****
| ***
| ***
| **
| **
| *
| *
-------------------------------- x (time)
Run Code Online (Sandbox Code Playgroud)
F(X) - >?
UI应该允许用户在任何方向上拖动和"抛出"视图,并且即使在他从屏幕上释放手指之后也保持滚动一段时间.它的动量取决于用户在取下手指之前拖动的速度.
所以我有一个起始速度(v0),每20ms我滚动一个相对于当前速度的量.每次滚动迭代时,我都会降低速度,直到它停止时它低于阈值.当我将它减去固定量(线性)时,它看起来并不正确,所以我需要建模负加速度,但未能提出一个不错的简单公式如何计算我必须降低速度的量在每次迭代中.
更新:
感谢您到目前为止的回复,但我仍然无法从反馈中获得令人满意的功能.我可能没有足够好地描述所需的解决方案,所以我将尝试给出一个真实世界的例子来说明我想要做什么样的计算:
假设在某条街道上有一辆汽车行驶,并且驾驶员踩刹车到最大值直到汽车停下来.司机多次在同一条街上用同一辆车做这件事,但开始以不同的速度制动.当汽车减速时,我希望能够仅仅根据当前的速度计算一秒钟后的速度.对于这种计算,当驾驶员开始破坏时,汽车行驶的速度无关紧要,因为所有环境因素都保持不变.当然,公式中会有一些常数,但是当汽车下降到30米/秒时,它将在下一秒内达到相同的距离,无论是否在驾驶员开始破坏时行驶100或50米/秒.因此,打中断后的时间也不是函数的参数.一定速度下的减速度总是相同的.
如果在减速,质量,摩擦或其他任何情况下假设一些任意常数并忽略复杂的影响,如空气阻力,你如何在这种情况下一秒钟后计算速度?我只是在动能之后,由于打破汽车的摩擦而消耗它.
更新2 我现在看到汽车的加速度将是liniear,这实际上不是我想要的.我会清理它并明天尝试新的建议.感谢您的投入到目前为止.
我在声明和初始化char数组时遇到问题.它始终显示随机字符.我创建了一小段代码来显示我在更大的程序中尝试的内容:
class test
{
private:
char name[40];
int x;
public:
test();
void display()
{
std::cout<<name<<std::endl;
std::cin>>x;
}
};
test::test()
{
char name [] = "Standard";
}
int main()
{ test *test1 = new test;
test1->display();
}
Run Code Online (Sandbox Code Playgroud)
对不起,如果我的格式不好,我几乎无法弄清楚这个网站,更不用说如何修复我的代码:(
我们的主要客户解决方案有111个项目 当我第一次开始这个团队时,我很惊讶(并且惊慌失措)我们有这么多项目,并建议将这些层级合并到更少但更大的组件中.我们的结构具有带有nhibernate映射文件的模型(DTO),带有数据控制器调用的WCF服务层,一些框架类型项目以及具有多个模块的winform CAB应用程序.我们将使用点击一次部署.
由于构建时间(最差情况最多15分钟),其他一些团队成员现在也担心.我没有经验证据表明较少的项目是一个好主意,并且想知道堆栈溢出社区是否有任何反馈.是否有令人信服的理由改变我们的解决方案结构来整合项目?我们会遇到使用click-once部署100多个程序集的麻烦吗?加载和调用方法调用时,更多的程序集会导致缓慢吗?我们可能遇到的任何限制可能会破坏事情?
如何运行上次显式启动的运行配置?Eclipse总是试图在当前编辑器中运行该文件,当这是一个碰巧有一个main方法的类或者是一个非Java文件时,Eclipse然后尝试设置一个ant任务而不是仅运行我的程序.我知道我可以点击Run Pulldown中最顶级的项目,但我真的更喜欢有一个键盘快捷键,这对我来说很不错.
是否可以快速编写并运行一个小脚本来自动执行一些繁琐的编辑任务?我知道我可以用Java编写扩展,但我常常想要自动化一些我只需要一次的东西,而且不会超过3行javascript代码.
我可以在没有多次eclipse安装的情况下解除/启用扩展吗?一些扩展(即Android)占用了大量资源,并且即使对于不使用它们的项目,它们在安装时也会减慢一些.有没有办法延迟初始化这些扩展或明确加载它们甚至更好地将扩展加载与项目相关联?我认为卸载它们会让我失去对他们的所有偏好吗?
我正在使用Eclipse 3.5 Galileo.
当我使用FileInputStream读取一个对象(比如几个字节)时,底层操作是否涉及:
1)读取整块磁盘,这样如果我随后再进行另一次读取操作,它就不需要真正的磁盘读取,因为在上次读取操作中已经取出了该部分文件?
要么
2)由于FileInputStream不进行任何缓冲而应该进行新的磁盘访问,而应该使用bufferedInputStream来实现(1)的效果?
我认为,由于FileInputStream使用读取系统调用,并且它只从硬盘读取一组页面,因此必须进行一些缓冲.
在代码中,
class MyObject {
public String doThing() {
return "doh";
}
}
class MyClass {
private myObject = null;
public MyClass() {
myObject = new MyObject() {
public String doThing() {
return "huh?";
}
};
}
Run Code Online (Sandbox Code Playgroud)
当为myObject分配一个新对象时它叫什么?我在技术上试图找出'doThing'是否覆盖了MyObject中的方法,或者它是否重新定义了它,但我不知道要搜索什么来找到答案 - 并且不知道在不知道它是什么的情况下要问什么问题在动态创建对象的新实例并为其提供实现时调用.
List可能包含Integers和String值.在这种情况下,我应该创建对象列表吗?
List<Object> list = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)
如何使用List的Integer条目执行简单的算术运算?
list.add(1);
list.add("ok");
list.add(2);
Integer a = list.get(0) - list.get(2); // does not work
Run Code Online (Sandbox Code Playgroud) 在java中如果一个程序看到像000这样的数字,java会将其解释为0还是将其解释为000?我注意到我的计算器甚至不让我输入000,所以它让我想知道java是否也以这种方式计算数字