最近、Processing を使用して点から振り子を作成するというアイデアを思いつきましたが、少し学習しただけで簡単に解決できました。
int contador = 0;
int curvatura = 2;
float pendulo;
void setup(){
size(300,300);
}
void draw(){
background(100);
contador = (contador + 1) % 360; //"CONTADOR" GOES FROM 0 TO 359
pendulo = sin(radians(contador))*curvatura; //"PENDULO" EQUALS THE SIN OF CONTADOR, SO IT GOES FROM 1 TO -1 REPEATEDLY, THEN IS MULTIPLIED TO EMPHASIZE OR REDUCE THE CURVATURE OF THE LINE.
tallo(width/2,height/3);
println(pendulo);
}
void tallo (int x, int y){ //THE FUNTION TO DRAW THE DOTTED LINE
pushMatrix();
translate(x,y);
float _y = 0.0;
for(int i = 0; i < 25; i++){ //CREATES THE POINTS SEQUENCE.
ellipse(0,0,5,5);
_y+=5;
rotate(radians(pendulo)); //ROTATE THEM ON EACH ITERATION, THIS MAKES THE SPIRAL.
}
popMatrix();
}
つまり、簡単に言えば、回転関数ですべてのポイント位置を変更する関数であり、位置を変更して振り子の錯覚を作成する本物であるため、原点座標に楕円を描画する必要がありました。
[キャプチャの例、あなたがとても優しいなら、あと 2 ポイント必要です :)]
【攻略例】
【攻略例】
ここまではすべて問題ありませんでした。頂点で作られたパスの楕円を置き換えようとしたときに問題が発生しました。問題は明らかです。すべての頂点が 0,0 座標に沿って移動するため、パスは (視覚的に) 作成されません。
したがって、パスを可能にするためには、各頂点の絶対値が必要です。質問があります: どうすればそれらを入手できますか?
私がしなければならないことは、変換関数を削除し、X および Y 位置の変数を作成し、for 内でそれらを更新することですが、その後はどうすればよいでしょうか? これが数学の問題であることを明確にしたのはそのためです。パスとその曲率を可能にするために、X 変数と Y 変数にどの操作を追加する必要がありますか?
void tallo (int x, int y){
pushMatrix();
translate(x,y);
//NOW WE START WITH THE CHANGES. LET'S DECLARE THE VARIABLES FOR THE COORDINATES
float _x = 0.0;
float _y = 0.0;
beginShape();
for(int i = 0; i < 25; i++){ //CREATES THE DOTS.
vertex(_x,_y); //CHANGING TO VERTICES AND CALLING THE NEW VARIABLES, OK.
//rotate(radians(pendulo)); <--- HERE IS MY PROBLEM. HOW DO I CONVERT THIS INTO X AND Y COORDINATES?
//_x = _x + ????;
_y = _y + 5 /* + ???? */;
}
endShape();
popMatrix();
}
pendulo の x と y の値は for の反復ごとに変化することに注意する必要があります。毎回同じ量を追加する必要はありません。加算はプログレッシブでなければなりません。そうしないと、曲率を強調する曲線ではなく、回転する直線が表示されます (curvatura の値を 20 よりも大きくすると、螺旋に気付くでしょう)。
したがって、座標を回転させることはそれに対する優れた解決策でした。今では、らせんの x 座標と y 座標の数学的解を考えるのは一種の混乱です。私のセカンダリの知識では十分ではありません。この進行を行うには、 for 内に別の変数を作成する必要があることはわかっていますが、どのような操作が必要ですか?
数学、教えていただけると嬉しいです