2017-06-30 3 views
0

Ich habe eine Klasse repräsentiert Linien auf einem zweidimensionalen Raum:Neue Schnüre für größere Linie

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

Ich mag eine Methode, eine Linie größer vom Zentrum zu machen.

Zum Beispiel, wenn ich etwas parallel zu X zu erstellen:

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

und rufen Sie dann Methode makeBigger:

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

ich neue Linie erhalten möchten (oder alt ist Anfang/Ende ändern Eigenschaften) mit Start = (1,1)/Ende = (1, 12), so wird seine Länge 11.

Bitte beachten Sie, dass ich auch Winkel berücksichtigen möchte.

Antwort

1

Soweit ich verstehe, makeBigger(4) bezeichnet, als Sie einfache Proportionalität So Länge von 4. verwenden erhöhen wollen

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