Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制权声明_C#_Wpf_Math - Fatal编程技术网

C# 控制权声明

C# 控制权声明,c#,wpf,math,C#,Wpf,Math,我需要数学逻辑方面的帮助。 假设我有一个用户可以操纵(移动)的对象。 用户移动对象后,我希望对象继续移动并减速到停止 例如,当用户在X轴上以100像素的总距离将对象从a点移动到B点时,在用户松开手指后,我想让对象继续移动并从B点减速到C点 那么,如果我设置点C减速和停止的时间为2秒,我如何计算点C的新距离呢 谢谢大家! d=½at²+vit+d0 d0是用户“放手”的点。在放开之前,从运动中计算vi。设置一个否定的东西;你得摆弄它才能让它感觉正常。从0到2递增t。d是对象将结束的位置。请记住,a

我需要数学逻辑方面的帮助。 假设我有一个用户可以操纵(移动)的对象。 用户移动对象后,我希望对象继续移动并减速到停止

例如,当用户在X轴上以100像素的总距离将对象从a点移动到B点时,在用户松开手指后,我想让对象继续移动并从B点减速到C点

那么,如果我设置点C减速和停止的时间为2秒,我如何计算点C的新距离呢

谢谢大家!

d=½at²+vit+d0


d0是用户“放手”的点。在放开之前,从运动中计算vi。设置一个否定的东西;你得摆弄它才能让它感觉正常。从0到2递增t。d是对象将结束的位置。请记住,a和vi是指向相反方向的矢量,d0和d是

如果加速度a为常数,则可以使用以下公式:

d=½at²

当t=2s时,得到d=2a

加速度足以在2s内加速至v, 所以a=v/2

你会得到:

d=v

因此,如果v=100像素/秒,如果对象在2秒内以恒定减速停止,则该对象应继续100像素。

如果您只需要从B到C的距离,这很容易。如果对象在k秒内从a到B移动了N个像素(比如100),那么从B到C的距离将是N/k

如果你想知道C的位置,那么A,B和C是x轴上的整数,C=B+(B-A)/k

如果要设置运动动画,以便可以在每个时间步长dt(例如0.1秒)更新位置x,然后从v=N/k开始(在B处),并在每个步骤

x += v * dt
v -= N * dt/(2 * k)

(一定要使用浮点数,而不是整数,否则舍入错误会破坏效果。)

谢谢您的回复。但是你能把它翻译成C代码让我更清楚地理解吗?如果您需要任何值,请告诉我,如果不需要,您可以假设。非常感谢你。(:每次运行的加速度都会不同。代码不能每次都“摆弄[a]让它感觉正确”;我们必须解决这个方程。-1你是说“-0.1*v_i”不是测试后应该想到的东西?你是通过测试(“摆弄”)还是理论得出的-1.0*v_i?(应该是-0.5*v_i。)如果通过测试,你是如何决定答案的形式的,kv_i,而不是kv_i^2或kv_i+c?