-4

有人问我如何写一个函数来在任意两点之间画一条直线。所以我发布了这个问题和答案,为他们提供解决方案。
我已经解释了用户的问题。

如果我有两点:

(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
4

1 回答 1

3

您需要使用以下公式来找到两点之间的直线。

(y-y0)/(y1-y0)=(x-x0)/(x1-x0)

在我的代码中,我使用x1,y1x2,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)
于 2013-07-21T15:41:33.127 回答