有人问我如何编写一个函数来绘制任意两点之间的直线。所以我发布了这个问题和答案,为他们提供解决方案。
我已经解释了用户的问题。
如果我有两点:
(x1,y1) (x2,y2)
我可以编写代码来拍摄现有照片并创建一个新照片。我知道如何复制图片。我无法弄清楚如何找到线上的点。
def straightLine(picture):
height = getHeight(picture)
width = getWidth(picture)
newPicture = makeEmptyPicture(width, height)
x1=//some value
y1=//some value
x2=//some value
y2=//some value
for y in range(0, height):
for x in range(0, width):
pxl = getPixel(picture,x,y)
newPxl = getPixel(picture,x,y)
color = getColor(pxl)
setColor(newPxl,color)
return picture
答案 0 :(得分:2)
您需要使用以下公式to find the line between two points.
(Y-Y0)/(Y1-Y0)=(X-X0)/(X1-X0)
在我的代码中,我使用x1,y1
和x2,y2
来代表用户输入的第一个和第二个点。
操纵上述等式求解x如下:
def drawAnyLine(p):
w= getWidth(p)
h= getHeight(p)
newPic= makeEmptyPicture(w,h)
x1=requestIntegerInRange("Enter x1 between 1 and " , 1,w)
y1=requestIntegerInRange("Enter y1 between 1 and " , 1,h)
x2=requestIntegerInRange ("Enter x2 between 1 and ", 1, w)
y2=requestIntegerInRange("Enter y2 between 1 and ", 1, h)
for y in range (y1,y2):
for x in range (x1,x2):
x = (y-y1)*(x2-x1)/(y2-y1) +x1
pxl = getPixel(p, x, y)
newPxl= getPixel(newPic,x,y)
color = getColor(pxl)
setColor ( newPxl, color)
return (newPic)