在两点之间画一条直线

时间:2013-07-21 15:41:33

标签: python line coordinates jython bresenham

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

如果我有两点:

(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

1 个答案:

答案 0 :(得分:2)

您需要使用以下公式to find the line between two points.

  

(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)
相关问题