李萨如曲线

有没有对示波器上变化曲线产生过兴趣,它叫做李萨如曲线:

数学上,利萨茹(Lissajous)曲线(又称利萨茹图形、李萨如图形或鲍迪奇(Bowditch)曲线)是两个沿着互相垂直方向的正弦振动的合成的轨迹

(参见http://zh.wikipedia.org/wiki/%E5%88%A9%E8%90%A8%E8%8C%B9%E6%9B%B2%E7%BA%BF

代码

//int n=4;
int p=17;
int q=15;
   4:  
int a = displayWidth /2 ;
//displayHeight /2 ;
   7:  
int radius = 2;
//PI / 2 / p;
float miu_max = TWO_PI;
float miu_delta = miu_max / 100;
  12:  
void setup() {
  14:   size(displayWidth, displayHeight);
  15:   background(0);
  16:   frameRate(2);
  17:   
  18:   a = displayWidth / 5 ;
  19:   b = a ;
  20: }
  21:  
void draw() {  
  23:  
  24:     miu += miu_delta;
if (miu >= miu_max)
  26:         miu = 0;
//    if (miu >= miu_max)
//    {
//        miu_delta = -miu_delta;
//        miu += miu_delta;
//    }
//    else if (miu < 0)
//    {
//        miu_delta = -miu_delta;
//        miu += miu_delta;
//    }
  37:     
  38:     fill(0,0,0,250);
  39:     rect(-1,-1, displayWidth+1, displayHeight+1);
  40:     
int last_x = -1;
int last_y = -1;
  43:     
float theta=0;theta<TWO_PI;theta+=TWO_PI/360)
  45:     {
int) (a * sin(p * theta)) + displayWidth /2;
int) (b * sin(q * theta + (miu))) + displayHeight /2;
  48:         
  49:         colorMode(HSB, 255);
  50:         stroke(90, 255, 255);
  51:         fill(90, 255, 255);
  52:         
if (last_x != -1 >> last_y != -1)
  54:         {
  55:             line(last_x, last_y, x, y);
  56:             line(last_x-1, last_y, x-1, y);
  57:         }
  58:         
  59:         last_x = x;
  60:         last_y = y;
  61:  
//ellipse(x, y, radius, radius);
  63:     }
  64:     
  65: }

相关文章:

  • 2021-04-24
  • 2021-11-17
  • 2021-10-17
  • 2021-12-14
  • 2022-12-23
  • 2021-09-03
  • 2022-12-23
  • 2021-09-02
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-04
  • 2021-07-20
  • 2021-06-11
  • 2021-05-19
  • 2022-12-23
相关资源
相似解决方案