2017-09-16 58 views
-1

所以我是Java的初学者,最近对使用Processing的基本Applets感兴趣。我试图做一个旋转的螺旋这样的: enter image description here在加工过程中形成旋转螺旋?

我的代码这里一个基本的螺旋:

import processing.core.*; 

public class prac2 extends PApplet{ 
    double i=0;float r=0;int flag=0; 
    int num=1; 
    public void setup(){ 
     frameRate(100); 
     strokeWeight(7); 
     size(1920,1080); 
    } 
    public void draw(){ 

     float x; 
     float y; 
     x=(float)(r*Math.cos(i)+960); 
     y=(float)(r*Math.sin(i)+500); 
     println(i); 
     point(x,y); 
     i=i+(Math.PI)/(180); 
     r=r+(40f/360f); 

    } 
} 

,但我不知道该怎样让它旋转像图像中的想法。 。 有什么建议么??

回答

3

堆栈溢出不是真的为一般的“我该怎么做”类型的问题而设计的。这是针对具体的“我试过X,预计Y,但得到Z”类型的问题。但我会尽力在一般意义上提供帮助。

基本上,创建一个动画,你需要做三件事情:

  • 创建一些变量持有场景的状态。
  • 使用这些变量绘制你的场景的每一帧。
  • 随着时间的推移改变这些变量以使场景发生变化。

无耻的自我推销:我在加工可用的here上写了一个关于动画的教程。

实际上你已经在使用你当前的代码来做这件事了,但是你遇到了一个障碍,因为你实际上谈论了两种不同类型的动画,这些动画之间存在竞争。

我的意思是,看看你的示例动画:螺旋旋转,但请注意,它实际上并没有增长。每次都是一样的旋转,只是旋转。将它与你的螺旋进行比较,螺旋的每一帧都在不断增长。所以,你的第一步是准确地决定你的动画要做什么:它是一个正在增长的螺旋,还是一个旋转的螺旋,或者两者兼而有之?

如果你想让你的螺旋旋转,那么你必须通过调用background()函数作为draw()函数的第一行来清除旧的帧。这意味着你必须重新绘制你的整个螺旋!但你会以旋转的角度画出它。如果随着时间的推移改变角度,那么螺旋会旋转。

您也可以使用createGraphics()函数将您的螺旋一次绘制到缓冲区。然后,您可以每次都将缓冲区绘制到屏幕上,而不是重绘整个螺旋。只需旋转缓冲区即可旋转螺旋。

如果它要同时旋转和成长,那么你会希望所有在转角每一帧结合上面的画一个螺旋式增长到缓冲区,然后绘制缓冲区。