【发布时间】:2014-04-16 22:25:11
【问题描述】:
我正在尝试在 rust 中重新实现 business card ray tracer 以获得乐趣和利润。据我所知,所有逻辑都已到位,但对于我的一生,我无法弄清楚如何正确地将浮点值转换为 ppm 文件格式所期望的 RGB 字节。在原始代码(C++)中是这样的:
printf("%c%c%c",(int)p.x,(int)p.y,(int)p.z);
其中p 是一个 3-d 浮点向量,表示 RGB 值。我对print! 的运气不太好,所以经过多次调整后,我将等效表达式写为:
let mut out = io::stdout();
out.write(&[(p.x as u8),(p.x as u8),(p.x as u8)]);
但是,输出很差(如果你真的想要,我可以发布它,但只要说正确的输出有很多不可打印的字符就足够了,而我的版本是完全可打印的)。老实说,我不理解这两种语言的类型转换的细微差别。有人愿意帮忙吗?
编辑: full source(注意我使用浮点数作为矢量属性)
【问题讨论】:
-
而不是
printf("%d%d%d",(int)p.x,(int)p.y,(int)p.z);??也相关(特别是对于 c++):stackoverflow.com/questions/19562103/…