前提・実現したいこと
プログラミング初学者です.リサージュ図形の位相や周波数などをキー入力で変化させたいのですがうまくいきません.どなたか教えていたけるとありがたいです.
発生している問題・エラーメッセージ
リサージュ図形は描写されるのですががキー入力を受け付けません
該当のソースコード
processing
1int pointCount = 1000; 2PVector[] lissajousPoints; 3int freqX = 4; 4int freqY = 7; 5float phi = 15; 6float x,y; 7 8int modFreqX = 3; 9int modFreqY = 2; 10 11float lineWeight = 0.1; 12float lineColor; 13int lineAlpha = 50; 14 15int connectionRadius = 100; 16int connecionRamp = 6; 17 18void setup() { 19 size(800,800); 20 smooth(); 21 lissajousPoints = new PVector[pointCount+1]; 22 lineColor = color(0,50); 23 24 calculateLissajposPoints(); 25 drawLissajous(); 26} 27 28void calculateLissajposPoints() { 29 for (int i = 0; i <= pointCount; i++) { 30 float angle = map(i, 0, pointCount, 0, TAU); 31 x = sin(angle * freqX + radians(phi)) * cos(angle * modFreqX); 32 y = sin(angle * freqY) * cos(angle * modFreqY); 33 x *= width/2 - 30; 34 y *= height/2 - 30; 35 36 lissajousPoints[i] = new PVector(x,y); 37 } 38} 39 40void drawLissajous() { 41 background(255); 42 strokeWeight(lineWeight); 43 pushMatrix(); 44 translate(width/2,height/2); 45 46 for (int i1 = 0; i1 < pointCount; i1++) { 47 for (int i2 = 0; i2 < i1; i2++) { 48 float d = dist(lissajousPoints[i1].x,lissajousPoints[i1].y,lissajousPoints[i2].x,lissajousPoints[i2].y); 49 float a = pow(1 / (d / connectionRadius), 6); 50 if (d <= connectionRadius) { 51 line(lissajousPoints[i1].x,lissajousPoints[i1].y,lissajousPoints[i2].x,lissajousPoints[i2].y); 52 } 53 } 54 } 55 popMatrix(); 56} 57 58void keyPressed() { 59 if (key == 's' || key == 'S') { saveFrame("_##.png"); } 60 if (key == '1') { freqX--; } 61 if (key == '2') { 62 freqX++; 63 freqX = max(freqX,1); 64 } 65 if (key == '3') { freqY--; } 66 if (key == '4') { 67 freqY++; 68 freqY = max(freqY,1); 69 } 70 if (keyCode == LEFT) {phi -= 15; } 71 if (keyCode == RIGHT) { phi += 15; } 72 73 if (key == '7') { modFreqX--; } 74 if (key == '8') { 75 modFreqX++; 76 modFreqX = max(modFreqX, 1); 77 } 78 if (key == '9') { modFreqY--; } 79 if (key == '0') { 80 modFreqY++; 81 modFreqY = max(modFreqY, 1); 82 } 83 println("freqX:" + freqX + ",freqY:" + freqY + ",phi:" + phi + ",modFreqX:" + modFreqX + ",modFreqY:" + modFreqY); 84}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/12 09:12