我一直被困在這個惱人的問題上。我試圖編寫代碼,以便我可以縮放線段,這意味着如果我按比例縮放的數量(例如)爲2,並且當前線的長度爲33,則會將整個長度增加到67.意義我加了一半到開始,一半加到最後... 新的前面--- a -------- b ---新的背...但是我很難將它翻譯成代碼。下面是代碼的一個例子。該端點方法應該在一個元組返回終點,如(P1,P2)如何在兩個方向上延伸線段
from point import Point
import math
class Line:
def __init__(self,aPoint=Point(), bPoint=Point()):
self.firstPoint = aPoint
self.secondPoint = bPoint
def getEndPoints(self):
return (self.firstPoint, self.secondPoint)
def scale(self,factor):
if factor < 1:
x1 = self.firstPoint.x +(self.secondPoint.x - self.firstPoint.x) * (factor)
x2 = self.secondPoint.x +(self.firstPoint.x - self.secondPoint.x) * (factor)
print(str(x1))
y1 = self.firstPoint.y +(self.secondPoint.y - self.firstPoint.y) * (factor)
y2 = self.secondPoint.y +(self.firstPoint.y - self.secondPoint.y) * (factor)
else:
x1 = -(self.firstPoint.x +(self.secondPoint.x - self.firstPoint.x) * (factor))
x2 = -(self.secondPoint.x +(self.firstPoint.x - self.secondPoint.x) * (factor))
y1 = self.firstPoint.y +(self.secondPoint.y - self.firstPoint.y) * (factor)
y2 = self.secondPoint.y +(self.firstPoint.y - self.secondPoint.y) * (factor)
self.firstPoint = Point(x1, y1)
self.secondPoint = Point(x2, y2)
if __name__ == "__main__":
p1 = Point(5,5)
p2 = Point(20,35)
l1 = Line(p1,p2)
l1.scale(2)
p5 = Point(-2.5,-10)
p6 = Point(27.5,50)
assert l1.getEndPoints() == (p5,p6)
這些測試不能正常工作,但以上是..我得到一個(5.0,5.0)和b(20.0,35.0)
l1.scale(0.5)
p5 = Point(8.75,12.5)
p6 = Point(16.25,27.5)
class Point:
'''Point class represents and manipulates
x,y coordinates.'''
def __init__(self,x=0,y=0):
'''Create a new point with default
x,y coordinates at 0,0.'''
self.x = x
self.y = y
def distanceTo(self,aPoint):
return ((self.x-aPoint.x) ** 2 + (self.y-aPoint.y) ** 2)** .5
你的方法'scale'在給定的線課程不包括在內?請告訴我們你到目前爲止做了什麼 – Johan 2015-03-03 06:47:02
我不認爲你們得到了我所要求的。我想用點a(5,5)指向(20,35)並將其向外縮放2.這意味着我想將點a轉變爲(-2.5,-10),點b (27.5,50)。在長度方面,我想分別把33.54變成67.08,但我不想只是延長b,我也想延長一下。 – Crunch 2015-03-03 07:16:24
嗯,就是這樣,我的答案是...... – 2015-03-03 07:22:30