Физический движок, являющийся частью Atrium, будет разрабатываться в качестве отдельного проекта - dmech.Исходники доступны на GitHub:
https://github.com/gecko0307/dmech
Физический движок, являющийся частью Atrium, будет разрабатываться в качестве отдельного проекта - dmech.
Физический движок Atrium обзавелся базовой поддержкой сочленений (или ограничений - Constraints) между телами. В данный момент реализован один тип сочленений - шарнир (BallConstraint), который удерживает два тела на определенном расстоянии друг от друга, позволяя им вращаться вокруг заданной точки.import std.stdio;
import dlib.math.dual;
T parabola(T)(T x)
{
return x*x;
}
void main()
{
float x = 1.0f;
Dualf eval = parabola(Dualf(x, 1.0f));
float value = eval.re;
float deriv = eval.du;
writeln(deriv);
}
import dlib.math.dual;
import dlib.math.vector;
import dlib.geometry.bezier;
alias DualVector2f = Vector!(Dualf, 2);
void main()
{
float t = 0.5f;
DualVector2f eval = bezierCurveFunc2D(
DualVector2f(Dualf(0.0f), Dualf(0.0f)),
DualVector2f(Dualf(1.0f), Dualf(1.0f)),
DualVector2f(Dualf(2.0f), Dualf(1.0f)),
DualVector2f(Dualf(3.0f), Dualf(0.0f)),
Dualf(t, 1.0f));
}
Vector2f point = Vector2f(eval.x.re, eval.y.re);
Vector2f tangent = Vector2f(eval.x.du, eval.y.du).normalized;
Таким образом, нехитрая алгебра дуальных чисел позволяет эффективно вычислять производные и векторы касательных, что, несомненно, может найти широкое применение в игровых движках - например, когда необходимо получить вектор скорости объекта, движущегося по некой математически описанной траектории.
Страница проекта:
Состоялся первый нестабильный релиз коллекции библиотек dlib.
Электронно-познавательный журнал "FPS" приглашает к сотрудничеству программистов и художников, специалистов по CG, обработке изображений, моделированию, рендерингу и анимации. Нам нужны авторы обложек, фоновых изображений, рисованных заголовков, иллюстраций, а также статьи и уроки по компьютерной графике. Обращайтесь, пишите, будем рады всем!
Контакты: