Make sure you have at least GHC 7.4.2, then just do the usual cabal-dev routine:
$ cabal-dev install-deps
$ cabal-dev configure
$ cabal-dev build
And please, please, PLEASE, follow the style guide!
A ray tracer written in Haskell
License: MIT License
Make sure you have at least GHC 7.4.2, then just do the usual cabal-dev routine:
$ cabal-dev install-deps
$ cabal-dev configure
$ cabal-dev build
And please, please, PLEASE, follow the style guide!
Создание базы материалов (лучше честно своровать)
Параметры материалов (все кроме последнего - цвета, Phong - Double)
Загрузка моделей OBJ/3DS в сцену в виде набора треугольников.
Объекты:
Функции работы с объектами:
Параметры камеры:
Параметры экрана:
Функция получения луча из заданной точки экрана
Хорошо бы знать, какие фичи мы хотим от трейсера и в каком порядке их реализовывать. Можно ещё для фичей создать список литературы, где можно прочитать, как её реализовывать.
Добавление цветов и операций с ними на подобии векторов.
Нормализация цветов.
Загрузка процедурных и растровых структур, назначение текстур объектам.
Добавление источников света в сцену.
Добавление расчета освещенности объекта в сцену, основываясь на параметрах материалов объектов.
Добавление точечных, направленных и протяженных источников света.
Параметры:
Функция определения влияния данного источника на освещение точки (double).
Надо побить на модули исходя из логики мира =)
Я вижу следующие компоненты:
Ещё, Colour должен импортировать не Vec, а Vec.Internal
Я сейчас всё это вижу примерно так:
/bin
Ray.hs
/src
Data/
Vec.Internal.hs (dec vec?)
Vec.hs
Colour.hs
Graphics/
Data/
Shape/
Triangle.hs
Sphere.hs
Shape.hs (пусть этот тип экспортирует и конкретные шейпы?)
Material.hs
Scene.hs (камера тут же -- по отдельности они не оч нужны)
Tracer.hs (Хорошо бы разбить и это, но, с другой стороны, не хорошо)
Text/
Obj.hs
Mtl.hs
Модуль работы с векторами. Все стандартные операции:
==, /=, +, -, *, /, &, %, normal, length
(/, * - покомпонентные операции)
Лучи: пара векторов (начало, направление)
Получение точки луча на указанном расстоянии
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.