【问题标题】:Drawing a line with asterisks on the console在控制台上画一条带星号的线
【发布时间】:2010-12-24 09:47:31
【问题描述】:

如何在控制台上画一条带星号的线?我会接受用户的坐标 (x1,y1), (x2,y2)。

【问题讨论】:

  • 可以用DDA算法画线吗??
  • 它是“星号”。你试过什么?这是作业吗?

标签: java drawing


【解决方案1】:

假设控制台功能合理,您可以将Horizontal and Vertical Position (HPV) 的ANSI 转义码与Bresenham's line drawing algorithm 结合使用。

附录:因为这是家庭作业,Bresenham's algorithm 是多余的。因为这是一个常见的任务,你可以看看others have approached the problem。此外,您可以编辑您的问题以包含您的代码和有关作业的其他详细信息。

【讨论】:

  • 我可以用for循环画吗?当然会有错误,但我可以找到一个近似的三角形
  • 我不明白为什么不这样做,但为什么要这么麻烦呢?
  • 老师说很难画出精确的三角形,但是你可以找到像三角形这样的形状,用for循环。
  • 这是一个很受欢迎的任务;我上面已经详细说明了。
【解决方案2】:

我将首先编写一个在给定 x 坐标处打印出星星的方法。比如给定一个 x 坐标 7,打印出 6 个空格,然后是一个星号。

然后我会确定斜率 (y2-y1)/(x2-x1) 确保 x1 是具有较高 y 值的点(在较高的线上,但这可能是较低的实际值)。然后通过循环在每次迭代中按斜率递增 x 值

for(i = y1; i<=y2;i++)
 asteriskprintfunction(x1+(slope*i));

应该这样做。

编辑: 不小心用 x 值创建了循环,因为你想逐行进行,你应该使用 y 值。还阐明了如何选择哪个点是(x1,y1)

【讨论】:

  • 在我看来,这很有意义,但如果这令人困惑,请告诉我(另外,我不想放弃太多,因为这是家庭作业)
猜你喜欢
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-25
相关资源
最近更新 更多