【问题标题】:Cast from double to int without truncating to zero从 double 转换为 int 而不截断为零
【发布时间】:2024-01-18 11:03:01
【问题描述】:

我正在创建一个光线追踪器,我正在寻找我的形状(球体)的环境、漫反射和镜面反射强度。当我尝试将这些小于 1 的值转换为整数值时,它们会被截断回零。

int red = Color.getRed() * (int)totalIntensity;
        int green = Color.getGreen() * (int)totalIntensity;
        int blue = Color.getBlue() * (int)totalIntensity;
return new Color(red, green, blue);

问题是我需要红色、绿色和蓝色的值是整数,这样我才能返回新颜色。无论如何我可以在不将所有总强度值都归零的情况下做到这一点吗?

【问题讨论】:

  • 乘法后转换? (int)(Color.getRed() * totalIntensity)

标签: java casting integer rgb raytracing


【解决方案1】:

我相信int red = (int) (Color.getRed() * totalIntensity); 应该可以胜任。

【讨论】:

  • 请随时将此标记为已批准的答案:)