我在box2d世界中有一系列物体。这些机构被链接在一起。我想在按下鼠标时沿着身体创建一个正弦波。我只希望这个波发生一次,它应该以相同的幅度沿着身体的长度继续,直到它结束,然后停止,直到再次按下鼠标。使用Processing和box2d创建单波
目前,我有这样的:
float angle = 0.0;
float scalar = 1.2;
float speed = 0.01;
void mousePressed() {
for (int j = 0; j < 91; j++) {
float x = sin(j+angle)*scalar;
float y = 0;
Vec2 mov2 = new Vec2(x,y);
bridge.particles.get(j).body.setLinearVelocity(mov2);
angle+=speed;
}
}
然而,这将导致机构成为一个连续波刚刚向外扩展如下(只是在一瞬间尝试这种对左侧股):
如何创建一个向下移动的单波形?
使用从@dfour修改后的代码,我用:
void mousePressed() {
int frequency = 10; // sine frequency (larger for longer wave)
double fullCircle = Math.toRadians(180); // get 1 full iteration of a circle in radians;
float x=0;
float y=0;
for(int i = 0; i < 100 ; i++){
if(i > fullCircle*frequency){
// after first wave so output 0
//System.out.println(0);
}else{
// part of first sinewave so output wave value
x =(float)Math.sin(i/frequency);
Vec2 mov2 = new Vec2(x,y);
print(" x: "+x);
System.out.println(Math.sin(i/frequency));
bridge.particles.get(i).body.setLinearVelocity(mov2);
}
}
}
只是要清楚:[Processing!= Java](https://meta.stackoverflow.com/questions/321127/processing-java) – Pshemo
当然这就是为什么两个标签都在。但问题可能也是一个java一个 –
如果你想自己控制身体,是否有你使用box2d的原因?如果你知道你想要的身体是什么,为什么不把它们绘制在那里而不是依靠物理引擎? –