※ 引述《ericleeyusia (Edward)》之铭言:
: 开发平台(Platform): (Ex: Win10, Linux, ...)
: win10
: 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
: c++
: 额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
: 问题(Question):
: 转成正空心三角形
: 喂入的资料(Input):
: 预期的正确结果(Expected Output):
: 错误结果(Wrong Output):
: 程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
正三角形有点麻烦, 不过如果有用过小画家的话, 应该不难实作出
来. 想像命令列视窗是张画布, 上面由一格格的像素 (半角字符占
的空间) 所组成. 如果以全角字符的长宽当作单位, 那我们可以为
每个像素各自指派唯一的座标 (左上角点为准):
0.5 1 x
┼──┬──┬──→
│ │ │
│ 半 │ 半 │
│ │ │
1├──┴──┘
│
y↓
第一个半角字符的座标为 (0, 0), 第二个则为 (0.5, 0)
所以我们可以将问题转换成:
列举出画面里所有的像素座标, 并且计算这些座标是否在
三角形的边上, 如果不在边上, 印出半角空白; 否则印出
指定的半角字符
如此只要列举座标的方法正确, 剩下的就是高中数学了, 以下是印
出六芒星的范例给你参考:
范例 (六芒星): https://bit.ly/2UjH3fP
条件改一下想画 sine wave 也是可以的
范例 (正弦): https://bit.ly/2HPtjnc