2012-12-22 70 views
1

我正在練習使用矢量。在這個草圖中,我畫了一條連接兩個橢圓中心的線。我怎樣才能縮短這條線,使它接觸到每個橢圓的邊界(而不是中心)?如何從周邊連接兩個橢圓?

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

回答

2

首先,您需要計算線將穿過圓的邊緣的點。幸運的是,這是很容易的:(請注意,我不知道處理,所以把它當作僞代碼)

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)