云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

数据库服务器_博兴网站建设_0元

小七 141 0

我正在用ABAP写一个光线跟踪器,学习《从地面向上的光线跟踪》一书。光线跟踪器能够创建计算机生成的图像。如果你想知道我在这项工作背后的动机,看看我的第一个博客。在我的第二个博客中,我把第一个C++类转换成了ABAP,这是我的第一个射线追踪器的补丁。在转换的过程中,我设法解决了ABAP的一些语言特性缺陷,例如过载。

在第三篇博客中,我将运行最基本的光线跟踪器。这本书称之为骨架光线跟踪器。

我将解释光线跟踪器背后的基本概念,并给你我的实现中的代码示例来突出这一概念。

我还让你参与我如何努力获得渲染结果显示。

下图让你了解光线投射的工作原理。

亨里克,(2008). 射线追踪图。[在线图片]网址:Wikipedia[22。2017年9月]

在这个阶段,我的光线跟踪器将无法处理灯光、阴影和相机,这些是接下来章节的功能。

在这个博客之后,我将能够从窗口的位置渲染单个对象,这里称为"图像"。

下拉

那么光线跟踪器是如何工作的?这本书把它归结为:

(Kevin Suffen,2007,第46页)

我没有实现2,3,所以我跳过了这些,从根本上简化了9。

给我一个世界,并在此基础上构建东西!

全面实施

我的世界由一个球体组成。壮观的!

完全实现

我将通过定义200×200像素的窗口来观察世界。每个像素的高度和宽度为1个单位。

注意:像素不是点,而是空间中的正方形。它的区域由像素大小*像素大小来定义。

完全实现

下面的代码触发整个渲染过程。

完全实现

现在逐行触发计算。

完全实现

为我构建一条光线,它面向球体(i\u z=-1),并从距离世界原点100个单位的地方开始光线每个像素的中心。

完全实现

t和shade\u rec在这个版本的光线跟踪器中没有使用,但它将在未来的版本中使用。

现在我关心的是,光线是否击中球体(数据(命中))。

完全实现

如果光线击中球体,我会把像素染成红色,或者是黑色。

完全实现

第一次尝试:#-字符

在这一点上,我得到了一个像素颜色,但我该怎么显示呢?

在谷歌上快速搜索后发现,这可能比我预期的要难。

为了验证我的代码是否有价值,消费返利新模式,我转向了"老字号"方法。每当我击中球体时,我会在行/列位置写一个#-字符。

完全实现

然后它显示自己…

…作为一个鸡蛋。

完成渲染

第二次尝试:像素

好的,我的代码似乎可以工作。但是我真的需要能够显示具有特定RGB颜色值的像素。

我没有找到任何可以让我在x和y坐标处放置具有特定颜色的像素的东西。读了一篇旧博客后,我的直觉告诉我,这需要我付出更多的努力。

托马斯荣格为作者的问题提供了一个解决方案,这使我朝着正确的方向前进。

尽管我仍然在寻找一个简单的出路,这使我从两个方面解决了这个问题。我问社区,是否有人还拥有托马斯·荣格(thomasjungs)成熟的位图图像处理课程,他发表了这篇文章,云服务器特价,以回应帮助那个来自上面的家伙。我只希望复制和粘贴我需要的位图部分,大数据信息,并完成它。

当社区正在挖掘他们的SAP墓地,搜索一个10年前的类,我正在阅读如何:

正如托马斯提到的,维基百科有一篇关于位图文件格式的优秀文章,数据和大数据的区别,剖析了所有的部分,比如位图头的结构。这让我想到了我自己的抽象。

完全实现

在阅读了几篇关于如何使用Dynpro显示位图的文章(1、2、3和4)之后,我也能变出一些东西,这让我在显示部门完成了工作。

完全实现

等等…我的第一个渲染图像。

那是一个相当好的时刻对我来说…凌晨2:45?

我编写了粘合代码来编排必要的类,云服务器哪个好,这些类涉及到光线跟踪图像。

同时,我在自己的位图文件格式抽象类(ZCL\U ART\U bitmap)的帮助下,成功地在经典的Dynpro屏幕上显示像素颜色值。

我的光线跟踪器的基础工作正常。我现在可以开始为我的光线跟踪器添加功能了。我想要更多的东西,我会给你更多的东西。菜单上的下一个东西是同时渲染多个对象,也就是更多的球和更多的平面。安德烈