2017-06-30 1 views
0
ligne

I ont une ligne représentant la classe sur l'espace à deux dimensions:Nouveaux câbles pour plus

class Line { 
    Point start; 
    Point end; 

    Float length; // calculated property, something like sqrt(pow(end.x - start.x, 2) + pow(end.y - start.y, 2)) 
} 

Je veux une méthode pour faire une ligne plus du centre.

Par exemple, si je crée un certain parallèle à X:

Point start = Point(1, 3) 
Point end = Point(1, 10) 
Line newLine = Line(start, end) // newLine.length here is 7 

puis appeler la méthode makeBigger:

newLine.makeBigger(4); // pass number of points here 

Je souhaite recevoir une nouvelle ligne (ou modifier début/fin de vieux propriétés) avec start = (1,1)/end = (1, 12), sa longueur devient 11.

Veuillez noter que je veux aussi considérer les angles.

Répondre

1

Pour autant que je comprends, makeBigger(4) indique que vous voulez augmenter la longueur de 4. Il faut donc utiliser simple proportionnalité

newlength = length + increasevalue 

dx = (end.x - start.x)/2 
mx = (end.x + start.x)/2 
newstart.x = mx - dx * newlength/length 
newend.x = mx + dx * newlength/length 
and similar for y