【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

用 C#和 LINQ 开发 Ray Tracer

  • 2007-04-22
  • 本文字数:332 字

    阅读完需:约 1 分钟

.NET 社区里的活跃分子 Luke H. 在一篇文章中展示了如何在 400 行的代码中,用 C# 3 和 LINQ 编写一个 Ray Tracer。

Ray Trace 是在二维表面上,比如计算机屏幕或者打印的纸张上,渲染 3D 图像的一种方法。它的做法通常是从一个 2D 表面的像素跟踪一个虚拟的光束到它第一次触到的三维物体。根据所触到的物体的纹理,它会继续跟踪,直到到达光源。

Luke 使用 LINQ 简化了分类(sorting)和过滤(filtering)集合,以及计算交集时的循环的代码。虽然对象和集合不会明显地改变例子中的代码,代码中还是对它们进行了初始化。

代码之所以得到简化和减少的真正原因是,Luke 用 Lambda 表达式(expression)代替了子类(subclass)和重载了委托(delegate)。

Ray Tracer 的相关解释和本文提到的源代码可以在 Luke 的博客中得到。

2007-04-22 22:55692

评论

发布
暂无评论
发现更多内容

机器学习基石第五节 学习笔记

半亩房顶

Machine Learning

机器学习基石第四节 学习笔记

半亩房顶

Machine Learning

JVM系列:通过一个例子分析JIT的汇编代码

简爱W

来了来了!Docker安装及运行原理

程序员的时光

Java Docker 微服务

Go: 并发访问 Map — Part III

陈思敏捷

并发 map sync Go 语言

机器学习基石第三节 学习笔记

半亩房顶

Machine Learning

别在网上乱找代码了,找了一段代码突然爆了!!!

导导

Java

架构师训练营第九周学习总结

张明森

webRTC框架下的视频主动丢帧

fumingwang

音视频 WebRTC

最牛逼的Java框架,没有之一

我是苞谷

这16道Redis最常见面试问题,你能回答上来几个?

火羊哥

Java

【面试必问】Spring中的事务管理详解

只喝纯牛奶

30岁的二三事

大唐小生

总结 个人感悟

密码朋克的社会实验(三):比特币发明了什么

腾讯安全云鼎实验室

比特币 区块链 密码学

我收集的 3 个企业经营“失败”案例

霍太稳@极客邦科技

dubbo-go 中使用 sentinel

apache/dubbo-go

dubbo sentinel Go 语言

格一格你的情欲念

王进行

秒杀系统

俊俊哥

秒杀

机器学习基石第一节 学习笔记

半亩房顶

Machine Learning

【写作群星榜】7.24~7.31 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

新生必备清单:不想成为虚度青春的“小透明”,手机应该怎样选?

脑极体

什么是算法的大O表示法

码农神说

算法 时间复杂度 Java算法 大O

一年多远程工作经验,说说真实的感受

盛安德软件

数据结构与算法之排序

shirley

排序算法

如何进行需求梳理及埋点方案设计

易观大数据

职场求生攻略答疑篇之 2 —— 无所适从的向上沟通

臧萌

Java七种排序算法以及实现

狸猫换太子

Java 排序算法 实现

小伙伴想写个 IDEA 插件么?这些 API 了解一下!

程序员小航

IDEA idea插件 教程 API IntelliJ IDEA

机器学习基石第二节 学习笔记

半亩房顶

Machine Learning

JVM参数手册

Rayjun

JVM GC

零代码可视化开发平台iVX是什么?

代码制造者

编程语言 可视化 零代码 iVX

用C#和LINQ开发Ray Tracer_.NET_Jonathan Allen_InfoQ精选文章