如何从周边连接两个椭圆?

时间:2012-12-22 16:27:21

标签: processing

我正在练习使用矢量。在这个草图中,我绘制了一条连接两个椭圆中心的线。如何缩短线条以使其接触每个椭圆的周长(而不是中心)?

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);
}

1 个答案:

答案 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)