私は最近、処理とアニメーションに手を出し始めたばかりです...とても新しいです! また...私のトリガーは最悪です。
私はこのコードを持っています:
float ballPosX = 10;
float ballPosY = 10;
float boxPosX = 400;
float boxPosY = 500;
void setup() {
size(800,600);
background(0);
}
void draw() {
fill(0, 20);
rect(0, 0, width, height);
fill(0, 240, 0);
rect(boxPosX, boxPosY, 50, 50);
fill(240, 0, 0);
smooth();
ellipse(ballPosX, ballPosY, 15, 15);
// stroke(0,0,240);
// line(ballPosX, ballPosY, boxPosX, boxPosY);
// line(ballPosX, ballPosY, 10, boxPosY);
// line(10, boxPosY, boxPosX, boxPosY);
noStroke();
//work out a2 + b2 = c2 - Pythagoras
float a = boxPosX - ballPosX;
float b = boxPosY - ballPosY;
float c = sqrt(sq(a) + sq(b));
println("a: " + a + " b: " + b + " c: " + c);
//now get the angles
float C = radians(90.0);
float B = asin(a/c);
float A = radians(180) - C - B;
println("A: " + degrees(A));
println("B: " + degrees(B));
println("C: " + degrees(C));
//lets say b is 10, work out a
//we have the angles...
b = 10;
float sinA = sin(A);
float sinB = sin(B);
a = sinA/(sinB/b);
fill(240, 0, 0);
smooth();
ellipse(b, a, 15, 15);
for(int i = 0; i < 160; i++) {
b += 5;
sinA = sin(A);
sinB = sin(B);
a = sinA/(sinB/b);
println("new a:" + a);
fill(240, 0, 0);
smooth();
ellipse(b, a, 15, 15);
}
}
基本的に、ポイントx1、y1に楕円があり、ポイントx2、y2に長方形があります。直角三角形を使用して、c ラインに沿って楕円を描きます。上記のコードは機能します...多かれ少なかれ。
アイデアは、x=0 から始まる多数の楕円を隣り合わせに配置し、同じ方法を使用してすべての楕円を長方形に収束させることです。
これが理にかなっていることを願っています!どんな助けでも大歓迎です!