【问题标题】:Straight Line Equation between two points两点之间的直线方程
【发布时间】:2011-03-03 14:59:24
【问题描述】:

我需要画出连接两点的线。

我正在使用 Java。我收到两个点作为参数,我必须计算它们之间的直线是否在黑色图形内。

我使用直线方程开发了自己的解决方案,但我的结果与使用“专业”程序(例如 GIMP 甚至 MS Paint)不同。

这是我想要的示例:

alt text http://img411.imageshack.us/img411/788/img1q.png

但我的算法是这样做的:

alt text http://img267.imageshack.us/img267/1908/img2d.png

*绿点不在图中,这是不可能的。

有什么想法吗?任何人都知道在“专业”应用程序中为此使用了哪些代码?

谢谢! 丹尼尔。

编辑:图片

【问题讨论】:

  • 丹尼尔。这个问题真的没法回答。你没有给我们足够的信息,这个问题可能会被关闭。为了阻止这种情况发生,您能否编辑您的问题并告诉我们您正在使用什么技术(操作系统和开发工具),并确切地告诉我们您想要达到的目标(例如,您如何定义要绘制的线?作为点列表?)
  • 另外,你用的是什么算法?

标签: line paint points


【解决方案1】:

看起来您正在截断而不是四舍五入到最近的像素。在那些小的黑色墨水斑点上很难看到。可以发一下代码吗?

【讨论】:

  • 确实如此。看起来您的算法期望有 2 个线段而不是 3 个线段。你的 dx/dy 对吗? (假设你是四舍五入,而不是截断)。
  • 哇!彼得你是个天才!!!我使用的是整数,这就是问题所在!谢谢!! :D
【解决方案2】:

直线通常使用 Bresenham 算法绘制。我没有明白你关于绿点不在图中的观点 - 剪裁是为了不浪费时间在可见区域之外绘制。

【讨论】:

    【解决方案3】:
    【解决方案4】:

    “专业”程序最有可能使用Bresenham's line algorithm。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多