📄 spring.pde
字号:
/** * Spring. * * Click, drag, and release the horizontal bar to start the spring. */ // Spring drawing constants for top barint s_height = 16; // Heightint left = 50; // Left positionint right = 150; // Right positionint max = 100; // Maximum Y valueint min = 20; // Minimum Y valueboolean over = false; // If mouse overboolean move = false; // If mouse down and over// Spring simulation constantsfloat M = 0.8; // Massfloat K = 0.2; // Spring constantfloat D = 0.92; // Dampingfloat R = 60; // Rest position// Spring simulation variablesfloat ps = 60.0; // Positionfloat vs = 0.0; // Velocityfloat as = 0; // Accelerationfloat f = 0; // Forcevoid setup() { size(200, 200); rectMode(CORNERS); noStroke();}void draw() { background(102); updateSpring(); drawSpring();}void drawSpring() { // Draw base fill(0.2); float b_width = 0.5 * ps + -8; rect(width/2 - b_width, ps + s_height, width/2 + b_width, 150); // Set color and draw top bar if(over || move) { fill(255); } else { fill(204); } rect(left, ps, right, ps + s_height);}void updateSpring(){ // Update the spring position if(!move) { f = -K * (ps - R); // f=-ky as = f / M; // Set the acceleration, f=ma == a=f/m vs = D * (vs + as); // Set the velocity ps = ps + vs; // Updated position } if(abs(vs) < 0.1) { vs = 0.0; } // Test if mouse is over the top bar if(mouseX > left && mouseX < right && mouseY > ps && mouseY < ps + s_height) { over = true; } else { over = false; } // Set and constrain the position of top bar if(move) { ps = mouseY - s_height/2; if (ps < min) { ps = min; } if (ps > max) { ps = max; } }}void mousePressed() { if(over) { move = true; }}void mouseReleased(){ move = false;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -