我正在练习使用矢量。在这个草图中,我绘制了一条连接两个椭圆中心的线。如何缩短线条以使其接触每个椭圆的周长(而不是中心)?
PVector v1, v2;
void setup(){
noLoop();
v1 = new PVector(40, 20);
v2 = new PVector(25, 50);
}
void draw(){
ellipse(v1.x, v1.y, 12, 12);
ellipse(v2.x, v2.y, 12, 12);
line(v1.x, v1.y, v2.x, v2.y);
}
答案 0 :(得分:2)
首先,您需要计算线条穿过圆圈边缘的点。幸运的是,这很容易:(注意我不知道Processing,所以将其视为伪代码)
direction = atan2(v2.y-v1.y,v2.x-v1.x)
x1 = v1.x+cos(direction)*radius
y1 = v1.y+sin(direction)*radius
x2 = v2.x-cos(direction)*radius
y2 = v2.y-sin(direction)*radius
然后绘制线(x1,y1,x2,y2)