【发布时间】:2010-12-24 09:47:31
【问题描述】:
如何在控制台上画一条带星号的线?我会接受用户的坐标 (x1,y1), (x2,y2)。
【问题讨论】:
-
可以用DDA算法画线吗??
-
它是“星号”。你试过什么?这是作业吗?
如何在控制台上画一条带星号的线?我会接受用户的坐标 (x1,y1), (x2,y2)。
【问题讨论】:
假设控制台功能合理,您可以将Horizontal and Vertical Position (HPV) 的ANSI 转义码与Bresenham's line drawing algorithm 结合使用。
附录:因为这是家庭作业,Bresenham's algorithm 是多余的。因为这是一个常见的任务,你可以看看others have approached the problem。此外,您可以编辑您的问题以包含您的代码和有关作业的其他详细信息。
【讨论】:
我将首先编写一个在给定 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)
【讨论】: