我最近才开始涉足处理和动画……这太新了!还有……我的三角很烂。
我有这个代码:
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 开始彼此相邻,并使用相同的方法让它们都收敛在矩形上。
希望这是有道理的!非常感谢任何帮助!