Math 一些数学和动画

Math 一些数学和动画,math,animation,Math,Animation,我有一种草的质地: 我在2d游戏中使用它。我想通过代码设置动画,而不需要任何预定义的动画 草应该与风相互作用。因此,当风更大时,草应该更多地弯向需要的一侧 我使用正弦函数制作的第一个版本的动画,但这种动画有点难看,因为草的底部像图片的其他部分一样左/右移动。对于正弦曲线,我无法调节图像的弯曲 有什么建议吗?您可以只移动行,例如,从底部开始,每第三行向右移动1px。如何显示纹理?使用广告牌时,您可以操纵广告牌的顶点,甚至可以对广告牌进行三角剖分以获得更多控制。这是通过移动像素可以轻松实现的:

我有一种草的质地:

我在2d游戏中使用它。我想通过代码设置动画,而不需要任何预定义的动画

草应该与风相互作用。因此,当风更大时,草应该更多地弯向需要的一侧

我使用正弦函数制作的第一个版本的动画,但这种动画有点难看,因为草的底部像图片的其他部分一样左/右移动。对于正弦曲线,我无法调节图像的弯曲


有什么建议吗?

您可以只移动行,例如,从底部开始,每第三行向右移动1px。

如何显示纹理?使用广告牌时,您可以操纵广告牌的顶点,甚至可以对广告牌进行三角剖分以获得更多控制。

这是通过移动像素可以轻松实现的:

虽然可能对您不是很有用,但这里有一个Mathematica程序:

f[l_, sh_] := Module[{c = l, k = (Dimensions@l)[[1]]},
  For[i = 1, i <= k, i++,
   c[[i]] = RotateRight[l[[i]], IntegerPart[(k + 1 - i)/sh]]];
  Return[c];]

b = ArrayPad[ImageData@a, {{40}, {40}, {0}}, {1, 1, 1}];
Export["c:\\anim.gif", 
 {Image@b, Image@f[b, 7],
  Image@f[b, 5], Image@f[b, 3],
  Image@f[b, 5], Image@f[b, 7], Image@b}, "DisplayDurations" -> .3]

语言并不重要。结果是。谢谢,我来看看这个。@belisarius我喜欢Mathematica。我得到它是为了学习一些东西。第二个代码的唯一问题是如何加载
变量(图)。我试过:
a=Image['path in system.png']
a=Imprt['path.png']
。但是第一次我有很多错误,第二次我有一个静态图像,但仍然有很多错误。@Ockonal将您的图像复制到剪贴板,键入Mma“a=,然后粘贴。或与代码最后一行中的a=Import[“c:\\anim.gif”]等效。请参见@Ockonal在Mathematica标签下将其作为问题发布。有一个非常有用的社区肯定会帮助你。我没有在Linux下使用Mma的经验。对不起,对于每个轴,你必须写下两个方程式。Xshade=A*Xmath+B。用于图像上的任意两点,然后求解A和B。这是您的新坐标系
b = Image@ArrayPad[ImageData@a, {{40, 0}, {40}, {0}}, {1, 1, 1}];
f[image_, angleMult_] := ImageForwardTransformation[image, (
    fi = ArcTan[Abs[#[[2]]/(#[[1]] - .5)]];
    fi1 = angleMult fi (#[[1]]^2 + #[[2]]^2)/2;
    {(1/2 - Sin[fi1] #[[2]] - Cos[fi1]/2 + 
       Cos[fi1] #[[1]]), -Sin[fi1]/2 + Sin[fi1] #[[1]] + 
      Cos[fi1] #[[2]]}) &]
t = Table[f[b, x], {x, 0, .2, .02}];
t1 = Reverse@t;
Export["c:\\anim.gif", Join[t, t1], "DisplayDurations" -> .15];
Import["c:\\anim.gif", "Animation"]