<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4425172697582224039</id><updated>2012-02-17T09:25:52.865+04:00</updated><category term='графика'/><category term='gpu'/><category term='рейтрейсинг'/><category term='код'/><category term='микрофотография'/><category term='фракталы'/><category term='интерфейс'/><title type='text'>Видеть невидимое</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default?start-index=101&amp;max-results=100'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>129</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1251012401822634619</id><published>2012-02-17T09:25:00.000+04:00</published><updated>2012-02-17T09:25:52.876+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Траверс  бинарного BVH-дерева</title><content type='html'>...или как бродить по бинарному BVH-дереву. Написано коряво и неполно, но работает.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;// hitTris - в результате будет содержать все треугольники сцены&lt;br /&gt;// которые пересекает (true) заданный луч, false - если ничего не пересекает&lt;br /&gt;private bool TraverseBvh(&lt;br /&gt;    BvhNode currentNode,&lt;br /&gt;    Ray ray,&lt;br /&gt;    int depth,&lt;br /&gt;    List&amp;lt;Triangle&amp;gt; hitTris&lt;br /&gt; )&lt;br /&gt;{&lt;br /&gt;    // можно оптимизировать, если обрабатывать границы отсечения&lt;br /&gt;    // (там, где числа -100000.0f)&lt;br /&gt;    if (!Utils.RayBoxIntersect(&lt;br /&gt;            ray,&lt;br /&gt;            currentNode.AABBox,&lt;br /&gt;            -100000.0f,&lt;br /&gt;            100000.0f))&lt;br /&gt;    {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        if (currentNode.IsLeaf)&lt;br /&gt;        {&lt;br /&gt;            maxLeafTris = Math.Max(maxLeafTris, currentNode.TriangleList.Count);&lt;br /&gt;            if (currentNode.TriangleList != null)&lt;br /&gt;            {&lt;br /&gt;                hitTris.AddRange(currentNode.TriangleList);&lt;br /&gt;            }&lt;br /&gt;            return true;&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            bool isHit =&lt;br /&gt;                TraverseBvh(currentNode.LeftNode, ray, depth + 1, hitTris);&lt;br /&gt;            isHit |=&lt;br /&gt;                TraverseBvh(currentNode.RightNode, ray, depth + 1, hitTris);&lt;br /&gt;&lt;br /&gt;            return isHit;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;После траверса мы получим список треугольников, пересекаемые лучом, а точнее, список треугольников, чьи AABB пересекает луч, т. е. сам треугольник может быть и не пересекается и луч проходит где-то совсем рядом. Нужно провести точное измерение с помощью RayTriangleIntersect.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:csharp; highlight: [9]"&gt;// пересекает ли вообще хоть что-то?&lt;br /&gt;TraverseBvh(bvhRootNode, ray, 0, listTri);&lt;br /&gt;&lt;br /&gt;если пересекает&lt;br /&gt;{&lt;br /&gt;    для каждого треугольника в полученном списке&lt;br /&gt;    проверяем пересечение с лучом&lt;br /&gt;    {&lt;br /&gt;        Utils.RayTriangleIntersect(tri, ray, ref oDot);&lt;br /&gt;        // если пересекает, то получаем точку пересечения&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;...но и после такой проверки мы можем получить несколько треугольников. Что с ними делать и как выделить нужный нам - оставляю на домашнюю работу... ну или просто выбрать ближайший к Ray.Origin по направлению Ray.Direction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1251012401822634619?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1251012401822634619/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/bvh_17.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1251012401822634619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1251012401822634619'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/bvh_17.html' title='Траверс  бинарного BVH-дерева'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7214599039104586790</id><published>2012-02-17T09:13:00.001+04:00</published><updated>2012-02-17T09:13:47.773+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Построение бинарного BVH-дерева</title><content type='html'>Описание "что это? и зачем это?" можно прочитать в посте &lt;a href="http://woronoi.blogspot.com/2012/01/blog-post_3370.html"&gt;Стрельба по кубикам&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;// рекурсивное разбиение пространства сцены&lt;br /&gt;public BvhNode GenerateBvhTree(&lt;br /&gt;    AABB currentBBox,&lt;br /&gt;    List&amp;lt;Triangle&amp;gt; plist,&lt;br /&gt;    int depth)&lt;br /&gt;{&lt;br /&gt;    BvhNode node = new BvhNode();&lt;br /&gt;    node.AABBox = currentBBox;&lt;br /&gt;&lt;br /&gt;    if (plist.Count &amp;lt; 2)&lt;br /&gt;    {&lt;br /&gt;        node.TriangleList = plist;&lt;br /&gt;        return node;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    List&amp;lt;Triangle&amp;gt;[] plists = new List&amp;lt;Triangle&amp;gt;[3]{&lt;br /&gt;        new List&amp;lt;Triangle&amp;gt;(plist),&lt;br /&gt;        new List&amp;lt;Triangle&amp;gt;(plist),&lt;br /&gt;        new List&amp;lt;Triangle&amp;gt;(plist)&lt;br /&gt;        };&lt;br /&gt;    SplitData splitData = FindObjectSplit(node.AABBox, plists);&lt;br /&gt;    if (splitData.isDivideNext)&lt;br /&gt;    {&lt;br /&gt;        node.LeftNode = GenerateBvhTree(&lt;br /&gt;            splitData.leftBound,&lt;br /&gt;            plists[splitData.axis].GetRange(&lt;br /&gt;                0,&lt;br /&gt;                splitData.trisLeft),&lt;br /&gt;            depth + 1);&lt;br /&gt;        node.RightNode = GenerateBvhTree(&lt;br /&gt;            splitData.rightBound,&lt;br /&gt;            plists[splitData.axis].GetRange(&lt;br /&gt;                splitData.trisLeft,&lt;br /&gt;                splitData.trisRight),&lt;br /&gt;            depth + 1);&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        node.TriangleList = plist;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return node;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// сортировка по максимальному AABB вдоль требуемой оси&lt;br /&gt;private List&amp;lt;Triangle&amp;gt; SortList(List&amp;lt;Triangle&amp;gt; tris, int dim)&lt;br /&gt;{&lt;br /&gt;    tris.Sort(&lt;br /&gt;        delegate(Triangle t1, Triangle t2)&lt;br /&gt;        {&lt;br /&gt;            if (t1.AABBox.BoundsMax[dim] &amp;lt; t2.AABBox.BoundsMax[dim])&lt;br /&gt;                return -1;&lt;br /&gt;            else&lt;br /&gt;                if (t1.AABBox.BoundsMax[dim] &amp;gt; t2.AABBox.BoundsMax[dim])&lt;br /&gt;                    return 1;&lt;br /&gt;            &lt;br /&gt;            return 0;&lt;br /&gt;        });&lt;br /&gt;    return tris;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private struct SplitData&lt;br /&gt;{&lt;br /&gt;    public float SAH;           // вес&lt;br /&gt;    public int axis;            // ось разбивки&lt;br /&gt;    public int trisLeft;        // кол-во треугольников в левой части&lt;br /&gt;    public int trisRight;       // кол-во треугольников в правой части&lt;br /&gt;    public AABB leftBound;      // AABB левой части&lt;br /&gt;    public AABB rightBound;     // AABB правой части&lt;br /&gt;    public bool isDivideNext;   // нужно ли разбивать далее&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// поиск разбиения&lt;br /&gt;private SplitData FindObjectSplit(&lt;br /&gt;    AABB a_box,&lt;br /&gt;    List&amp;lt;Triangle&amp;gt;[] a_plists)&lt;br /&gt;{&lt;br /&gt;    SplitData splitData = new SplitData();&lt;br /&gt;    float a_boxSAH = a_box.SurfaceArea * a_plists[0].Count;&lt;br /&gt;    splitData.SAH = a_boxSAH;&lt;br /&gt;    splitData.isDivideNext = false;&lt;br /&gt;    splitData.axis = -1;&lt;br /&gt;&lt;br /&gt;    AABB[] rightBounds = new AABB[a_plists[0].Count];&lt;br /&gt;    for (int axis = 0; axis &amp;lt; 3; axis++)&lt;br /&gt;    {&lt;br /&gt;        // sort data according to axis&lt;br /&gt;        List&amp;lt;Triangle&amp;gt; plist = a_plists[axis];&lt;br /&gt;        SortList(plist, axis);&lt;br /&gt;&lt;br /&gt;        // Sweep right to left and determine bounds.&lt;br /&gt;        AABB rightBounds1 = new AABB();&lt;br /&gt;        int c = plist.Count - 1;&lt;br /&gt;        for (int i = c; i &amp;gt; 0; i--)&lt;br /&gt;        {&lt;br /&gt;            rightBounds1.Include(plist[i].AABBox);&lt;br /&gt;            rightBounds[i - 1] = new AABB(rightBounds1);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Sweep left to right and select lowest SAH.&lt;br /&gt;        AABB leftBounds = new AABB();&lt;br /&gt;        for (int i = 1; i &amp;lt; plist.Count; i++)&lt;br /&gt;        {&lt;br /&gt;            leftBounds.Include(plist[i - 1].AABBox);&lt;br /&gt;            float sah = leftBounds.SurfaceArea * i +&lt;br /&gt;                rightBounds[i - 1].SurfaceArea * (plist.Count - i);&lt;br /&gt;            if (sah &amp;lt; splitData.SAH)&lt;br /&gt;            {&lt;br /&gt;                splitData.SAH = sah;&lt;br /&gt;                splitData.axis = axis;&lt;br /&gt;                splitData.trisLeft = i;&lt;br /&gt;                splitData.trisRight = plist.Count - i;&lt;br /&gt;                splitData.leftBound = new AABB(leftBounds);&lt;br /&gt;                splitData.rightBound = new AABB(rightBounds[i - 1]);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    splitData.isDivideNext =&lt;br /&gt;        (splitData.axis != -1) &amp;amp;&amp;amp; (splitData.SAH &amp;lt; a_boxSAH);&lt;br /&gt;                &lt;br /&gt;    return splitData;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Литература:&lt;/b&gt;  &lt;a href="http://sites.google.com/site/imfract/raytracing/Early%20Split%20Clipping%20for%20Bounding%20Volume%20Hierarchies.pdf"&gt;Early Split Clipping for Bounding Volume Hierarchies&lt;/a&gt;. Manfred Ernst. Gunthe  Greiner. Lehrstuhl fur Graphische Datenverarbeitung Universit at Erlangen-Nurnberg, Germany&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7214599039104586790?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7214599039104586790/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/bvh.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7214599039104586790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7214599039104586790'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/bvh.html' title='Построение бинарного BVH-дерева'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-5713575411842832364</id><published>2012-02-16T12:42:00.001+04:00</published><updated>2012-02-16T12:42:28.479+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Нормаль в точке пересечения луча и треугольника</title><content type='html'>Интерполяция нормалей в точке пересечения луча и треугольника будем считать с помощью предварительно расчитанных коэффициентов (см. &lt;a href="http://woronoi.blogspot.com/2012/02/blog-post_1877.html"&gt;Пересечение луча и треугольника&lt;/a&gt;, метод Precalculate)&lt;br /&gt;&lt;br /&gt;BC = B - C&lt;br /&gt;AC = A - C&lt;br /&gt;Denominator = 1.0f / Vector3f.Cross(AC, BC).Length&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;public Vector3f NormalForDot(Vector3f dot)&lt;br /&gt;{&lt;br /&gt;    float u = Vector3f.Cross(dot - _c, _bc).Length * _denominator;&lt;br /&gt;    float v = Vector3f.Cross(_ac, dot - _c).Length * _denominator;&lt;br /&gt;    float w = 1.0f - u - v;&lt;br /&gt;&lt;br /&gt;    Vector3f n = new Vector3f(&lt;br /&gt;        nA.X * u + nB.X * v + nC.X * w,&lt;br /&gt;        nA.Y * u + nB.Y * v + nC.Y * w,&lt;br /&gt;        nA.Z * u + nB.Z * v + nC.Z * w&lt;br /&gt;        );&lt;br /&gt;&lt;br /&gt;    return n;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-5713575411842832364?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/5713575411842832364/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_9495.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5713575411842832364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5713575411842832364'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_9495.html' title='Нормаль в точке пересечения луча и треугольника'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-5112535638993263909</id><published>2012-02-16T12:35:00.000+04:00</published><updated>2012-02-16T12:35:09.144+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Пересечение луча и AABB</title><content type='html'>&lt;b&gt;AABB&lt;/b&gt; - Axis Aligned Bounding Box (выровненный по осям описывающий параллелепипед, вписываем объект в коробку). Т. е. будем искать пересечение луча и куба/коробки/параллелепипеда.&lt;br /&gt;&lt;br /&gt;Тривиальный код AABB находится в классе &lt;a href="http://sites.google.com/site/imfract/raytracing/AABB.cs"&gt;AABB&lt;/a&gt;. t0 и t1 - позволяют отсекать большие куски пространства и обязательно пригодятся в дальнейшем для оптимизации.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;public static bool RayBoxIntersect(Ray ray, AABB bbox, float t0, float t1)&lt;br /&gt;{&lt;br /&gt;    float tmin, tmax, tymin, tymax, tzmin, tzmax;&lt;br /&gt;&lt;br /&gt;    float divx = 1.0f / ray.Direction.X;&lt;br /&gt;    if (divx &amp;gt;= 0.0f)&lt;br /&gt;    {&lt;br /&gt;        tmin = (bbox.BoundsMin.X - ray.Origin.X) * divx;&lt;br /&gt;        tmax = (bbox.BoundsMax.X - ray.Origin.X) * divx;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        tmin = (bbox.BoundsMax.X - ray.Origin.X) * divx;&lt;br /&gt;        tmax = (bbox.BoundsMin.X - ray.Origin.X) * divx;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    float divy = 1.0f / ray.Direction.Y;&lt;br /&gt;    if (divy &amp;gt;= 0.0f)&lt;br /&gt;    {&lt;br /&gt;        tymin = (bbox.BoundsMin.Y - ray.Origin.Y) * divy;&lt;br /&gt;        tymax = (bbox.BoundsMax.Y - ray.Origin.Y) * divy;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        tymin = (bbox.BoundsMax.Y - ray.Origin.Y) * divy;&lt;br /&gt;        tymax = (bbox.BoundsMin.Y - ray.Origin.Y) * divy;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if ((tmin &amp;gt; tymax) || (tymin &amp;gt; tmax))&lt;br /&gt;    {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (tymin &amp;gt; tmin)&lt;br /&gt;    {&lt;br /&gt;        tmin = tymin;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (tymax &amp;lt; tmax)&lt;br /&gt;    {&lt;br /&gt;        tmax = tymax;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    float divz = 1.0f / ray.Direction.Z;&lt;br /&gt;    if (divz &amp;gt;= 0.0f)&lt;br /&gt;    {&lt;br /&gt;        tzmin = (bbox.BoundsMin.Z - ray.Origin.Z) * divz;&lt;br /&gt;        tzmax = (bbox.BoundsMax.Z - ray.Origin.Z) * divz;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        tzmin = (bbox.BoundsMax.Z - ray.Origin.Z) * divz;&lt;br /&gt;        tzmax = (bbox.BoundsMin.Z - ray.Origin.Z) * divz;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if ((tmin &amp;gt; tzmax) || (tzmin &amp;gt; tmax))&lt;br /&gt;    {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (tzmin &amp;gt; tmin)&lt;br /&gt;    {&lt;br /&gt;        tmin = tzmin;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (tzmax &amp;lt; tmax)&lt;br /&gt;    {&lt;br /&gt;        tmax = tzmax;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return ((tmin &amp;lt; t1) &amp;amp;&amp;amp; (tmax &amp;gt; t0));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Код доступен в классе &lt;a href="http://sites.google.com/site/imfract/raytracing/Utils.cs"&gt;Utils&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Литература:&lt;br /&gt;&lt;a href="http://sites.google.com/site/imfract/raytracing/Ef%EF%AC%81cient%20and%20Robust%20Ray-Box%20Intersection%20Algorithm.pdf"&gt;An Efficient and Robust Ray–Box Intersection Algorithm&lt;/a&gt;. Amy Williams, Steve Barrus, R. Keith Morley, Peter Shirley. University of Utah&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-5112535638993263909?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/5112535638993263909/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/aabb.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5112535638993263909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5112535638993263909'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/aabb.html' title='Пересечение луча и AABB'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4347557437828098214</id><published>2012-02-16T12:22:00.000+04:00</published><updated>2012-02-16T12:22:35.317+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Пересечение луча и треугольника</title><content type='html'>Треугольник задан тремя вершинами (используем три вектора): A, B, C. Для интерполяции (сглаживания поверхности треугольника) в каждой вершине заданы нормали: nA, nB, nC. Нормали можно посчитать, но я их брал из Blender, нажимая кнопку Smooth (так проще). Для всего треугольника задана нормаль N (она рассчитывается по трем вершинам).&lt;br&gt;&lt;br&gt;Чтобы работало быстро делаем предварительные вычисления:&lt;br&gt;&lt;br&gt;&lt;pre class="brush:csharp"&gt;private void Precalculate()&lt;br /&gt;{&lt;br /&gt;    _ac = new Vector3f(_a - _c);&lt;br /&gt;    _bc = new Vector3f(_b - _c);&lt;br /&gt;    _cross_acbc = Vector3f.Cross(_ac, _bc);&lt;br /&gt;    _denominator = 1.0f / _cross_acbc.Length;&lt;br /&gt;    _n = Vector3f.Normalize(_cross_acbc);&lt;br /&gt;// ...&lt;br /&gt;&lt;/pre&gt;&lt;br&gt;Нам понадобится маленькая величина, для большей точности и чтобы случайно не разделить на ноль: EPSILON = 0.000001f. Теперь все готово для вычисления пересечения&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/blog-post_1877.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4347557437828098214?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4347557437828098214/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_1877.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4347557437828098214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4347557437828098214'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_1877.html' title='Пересечение луча и треугольника'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7494626763208027998</id><published>2012-02-16T10:21:00.000+04:00</published><updated>2012-02-16T10:25:01.922+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Камера для рейтрейсинга</title><content type='html'>Основные параметры камеры:&lt;br /&gt;- Местоположение - Position&lt;br /&gt;- Точка, куда камера смотрит - Target&lt;br /&gt;- Угол обзора - FOV&lt;br /&gt;&lt;br /&gt;Часть коэффициентов математики камеры, можно посчитать заранее. Это делает метод Precalculate.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;private void Precalculate()&lt;br /&gt;{&lt;br /&gt;    // переводим экранное разрешение (в пикселах) в разрешение сцены&lt;br /&gt;    Vector3f v0 = _target - _position;&lt;br /&gt;    float a = v0.Length;&lt;br /&gt;&lt;br /&gt;    float q = _fov / 2.0f;&lt;br /&gt;    float b = Math.Abs(a / (float)Math.Tan(q));&lt;br /&gt;&lt;br /&gt;    // предрасчет коэффициентов&lt;br /&gt;    _Lu = b * 2.0f;&lt;br /&gt;    _Lv = _Lu;&lt;br /&gt;    Vector3f E_A = _position - _target;&lt;br /&gt;    Vector3f w = E_A / E_A.Length;&lt;br /&gt;    Vector3f UpxE_A = _up.Cross(E_A);&lt;br /&gt;    _u = UpxE_A / UpxE_A.Length;&lt;br /&gt;    _v = Vector3f.Cross(w, _u);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;При трассировке каждого пиксела картинки, нам нужно вычислить направление трассируемого луча (Ray.Direction). У нас есть точка откуда мы смотрим на сцену (Position, она же положение луча Ray.Origin) и координаты пиксела на экране через который мы выстреливаем луч. Теперь нужно рассчитать направление луча (Ray.Direction) т.е. увязать основные параметры камеры с координатами пиксела на экране. Это делает метод Direction на основе расчитанных ранее коэффициентов (Precalculate).&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;// строим направление луча выстреливаемого через пиксел (x_px, y_px)&lt;br /&gt;// строим направление луча выстреливаемого через пиксел (x_px, y_px)&lt;br /&gt;// на основе параметров камеры&lt;br /&gt;public Vector3f Direction(float x_px, float y_px)&lt;br /&gt;{&lt;br /&gt;    float cu = ((2.0f * x_px + 1.0f) / _widthPx2 - 0.5f) * _Lu;&lt;br /&gt;    float cv = ((2.0f * y_px + 1.0f) / _heightPx2 - 0.5f) * _Lv;&lt;br /&gt;    Vector3f Pij = _target - cu * _u - cv * _v;&lt;br /&gt;    Vector3f Pij_E = Pij - _position;&lt;br /&gt;    Vector3f dir = Pij_E / Pij_E.Length;&lt;br /&gt;    dir.Normalize();&lt;br /&gt;&lt;br /&gt;    return dir;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;При расчете отражений мы используем уже не координаты камеры, а координаты точки пересечения луча и треугольника, т. е. Ray.Origin = точка пересечения предыдущего луча и треугольника, Ray.Direction = угол падения=углу отражения.&lt;br /&gt;&lt;br /&gt;Класс &lt;a href="http://sites.google.com/site/imfract/raytracing/Camera.cs"&gt;Camera&lt;/a&gt; содержит некоторые неточности, но в общем работает.&lt;br /&gt;&lt;br /&gt;Литература: &lt;a href="http://sites.google.com/site/imfract/raytracing/Vector%20Algebra%20for%20Ray%20Tracing.pdf"&gt;Vector Algebra for Ray Tracing&lt;/a&gt;, Dr. Thomas W. Sederberg, 14 February 2005&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7494626763208027998?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7494626763208027998/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_4431.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7494626763208027998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7494626763208027998'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_4431.html' title='Камера для рейтрейсинга'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1502686212647521953</id><published>2012-02-16T09:57:00.000+04:00</published><updated>2012-02-16T09:57:44.137+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Как работает рейтрейсинг?</title><content type='html'>&lt;pre class="brush:csharp"&gt;for (y = 0; y &amp;lt; высота картинки в пикселах; y = y + 1)&lt;br /&gt;{&lt;br /&gt;    for (x = 0; y &amp;lt; ширина картинки в пикселах; x = x + 1)&lt;br /&gt;    {&lt;br /&gt;        // задаем параметры луча трассировки        &lt;br /&gt;        //местоположение камеры/глаза&lt;br /&gt;        Ray.Origin = Camera.Origin&lt;br /&gt;        // преобразовать координаты пиксела (x, y) в вектор направления взгляда&lt;br /&gt;        Ray.Direction = Camera.Direction(x, y)&lt;br /&gt;        &lt;br /&gt;        // непосредственно трассировка луча - получение цвета пиксела (x, y)&lt;br /&gt;        RGB color =&lt;br /&gt;            Raytrace&lt;br /&gt;            (&lt;br /&gt;                Ray,&lt;br /&gt;                текущий уровень рекурсии = 0,&lt;br /&gt;                количество отражений/переотражений, например = 3&lt;br /&gt;            )&lt;br /&gt;&lt;br /&gt;        // выводим расчитанный пиксел на экран&lt;br /&gt;        ScreenPixel[x, y] = color;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Класс &lt;a href="http://sites.google.com/site/imfract/raytracing/Vector3f.cs"&gt;Vector3f&lt;/a&gt; - координаты вектора и операции с векторами: сложение, вычитание, и др.&lt;br /&gt;Класс &lt;a href="http://sites.google.com/site/imfract/raytracing/Camera.cs"&gt;Camera&lt;/a&gt; и его метод Direction - позднее.&lt;br /&gt;Луч трассировки задается тривиальным классом &lt;a href="http://sites.google.com/site/imfract/raytracing/Ray.cs"&gt;Ray&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Raytrace&lt;/b&gt; - основа всего рейтрейсера. В общем виде, он ищет с каким треугольником сцены столкнулся луч и возвращает цвет треугольника. Если есть отражения/переотражения, то метод вызывает сам себя (рекурсия) и далее ищет цвет отражения.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1502686212647521953?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1502686212647521953/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_16.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1502686212647521953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1502686212647521953'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_16.html' title='Как работает рейтрейсинг?'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4173733619455519540</id><published>2012-02-15T16:23:00.002+04:00</published><updated>2012-02-15T16:23:59.112+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Гроздь винограда</title><content type='html'>Сделал небольшую оптимизацию кода, нашел места где нужно править код: есть ошибки, есть возможность ускорить рендеринг, но в общем следует переходить к другому способу - &lt;b&gt;Bidirectional Ray Tracing&lt;/b&gt; (двунаправленный рейтрейсинг), а от него плавно переходить на &lt;b&gt;Metropolis Light Transport&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/586611/"&gt;&lt;img alt="Гроздь винограда (рейтрейсинг)" border="0" height="500" src="http://img-fotki.yandex.ru/get/5007/97637398.7/0_8f373_5ea200b8_L.jpg" title="Гроздь винограда (рейтрейсинг)" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В целом, желаемый результат получен. Видимо на этом, с рейтрейсингом я закончил.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4173733619455519540?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4173733619455519540/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_15.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4173733619455519540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4173733619455519540'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_15.html' title='Гроздь винограда'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-9159521287543665987</id><published>2012-02-14T09:14:00.003+04:00</published><updated>2012-02-14T12:03:17.639+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Фотонные карты</title><content type='html'>&lt;b&gt;Фотонные карты&lt;/b&gt; - один из видов &lt;b&gt;biased&lt;/b&gt; рейтрейсинга. Имитирует процесс натурального освещения. Очень прост, спокойно выдает отражения, мягкие тени, каустики и пр. красивости. Но(!) долго работает, &amp;quot;шумит&amp;quot; и жрет прорву памяти.&lt;br&gt;&lt;br&gt;Для построения, из каждого источника света испускается большое число фотонов. Фотоны отражаются и переотражаются на сцене, каждый раз оставляя кусочек энергии. Затем энергия собирается и отображается на экране в виде освещенности.&lt;br&gt;&lt;br&gt;Я сделал крайне грубый набросок и сильно упростил процесс&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/586136/"&gt;&lt;img alt="Рейтрейсинг фотонными картами" border="0" src="http://img-fotki.yandex.ru/get/5008/97637398.7/0_8f198_74ed76af_L.jpg" title="Рейтрейсинг фотонными картами"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Посмотрим на других знакомых и пошагово весь процесс&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/blog-post_14.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-9159521287543665987?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/9159521287543665987/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_14.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9159521287543665987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9159521287543665987'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_14.html' title='Фотонные карты'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4837629294628885674</id><published>2012-02-13T10:33:00.000+04:00</published><updated>2012-02-13T10:33:16.990+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Стэнфордский дракон</title><content type='html'>&lt;b&gt;Стэнфордский дракон (Stanford Dragon)&lt;/b&gt; - модель, полученная с помощью 3D-сканера. Часто применяется для графических тестов наравне со счастливым буддой или кроликом. Традиция такая.&amp;nbsp;По времени, дракон рендерится не хуже того же бегемота, а вот с построением BVH-дерева уже сложнее и дольше: порядка 23 секунд на дерево (независимо от размера итоговой картинки).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/585970/"&gt;&lt;img alt="Стэнфордский дракон (рейтрейсинг)" border="0" height="499" src="http://img-fotki.yandex.ru/get/5507/97637398.7/0_8f0f2_2a40381a_L.jpg" title="Стэнфордский дракон (рейтрейсинг)" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Дерево изменяется если меняется геометрия сцены. Если мы крутим камерой или перемещаем источники освещения, то дерево не меняется т. к. не меняется геометрия, а меняется ход лучей трассировки. Можно посчитать дерево один раз, затем сохранить и в дальнейшем, подгружая вместе с объектами, экономить немного времени.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4837629294628885674?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4837629294628885674/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_13.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4837629294628885674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4837629294628885674'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_13.html' title='Стэнфордский дракон'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-253362276397983576</id><published>2012-02-12T14:19:00.000+04:00</published><updated>2012-02-12T14:19:00.155+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Код Metropolis-Hastings для буддаброта</title><content type='html'>Буддаброт вещь не только красивая, но и фрактал: его можно бесконечно увеличивать и получать бесконечно новые детали. Да и сам процесс можно созерцать часами, наблюдая как картинка медленно проявляется, показывая все больше и больше деталей.&lt;br /&gt;&lt;br /&gt;Первое, что приходит в голову отрендерить в большем разрешении, но есть предел: памяти не хватает и очень долго получается. Тогда приходит мысль вторая - рендерить только нужный кусочек, растягивая аналоговые координаты комплексной плоскости до размеров дискретного окна. Но(!) есть точки, чьи орбиты настолько велики, что они бегают по всей поверхности, оставляя на нашем маленьком кусочке свои кривые. Рендеря только кусочек буддаброта мы не учтем эти точки, их орбиты будут потеряны, а это нехорошо.&lt;br /&gt;&lt;br /&gt;Получается, что для построения кусочка нужно просчитывать все точки буддаброта и чем больше увеличение, тем выше разрешение, количество точек увеличивается до колоссальных объемов и процесс растягивается до десятилетий. Оно нам надо? Не надо. Поэтому берут алгоритм &lt;b&gt;Метрополис-Хастингса (Metropolis-Hastings)&lt;/b&gt; и рисуют с помощью него.&lt;br /&gt;&lt;br /&gt;Я не стал заморачиваться и строить свое решение, а взял код на Си, сделанный &lt;a href="http://www.steckles.com/buddha/"&gt;Александром Босвелом (Alexander Boswell)&lt;/a&gt;, и портировал его на C#. Не забыв, конечно же, обернуть его в удобную графическую оболочку.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/584259/"&gt;&lt;img alt="" border="0" height="461" src="http://img-fotki.yandex.ru/get/5604/97637398.7/0_8ea43_b1dcafe3_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Получился неплохой исходный код буддаброта на метрополис-хастингсе, на C# и с графической оболочкой. Код немного мудреный, но вполне можно разобраться по комментариям и названиям функций. Есть небольшие ошибки с координатами, но это мелочи.&lt;br /&gt;&lt;br /&gt;Приложение: &lt;a href="http://sites.google.com/site/imfract/buddhabrot/GaneshaBench_Metropolis-Hastings_1.0.4422.21200.zip"&gt;GaneshaBench_Metropolis-Hastings_1.0.4422.21200.zip&lt;/a&gt;&lt;br /&gt;Исходный код: &lt;a href="http://sites.google.com/site/imfract/buddhabrot/GaneshaBench_Metropolis-Hastings_src_1.0.zip"&gt;GaneshaBench_Metropolis-Hastings_src_1.0.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-253362276397983576?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/253362276397983576/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/metropolis-hastings.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/253362276397983576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/253362276397983576'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/metropolis-hastings.html' title='Код Metropolis-Hastings для буддаброта'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7205062273067594217</id><published>2012-02-11T08:30:00.000+04:00</published><updated>2012-02-11T08:30:00.840+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Зеркальный бегемот</title><content type='html'>Поправил интерполяцию нормалей: теперь модели гладкие, а вместо мальчика с серпом - ртутный бегемот с ушами.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/584550/"&gt;&lt;img alt="Бегемот из ртути" border="0" height="500" src="http://img-fotki.yandex.ru/get/5604/97637398.7/0_8eb66_e70dd20e_L.jpg" title="Бегемот из ртути" width="439"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Ошибок было две:&lt;br&gt;1. Некоторые модели составные, а я сглаживал только большую часть опуская такие детали как руки, ноги, уши и пр.&lt;br&gt;2. Я неправильно интерполировал нормали (пропускал одну из составляющих). Теперь все нормально и есть простор для небольшой оптимизации: предрасчет и сохранение промежуточных коэффициентов интерполяции.&lt;br&gt;&lt;br&gt;Замечена проблема с тенями - квадратит и полигонит в косых лучах. Рассмотреть детали можно &lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/blog-post_11.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7205062273067594217?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7205062273067594217/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_11.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7205062273067594217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7205062273067594217'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_11.html' title='Зеркальный бегемот'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4889864530025300878</id><published>2012-02-10T05:30:00.000+04:00</published><updated>2012-02-10T05:30:01.032+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Буддаброт - исходный код</title><content type='html'>В продолжение темы &lt;a href="http://woronoi.blogspot.com/2012/02/blog-post.html"&gt;Как построить буддаброт?&lt;/a&gt;, наконец-то сделал микросайт для исходников и бинарников графических поделок. Перенес туда HyperFractal и тестовое приложение для постройки буддабротов - &lt;b&gt;GaneshaBench&lt;/b&gt;. Исходники рендера буддаброта на C# - прилагаются.&lt;br /&gt;&lt;br /&gt;Приложение: &lt;a href="http://sites.google.com/site/imfract/buddhabrot/GaneshaBench_1.0.4422.18242.zip"&gt;GaneshaBench_1.0.4422.18242.zip&lt;/a&gt;&lt;br /&gt;Исходный код: &lt;a href="http://sites.google.com/site/imfract/buddhabrot/GaneshaBench_src_1.0.zip"&gt;GaneshaBench_src_1.0.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/584226/"&gt;&lt;img alt="" border="0" height="436" src="http://img-fotki.yandex.ru/get/5604/97637398.7/0_8ea22_30044933_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Приложение предназначено для тестов, поэтому в нем есть ряд незначительных ошибок.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4889864530025300878?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4889864530025300878/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_10.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4889864530025300878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4889864530025300878'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_10.html' title='Буддаброт - исходный код'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2270870474799916644</id><published>2012-02-09T06:00:00.000+04:00</published><updated>2012-02-09T06:00:00.839+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Некрасивый интерфейс</title><content type='html'>Некрасивый, но, большей частью, удобный и устраивающий заказчика интерфейс.&lt;br&gt;&lt;br&gt;Как обычно, заказчику - все-равно, лишь бы &amp;quot;переделали, но чтобы стало как было&amp;quot;. На вопрос &amp;quot;а что это за кнопка&amp;quot;, заказчик отвечает - &amp;quot;не знаю, наверное журнал&amp;quot;, или просто тыкал пальцем и удивленно восклицал &amp;quot;а! так это ж переключение режимов&amp;quot;. Поэтому глубина проработки интерфейса целиком инициатива разработчика, всем остальным глубоко на...&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/583761/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4404/97637398.7/0_8e851_d351599b_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;В общем, попробуем оценить, что здесь оставить, а что заменить. Уточню: экран сенсорной панели действительно паршивенький и будет заменен на другой. Все эти пурпурно-сине-розовые пятна на желтом фоне не дефект фотографии, а качество исполнения панели. Пятна присутствуют постоянно и не пропадают при изменении угла обзора.&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/blog-post_09.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2270870474799916644?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2270870474799916644/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_09.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2270870474799916644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2270870474799916644'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_09.html' title='Некрасивый интерфейс'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4306187398802797714</id><published>2012-02-08T11:11:00.000+04:00</published><updated>2012-02-08T11:11:00.118+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Гладкий мальчик</title><content type='html'>Сделал интерполяцию нормалей вершин треугольников. Нормали экспортируются Блендером (поставить галку "Include Normals"), остается интерполировать нормаль в точке пересечения луча с треугольником.&lt;br /&gt;&lt;br /&gt;Результат есть, но что-то не очень: или Блендер экспортирует криво, или я где-то считаю неправильно. Стрелки показывают: было → стало&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/582833/"&gt;&lt;img alt="" border="0" height="351" src="http://img-fotki.yandex.ru/get/4403/97637398.7/0_8e4b1_814a5626_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4306187398802797714?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4306187398802797714/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_08.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4306187398802797714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4306187398802797714'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post_08.html' title='Гладкий мальчик'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-117907452417852879</id><published>2012-02-07T07:30:00.000+04:00</published><updated>2012-02-07T10:31:23.705+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>E Ink Perl под микроскопом</title><content type='html'>На выходных под окуляром микроскопа - &lt;b&gt;экран на электронных чернилах&lt;/b&gt;, конкретнее - &lt;b&gt;E Ink Perl&lt;/b&gt; электронной читалки Digma e501.&lt;br&gt;&lt;br&gt;Отбросим всё, что знали об электронных чернилах и попробуем исследовать самостоятельно. С оптикой в этот день не заладилось: что-то мутно получается, но что-то видно. Увеличении приблизительно x100.&lt;br&gt;&lt;br&gt;Поверхность неровная, испещрена витиеватыми углублениями, что делает экран матовым и похожим на бумагу(?) Рассматривать будем кусочек цифры &amp;quot;6&amp;quot; и точку рядом с ней. Здесь есть и округленность цифры, и квадратность точки.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/582820/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5504/97637398.7/0_8e4a4_68dbaac7_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Белое поле, видны гранулы. Форма у них не шар (как в теории), а шестигранная сота. Видна &amp;quot;грязь&amp;quot;, оставшаяся от предыдущих ихображений, а может быть, это незаполненное гранулами пространство. Видимо, эта &amp;quot;грязь&amp;quot; и делает экран серым.&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/e-ink-perl.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-117907452417852879?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/117907452417852879/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/e-ink-perl.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/117907452417852879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/117907452417852879'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/e-ink-perl.html' title='E Ink Perl под микроскопом'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3788609928690352930</id><published>2012-02-06T14:28:00.000+04:00</published><updated>2012-02-06T14:28:00.314+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Как построить буддаброт?</title><content type='html'>Буддаброт строится приблизительно так же как и мандельброт, только больше и дольше.&lt;br&gt;&lt;br&gt;Для каждой точки на экране заводится счетчик. Далее берется случайная точка, в цикле сдвигаем ее понемногу на каждом шаге и запоминаем новые координаты, дальше смотрят улетела она в бесконечность или нет. Вот тут наступает разница: если в мандельброте нам нужны точки которые входят в множество, то здесь мы ищем точки которые не входят в множество. И если точка не входит, то мы наращиваем ее счетчик и счетчики всех точек полученных в цикле. Т. е. работаем не только с точкой, но и с кривой по которой она бежала в цикле. Кривая называется орбитой (orbit trap).&lt;br&gt;&lt;br&gt;Периодически выводим значения всех счетчиков на экран: чем чаще по точке пробегали орбиты других точек, тем больше будет значения ее счетчика и тем ярче она будет нарисована на экране. Если же рисовать орбиты точек которые входят в мандельброт, то получится антибуддаброт, тоже красивая картинка с молниями и сияниями.&lt;br&gt;&lt;br&gt;Простой алгоритм приводить смысла нет (он простой), а вот оптимизированный уже интересно. Оптимизация состоит в том, что буддаброт:&lt;br&gt;1. Симметричный - координаты найденных точеку можно симметрично дублировать, т. е. расчитали одну точку, а нарисовали сразу две, рассчитали 10 - нарисовали 20.&lt;br&gt;2. Можно быстро отсеивать точки, если они попадают в определенные области.&lt;br&gt;&lt;br&gt;Далее алгоритм. xySeq[] - массив точек через которые проходит орбита убежавшей точки, их и нужно рисовать.&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/blog-post.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3788609928690352930?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3788609928690352930/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3788609928690352930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3788609928690352930'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/blog-post.html' title='Как построить буддаброт?'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3112084073417078543</id><published>2012-02-05T13:19:00.000+04:00</published><updated>2012-02-06T08:56:05.470+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='gpu'/><title type='text'>Mandelbulb DE под OpenCL</title><content type='html'>Было трудно портировать C# код в Cloo-кернел для расчета мандельбульба, да еще и с помощью DE. Код мутный, но только на первый взгляд. На второй тоже трудно, но в принципе уже понятно. &lt;br&gt;&lt;br&gt;Я как мог оставил комментарии и зачем-то перевел их на русский. Большая часть параметров захардкожена, зато в коде есть нормали и эмбиент оклюжн (AO), и, самое главное, всё это грузится и выполняется под Cloo. Код загрузки на C# не представляет трудности, примеров в инете много. Для начинания расчета гиперфракталов на GPU - самое оно.&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/mandelbulb-de-opencl.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3112084073417078543?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3112084073417078543/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/mandelbulb-de-opencl.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3112084073417078543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3112084073417078543'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/mandelbulb-de-opencl.html' title='Mandelbulb DE под OpenCL'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4294736606436670993</id><published>2012-02-04T11:41:00.000+04:00</published><updated>2012-02-06T08:56:18.701+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><category scheme='http://www.blogger.com/atom/ns#' term='gpu'/><title type='text'>Воксельный Mandelbulb на OpenCL</title><content type='html'>Загрузить кернел и получить данные от GPU несложно, труднее было портировать кернел. Далее простейший кернел под Cloo OpenCL: большинство параметров захардкожено, но для начала вполне подойдет.&lt;br&gt;&lt;br&gt;Кернел легко модифицируется под Juliabulb и др. гиперфракталы. Одинарная точность (float) и native_ функции - для небольшого ускорения.&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/mandelbulb-opencl.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4294736606436670993?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4294736606436670993/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/mandelbulb-opencl.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4294736606436670993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4294736606436670993'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/mandelbulb-opencl.html' title='Воксельный Mandelbulb на OpenCL'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3358230821374880415</id><published>2012-02-03T10:00:00.000+04:00</published><updated>2012-02-03T10:27:52.395+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Работа с пикселями на C#</title><content type='html'>Пора накидать кодных крошек. Быстрая работа с пикселями Bitmap в Windows Forms на C#. Put и Get пиксель - это ужасно медленно, а здесь быстро и есть работа с байтами.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:csharp; highlight: [16,17,18,19,20,21,25,26,27,28,29,30,47,48,49,61,62,63,64,65,66]"&gt;//// для примера&lt;br /&gt;&lt;br /&gt;int bitmapW = 800;&lt;br /&gt;int bitmapH = 600;&lt;br /&gt;&lt;br /&gt;Graphics g = Graphics.FromHwnd(this.Handle);&lt;br /&gt;Bitmap bitmap = new Bitmap(bitmapW, bitmapH, g);&lt;br /&gt;Random rnd = new Random();&lt;br /&gt;&lt;br /&gt;//// начало&lt;br /&gt;&lt;br /&gt;// не совсем корректно, но предполагаем, что формат цвета либо 24-бита, либо 32&lt;br /&gt;int byteLen = bitmap.PixelFormat == PixelFormat.Format24bppRgb ? 3 : 4;&lt;br /&gt;&lt;br /&gt;// блокируем битмап: только для записи, но можно и для чтения, и не только&lt;br /&gt;BitmapData bitmapData = bitmap.LockBits(&lt;br /&gt;    new Rectangle(0, 0, bitmap.Width, bitmap.Height),&lt;br /&gt;    System.Drawing.Imaging.ImageLockMode.WriteOnly,&lt;br /&gt;    //System.Drawing.Imaging.ImageLockMode.ReadWrite,&lt;br /&gt;    //System.Drawing.Imaging.ImageLockMode.ReadOnly,&lt;br /&gt;    bitmap.PixelFormat);&lt;br /&gt;&lt;br /&gt;// создаем буфер для пикселей битмапа&lt;br /&gt;// копируем в буфер байты цвета пикселей битмапа&lt;br /&gt;byte[] bitmapBuffer = new byte[bitmapData.Stride * bitmapData.Height];&lt;br /&gt;Marshal.Copy(&lt;br /&gt;    bitmapData.Scan0,&lt;br /&gt;    bitmapBuffer,&lt;br /&gt;    0,&lt;br /&gt;    bitmapBuffer.Length);&lt;br /&gt;&lt;br /&gt;for (int y = 0; y &lt; bitmapH; y++)&lt;br /&gt;{&lt;br /&gt;    int strideY = bitmapData.Stride * y; // небольшая оптимизация&lt;br /&gt;    for (int x = 0; x &lt; bitmapW; x++)&lt;br /&gt;    {&lt;br /&gt;        //// этот кусок нужен для демонстрации, заполняет пиксел случайным цветом&lt;br /&gt;        int c = rnd.Next();&lt;br /&gt;        byte r = (byte)(c &gt;&gt; 16);&lt;br /&gt;        byte g = (byte)(c &gt;&gt; 8);&lt;br /&gt;        byte b = (byte)(c &amp; 0xff);&lt;br /&gt;        ////&lt;br /&gt;    &lt;br /&gt;        int index = strideY + x * byteLen; // небольшая оптимизация&lt;br /&gt;    &lt;br /&gt;        // сохраняем цвета каналов RGB пиксела в буфер&lt;br /&gt;        bitmapBuffer[index + 0] = b;&lt;br /&gt;        bitmapBuffer[index + 1] = g;&lt;br /&gt;        bitmapBuffer[index + 2] = r;&lt;br /&gt;        &lt;br /&gt;        // если 32-битный формат цвета, то нужно выставить байт прозрачности&lt;br /&gt;        if (byteLen == 4)&lt;br /&gt;        {&lt;br /&gt;            bitmapBuffer[index + 3] = 255;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// копируем байты цвета назад в битмап&lt;br /&gt;// разблокируем битмап&lt;br /&gt;Marshal.Copy(&lt;br /&gt;    bitmapBuffer,&lt;br /&gt;    0,&lt;br /&gt;    bitmapData.Scan0,&lt;br /&gt;    bitmapData.Stride * bitmapData.Height);&lt;br /&gt;bitmap.UnlockBits(bitmapData);&lt;br /&gt;&lt;br /&gt;//// битмап обновлен&lt;br /&gt;//// в данном примере он заполнен цветным шумом&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3358230821374880415?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3358230821374880415/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/c.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3358230821374880415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3358230821374880415'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/c.html' title='Работа с пикселями на C#'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2703408616605292455</id><published>2012-02-02T10:38:00.001+04:00</published><updated>2012-02-02T10:38:51.473+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Время Jazz</title><content type='html'>Пока разработчик железок занят сложной командировкой, я прорабатываю для него работу с &lt;b&gt;программируемой релюшкой Jazz&lt;/b&gt; фирмы Unitronics. Задача простая - сделать настраиваемую систему с двумя таймерами: время работы и время ожидания. Кнопка пуск - работа - ожидание - работа - ожидание... кнопка стоп.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/581281/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4402/97637398.7/0_8dea1_f8b83356_orig.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Чуть позднее меня попросят добавить к оставшемуся времени, заданные временные промежутки, сделать шрифт заглавным, сократить надписи до &amp;quot;РАБ&amp;quot;, &amp;quot;ЗАД&amp;quot;, &amp;quot;ПАУЗ&amp;quot;, &amp;quot;НАСТР&amp;quot; и прочий хаос, и маразм. А сейчас, подробнее...&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/02/jazz.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2703408616605292455?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2703408616605292455/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/02/jazz.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2703408616605292455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2703408616605292455'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/02/jazz.html' title='Время Jazz'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-5914490718385284608</id><published>2012-01-22T09:00:00.000+04:00</published><updated>2012-01-22T09:00:05.176+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Бенчмарк рейтрейсера</title><content type='html'>Потестил несколько разных моделей с разным количеством полигонов: от 10 000 до 100 000, картинки ниже. Выводы интересные: время рендеринга зависит не от количества полигонов в сцене, а от размера и количества видимых в окне полигонов. Это нормально, больше больших полигонов - больше точек нужно просчитать. Хорошо заметно на моделях &amp;quot;Анубис&amp;quot; и &amp;quot;Лампа&amp;quot; (число полигонов почти равное).&lt;br&gt;&lt;br&gt;BVH хорошо скрадывает просчет пустых и слабо заполненных пространств: при рендеринге люстры, рейтрейсер быстро выводил ножку люстры и медленно просчитывал &amp;quot;висюльки&amp;quot;.&lt;br&gt;&lt;br&gt;&lt;b&gt;Мыша&lt;/b&gt;, 21000 полигон, 2 минуты&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/578248/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/6005/97637398.7/0_8d2c8_3590c053_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Люстра&lt;/b&gt;, 94000 полигонов, 2 минуты&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/01/blog-post_22.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-5914490718385284608?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/5914490718385284608/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_22.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5914490718385284608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5914490718385284608'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_22.html' title='Бенчмарк рейтрейсера'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-6465917883697928309</id><published>2012-01-20T12:42:00.002+04:00</published><updated>2012-01-20T12:44:04.570+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Текущий срез</title><content type='html'>- Полноценная камера с произвольным положением, вращением и направлением взгляда в сцене.&lt;br&gt;- Тени.&lt;br&gt;- Отражение и переотражения.&lt;br&gt;- Загрузка моделей Wavefront OBJ.&lt;br&gt;- BVH на бинарных AABB-деревьях: оптимизирован просчет лучей.&lt;br&gt;&lt;br&gt;&lt;b&gt;Мальчик с серпом.&lt;/b&gt; ~16000 треугольников. Двойные переотражения. Отрендерен за девять минут в разрешении 2000x2000, картинка уменьшена в два раза&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/578233/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/6005/97637398.7/0_8d2b9_697986ce_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Можно взглянуть поближе и&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/01/blog-post_5496.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-6465917883697928309?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/6465917883697928309/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_5496.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6465917883697928309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6465917883697928309'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_5496.html' title='Текущий срез'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-5770489109091174197</id><published>2012-01-20T12:05:00.000+04:00</published><updated>2012-01-20T12:05:31.252+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Модели из блендера</title><content type='html'>Moray - это хорошо, но &lt;b&gt;Блендер (Blender)&lt;/b&gt; - лучше. Сделал простейший экспортер моделей. Изначально планировал взять канонические .3ds, но быстро передумал на Wavefront .obj - он намного проще и мне пока нужны только модели.&lt;br /&gt;&lt;br /&gt;Блендер в текущей инкарнации дорос до полноценной установки (без маяты с установкой и прикормом питонов), а новый интерфейс позволяет начать с первой минуты хоть что-то делать.&lt;br /&gt;&lt;br /&gt;Сюзанна - модель из блендера&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/578232/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/6004/97637398.7/0_8d2b8_8af0158b_L.jpg" title="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Модели в формате obj без проблем экспортируются из Блендера. Внутри набор вершин, грани, нормали и&amp;nbsp;текстурные координаты. Этого достаточно, чтобы не протухнуть среди тороидов и непонятных хреновин.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-5770489109091174197?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/5770489109091174197/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_20.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5770489109091174197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5770489109091174197'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_20.html' title='Модели из блендера'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-9040871534910556360</id><published>2012-01-18T14:06:00.001+04:00</published><updated>2012-01-18T14:06:33.897+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Стрельба по кубикам</title><content type='html'>Удалось оптимизировать построение бинарного BVH AABB-дерева. Звучит жутко, но работает в три раза быстрее, немного глубже, зато треугольников в листьях меньше. Пруф&lt;br&gt;&lt;br&gt;&lt;a href="http://2.bp.blogspot.com/-JB5CDQNjLu8/TxaVM7n-BMI/AAAAAAAAAkY/gRFtF240oPQ/s1600/bvh-optimization.png" imageanchor="1"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-JB5CDQNjLu8/TxaVM7n-BMI/AAAAAAAAAkY/gRFtF240oPQ/s1600/bvh-optimization.png"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Итак, с самого начала.&lt;br&gt;&lt;br&gt;Через каждый пиксел выстреливается как минимум один луч. Затем проверяем с какими треугольниками он столкнулся и расчитываем цвет точки пересечения. Главный вопрос &lt;i&gt;&amp;quot;с каким(и) треугольником(ами) луч столкнулся?&amp;quot;&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/01/blog-post_3370.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-9040871534910556360?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/9040871534910556360/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_3370.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9040871534910556360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9040871534910556360'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_3370.html' title='Стрельба по кубикам'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-JB5CDQNjLu8/TxaVM7n-BMI/AAAAAAAAAkY/gRFtF240oPQ/s72-c/bvh-optimization.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3195213971916855293</id><published>2012-01-18T11:04:00.000+04:00</published><updated>2012-01-18T11:05:05.706+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Сглаживание</title><content type='html'>Сглаживание, &lt;b&gt;антиалиасинг (antialiasing)&lt;/b&gt; сделать просто. На выбор: полноэкранный суперсэмплинг (FSAA, SSAA), &lt;a href="http://paulbourke.net/miscellaneous/aliasing/"&gt;адаптивный сэмплинг и стохастический&lt;/a&gt;. Сделал суперсамплинг - каждый пиксел рендерится несколькими лучами, результат усредняется. Границы полигонов выглядят сглаженными.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-gR-aG5mAzKs/TxZszpuV2FI/AAAAAAAAAkM/L3dYoI6TRAM/s1600/antialiase-raytracing.png" imageanchor="1"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-gR-aG5mAzKs/TxZszpuV2FI/AAAAAAAAAkM/L3dYoI6TRAM/s1600/antialiase-raytracing.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Адаптивный делать не хочу, в сторону стохастического посмотрю позже.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3195213971916855293?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3195213971916855293/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_18.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3195213971916855293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3195213971916855293'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_18.html' title='Сглаживание'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-gR-aG5mAzKs/TxZszpuV2FI/AAAAAAAAAkM/L3dYoI6TRAM/s72-c/antialiase-raytracing.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3124619151917772500</id><published>2012-01-16T16:32:00.000+04:00</published><updated>2012-01-16T16:32:08.782+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Карта нормалей</title><content type='html'>Несмотря на черно-белые скрины раннего рейтрейсера, он вполне себе работает в цвете. Цвета треугольников модели вычисляются на основе нормалей: синий - то что более параллельно экрану, красный - более перпендикулярно.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/577595/"&gt;&lt;img alt="" border="0" height="500" src="http://img-fotki.yandex.ru/get/5414/97637398.6/0_8d03b_bead2376_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Тени, отражения - всё есть, но не совсем корректно, т. к. отражаются и затеняются все треугольники: и те что видны (передние), и те что нет (задние). Так что загогулина иногда становится полупрозрачной. Явление временное, пока не появится менеджер сцен и обработка моделей как сплошных (solid), а не набором треугольников.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3124619151917772500?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3124619151917772500/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_8526.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3124619151917772500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3124619151917772500'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_8526.html' title='Карта нормалей'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4268523929037006937</id><published>2012-01-16T16:24:00.000+04:00</published><updated>2012-01-16T16:49:50.777+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Оптимизация рейтрейсера</title><content type='html'>Оптимизация получена с помощью &lt;b&gt;BVH (Bounding Volume Hierarchy)&lt;/b&gt; - иерархия ограничивающих объемов и &lt;b&gt;AABB (Axis Aligned Boinding Boxes)&lt;/b&gt; - кубики ориентированные по осям). Можно загружать модели с тысячами треугольников и рендерится это все за приемлемое время: если раньше уходило от получаса до полутора часов (терпения дождаться не хватало), теперь уходит 3-7 минут. С отражениями и тенями.&lt;br&gt;&lt;br&gt;Карта высот, модель построена в Moray. За основу взяты юпики ЖЖ &lt;a href="http://beatcracker.livejournal.com/"&gt;beatcracker&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/577594/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5414/97637398.6/0_8d03a_5961c0e1_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Cцена вписывается в параллелепипед. Объем разбивается плоскостью на два других. Они взвешиваются, если не понравилось - каждый разбивается на еще два. Опять взвешиваются... Вертеп работает пока весы не покажут достаточно. Весы называют &lt;b&gt;SAH (Surface Area Heuristic)&lt;/b&gt;. Грубо, это произведение площади параллелепипеда на количество треугольников в нем.&lt;br&gt;&lt;br&gt;Главная задача - оптимально разбивать на два объема. Я пока тупо делю на равные части, но время работы уже сократилось сказочно.&lt;br&gt;&lt;br&gt;Йожъ&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/01/blog-post_16.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4268523929037006937?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4268523929037006937/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_16.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4268523929037006937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4268523929037006937'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_16.html' title='Оптимизация рейтрейсера'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2409795969126418915</id><published>2012-01-12T15:22:00.001+04:00</published><updated>2012-01-12T15:22:25.033+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Трассировка треугольников</title><content type='html'>Переписал рейтрейсер: вдумчиво и с расстановкой. Фигуры строятся из полигонов, т. е. треугольниками, что позволяет строить сложные сцены. Чтобы не мучиться с ручным вводом координат, взял Moray (любимый редактор для POV-Ray) и экспортировал из него UDO-сетки, т. е. в трассировщике лучей есть зачатки загрузки UDO-mesh&amp;#39;ей.&lt;br&gt;&lt;br&gt;Построение пока что без оптимизации, но уже с отражениями и тенями. Строятся сцены долго, поэтому на следующем этапе буду строить дерево объектов, а объекты разбивать на сетку (kd-tree или bvh, скорее всего последнее).&lt;br&gt;&lt;br&gt;Объекты нужны для имитации внутренностей предметов. Полигоны дают только поверхность, что усложняет работу с преломлением/рефракцией (линзы) и внутренним переотражением лучей (алмаз).&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/577012/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4428/97637398.6/0_8cdf4_500dcbe9_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Очень сложный объект&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/01/blog-post_12.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2409795969126418915?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2409795969126418915/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_12.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2409795969126418915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2409795969126418915'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_12.html' title='Трассировка треугольников'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1434386198813710607</id><published>2012-01-10T10:44:00.000+04:00</published><updated>2012-01-10T10:44:12.523+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Раскраска буддаброта</title><content type='html'>В буддабротах главное раскраска: черно-белый должен сиять, цветной - похож на космические фотографии NASA, но можно и поиграться.&lt;br&gt;&lt;br&gt;Инвертированный и повернутый буддаброт сделан с помощью метрополис-хастингса (Metropolis-Hastings). RGB-каналы с разными весами, кленовый лист&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/576758/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4427/97637398.6/0_8ccf6_1d52cb3a_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Четкость/резкость картинки зависит от количества итераций: меньше итераций - четче картинка. 2000 итераций, сутки на обработку&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/01/blog-post_10.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1434386198813710607?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1434386198813710607/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_10.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1434386198813710607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1434386198813710607'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_10.html' title='Раскраска буддаброта'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3738211553916797192</id><published>2012-01-06T00:10:00.002+04:00</published><updated>2012-01-06T00:10:21.732+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Вскрытие процессора</title><content type='html'>В голове отложилась мысль, что это один из первых пентиумов, но смотря только в микроскоп можно увидеть тавро, а гугление подсказывает, что &lt;i&gt;&amp;quot;An Intel internal manufacturing name &amp;#39;80G4C&amp;#39; appears on 80486 DX2 3.3V die&amp;quot;&lt;/i&gt;.&lt;br&gt;&lt;br&gt;Это &lt;a href="http://www.cpu-museum.de/?m=Intel&amp;amp;f=80486DX"&gt;Intel 486 DX2&lt;/a&gt;. В интернетах есть профессиональные фотографии как в &lt;a href="http://micro.magnet.fsu.edu/chipshots/intel/486dx2large.html"&gt;ложных цветах&lt;/a&gt;, так и в &lt;a href="http://www.extremetech.com/wp-content/uploads/2011/11/486dx2-die.jpg" target="_blank"&gt;нормальной расцветке&lt;/a&gt;. У меня же по прежнему в золото-меди.&lt;br&gt;&lt;br&gt;Увеличение 160хэ, картинка с запасом умещается в один миллиметр&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/575487/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4429/97637398.6/0_8c7ff_13da1147_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Трубопроводы электронов&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2012/01/blog-post_06.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3738211553916797192?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3738211553916797192/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_06.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3738211553916797192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3738211553916797192'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post_06.html' title='Вскрытие процессора'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2244871765975355857</id><published>2012-01-04T23:48:00.000+04:00</published><updated>2012-01-04T23:48:08.356+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Микроштатив</title><content type='html'>Штатив из фотоувеличителя закончен: &lt;a href="http://woronoi.blogspot.com/2011/09/510.html"&gt;УПА-510&lt;/a&gt; превратился в микроштатив для микроскопа. Фотоаппарат кладется сверху, спуск затвора через USB и CHDK (КРЕН5А + 12В батарейка).&lt;br /&gt;&lt;br /&gt;Фоткаю "разобранный" процессор&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/575196/"&gt;&lt;img alt="" border="0" height="500" src="http://img-fotki.yandex.ru/get/4429/97637398.6/0_8c6dc_6435574d_L.jpg" title="" width="365" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2244871765975355857?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2244871765975355857/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2244871765975355857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2244871765975355857'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2012/01/blog-post.html' title='Микроштатив'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-998627363436371814</id><published>2011-12-30T11:56:00.001+04:00</published><updated>2011-12-30T11:56:31.887+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='gpu'/><title type='text'>Mandelbulb DE на GPU</title><content type='html'>Руки дошли сделать рендер мандельбульба на DE под OpenCL.&lt;br&gt;&lt;br&gt;Долго не мог понять почему рендер на видеокарте занимает около полутора минут, если на процессоре в два потока оно проходит за 21 секунду. Даже на слабой (в плане расчетов) видеокарте ноута - слишком долго.&lt;br&gt;&lt;br&gt;В итоге, оказалось, большую часть времени занимает компиляция кернела GPGPU. Сделал кэширование бинарников кернела и последующую загрузку при повторной загрузке. На сильно неоптимизированой программе - 16 секунд, и какие-то левые артефакты. После небольшой оптимизации - 10 секунд. В сравнении с 21сек на CPU - это уже хорошо.&lt;br&gt;&lt;br&gt;16 сек пруф&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/mandelbulb-de-gpu.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-998627363436371814?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/998627363436371814/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/mandelbulb-de-gpu.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/998627363436371814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/998627363436371814'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/mandelbulb-de-gpu.html' title='Mandelbulb DE на GPU'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7773142718087542665</id><published>2011-12-29T12:09:00.001+04:00</published><updated>2011-12-29T12:09:59.061+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Scientists claim to break light-speed barrier</title><content type='html'>Из буддабротов можно выжать больше&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/571757/"&gt;&lt;img alt="" border="0" height="500" src="http://img-fotki.yandex.ru/get/4426/97637398.6/0_8b96d_bd30a7b5_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7773142718087542665?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7773142718087542665/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/scientists-claim-to-break-light-speed.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7773142718087542665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7773142718087542665'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/scientists-claim-to-break-light-speed.html' title='Scientists claim to break light-speed barrier'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4649149442260638480</id><published>2011-12-27T12:59:00.000+04:00</published><updated>2011-12-27T12:59:55.055+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Антагонист</title><content type='html'>У буддаброта (buddhabrot) есть антагонист - &lt;b&gt;Анти-буддаброт (anti-buddhabrot)&lt;/b&gt;. То же самое, но точки не улетают в бесконечность. Далее он искрит&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/571044/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4426/97637398.6/0_8b6a4_e0e20115_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;На больших итерациях получаются закопченные рыцари, на маленьких - злые телепузики&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/blog-post_27.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4649149442260638480?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4649149442260638480/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_27.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4649149442260638480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4649149442260638480'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_27.html' title='Антагонист'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-8467712219526093697</id><published>2011-12-27T09:52:00.000+04:00</published><updated>2011-12-27T09:52:22.280+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Metropolis-Hastings</title><content type='html'>&lt;b&gt;Metropolis-Hastings&lt;/b&gt; - один из методов для получения большого увеличения (deep zoom) в буддабротах. Обычный метод при большом увеличении затянется на пару недель. И чем-то этот процесс напоминает ручную проявку фотографий: плещешь-плещешь в ванночке, и вот она медленно проявляется. Закрепляем в PNG&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/571036/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/1/97637398.6/0_8b69c_6c97219e_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Главным в буддабротах по прежнему остается раскраска. Плохо проработанный вариант, где-то час на обработку:&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/metropolis-hastings.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-8467712219526093697?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/8467712219526093697/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/metropolis-hastings.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8467712219526093697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8467712219526093697'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/metropolis-hastings.html' title='Metropolis-Hastings'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1018859227571233948</id><published>2011-12-23T09:09:00.000+04:00</published><updated>2011-12-24T00:46:27.347+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>С чем едят буддаброт</title><content type='html'>&lt;b&gt;Буддаброт (Buddhabrot)&lt;/b&gt; - тот же мандельброт, только в профиль, и это не шутка. Красивая хреновина с кучей деталей, а для раскрашивания используются космические технологии (и это опять не шутка).&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/569405/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4425/97637398.6/0_8b03d_e1d3083_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Попытка повторить картинку из википедии. Времени доработать не хватило, как есть&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/blog-post_23.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1018859227571233948?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1018859227571233948/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_23.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1018859227571233948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1018859227571233948'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_23.html' title='С чем едят буддаброт'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-8613621902485832521</id><published>2011-12-22T10:44:00.001+04:00</published><updated>2011-12-23T00:43:02.323+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gpu'/><title type='text'>Native функции GPU</title><content type='html'>В наборе команд GPU есть т. н. native_ функции (native_sin, native_cos, native_sqrt, ...) которые выполняются быстрее, чем их родственники sin, cos и пр. Их немного, они не такие точные, но(!) они быстрее. Для предпросмотра и работы с 3D вполне хватает.&lt;br /&gt;&lt;br /&gt;Для сравнения я засунул их в код кернела из поста &lt;a href="http://woronoi.blogspot.com/2011/12/blog-post_20.html"&gt;Клуу&lt;/a&gt; и засек ручным хронометром время рендеринга. Внимание(!), 11 секунд против 15. Выигрыш - 4 секунды, это много, и это - хорошо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-8613621902485832521?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/8613621902485832521/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/native-gpu.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8613621902485832521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8613621902485832521'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/native-gpu.html' title='Native функции GPU'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-8809202803866650319</id><published>2011-12-21T07:30:00.000+04:00</published><updated>2011-12-21T07:30:00.678+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='графика'/><title type='text'>Слон кирпич безумная пчела</title><content type='html'>&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/565367/"&gt;&lt;img alt="" border="0" height="64" src="http://img-fotki.yandex.ru/get/4424/97637398.6/0_8a077_c3fd63a9_M.jpg" title="" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Детям нравится.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-8809202803866650319?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/8809202803866650319/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_21.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8809202803866650319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8809202803866650319'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_21.html' title='Слон кирпич безумная пчела'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-5700010738012348696</id><published>2011-12-20T16:36:00.001+04:00</published><updated>2011-12-22T10:51:48.830+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='gpu'/><title type='text'>Клуу</title><content type='html'>Какое-то время я не мог решить CUDA или OpenCL, пока не решил скачать CUDA SDK. Увидев размер дистрибутива CUDA, скачал микронный Cloo. Первое знакомство, осваивание и рабочий образец получился в тот же день.&lt;br&gt;&lt;br&gt;C#.NET 2.0 + OpenCL (Cloo), кернел совершенно не оптимизированный: просто перенес код из C# на OpenCL-Си.&lt;br&gt;&lt;br&gt;Первый, пробный запуск - мандельбульб вид сверху, 16 на 16 пикселей, два цвета :)&lt;br&gt;&lt;br&gt;&lt;img border="0" height="16" src="http://4.bp.blogspot.com/-PbIss2-cv9c/TvDG9V9gSYI/AAAAAAAAAjU/1lDd8mnFZkQ/s400/opencl_mandelbulb_first-result.png" width="16"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Далее картинка 800x800px. Для каждого пикселя нужно выполнить 800 пакетов вычислений. В каждом пакете - синусы, косинусы, арксинусы, возведения в восьмую степень, извлечения квадратов и пр. Итого 800x800x800 = 512 миллионов пакетов на всю картинку.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/565018/"&gt;&lt;img alt="" border="0" height="436" src="http://img-fotki.yandex.ru/get/4/97637398.6/0_89f1a_96ac775d_L.jpg" title="" width="500"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Результат:&lt;br&gt;CPU (Voxel) = 3 мин. 27 сек.&lt;br&gt;GPU (Voxel) = &lt;u&gt;15 сек.&lt;/u&gt;&lt;br&gt;&lt;br&gt;Для сравнения: CPU (DE) = 27 сек., т. е. на видеокарте уже можно получить рендеринг в реальном времени с хорошей частотой кадров.&lt;br&gt;&lt;br&gt;Результаты замеров вместе с компиляцией кернела, загрузкой в память GPU... один хрен, разница существенная и заметна невооруженным взглядом.&lt;br&gt;&lt;br&gt;Подробнее о системах на которых проводил испытания&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/blog-post_20.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-5700010738012348696?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/5700010738012348696/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_20.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5700010738012348696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5700010738012348696'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_20.html' title='Клуу'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-PbIss2-cv9c/TvDG9V9gSYI/AAAAAAAAAjU/1lDd8mnFZkQ/s72-c/opencl_mandelbulb_first-result.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1094411243666115292</id><published>2011-12-18T07:30:00.000+04:00</published><updated>2011-12-23T00:41:10.542+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>DE архитектурнее</title><content type='html'>Мандельбульб четвертой степени на основе distance estamation (DE), появляются беседки (1), мосты (2) и колонны (3)&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/563768/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4421/97637398.6/0_89a38_b42472c5_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;В обычном брутфорсном алгоритме такого нет: мандельбульб выглядит кактусом в миксере, плюс бесконечные спуски и разломы. Формулы немного различаются?&lt;br&gt;&lt;br&gt;Чтобы лучше понять, смотрим анимацию на которой последовательно растет число итераций&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/de.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1094411243666115292?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1094411243666115292/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/de.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1094411243666115292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1094411243666115292'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/de.html' title='DE архитектурнее'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-9110142627329755219</id><published>2011-12-17T13:11:00.000+04:00</published><updated>2011-12-23T00:41:10.625+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Звезда смерти или большой плюх</title><content type='html'>Большой плюх (мандельбульб 32-й степени) 2000x2000 пикселей&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/563763/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4422/97637398.6/0_89a33_7f5834f8_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Посмотрим ближе&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/blog-post_17.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-9110142627329755219?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/9110142627329755219/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_17.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9110142627329755219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9110142627329755219'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_17.html' title='Звезда смерти или большой плюх'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-5619445820287344438</id><published>2011-12-16T13:03:00.002+04:00</published><updated>2011-12-23T00:41:10.588+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Distance Estimation Mandelbulb</title><content type='html'>Поигрался с экспериментальным движком HyperFractal на основе distance estimation. Осталось несколько нерешенных вопросов.&lt;br /&gt;&lt;br /&gt;Мандельбульб четвертой степени в высоком разрешении (2000x2000)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/563757/"&gt;&lt;img alt="" border="0" height="500" src="http://img-fotki.yandex.ru/get/4527/97637398.6/0_89a2d_3721ac36_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-5619445820287344438?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/5619445820287344438/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/distance-estimation-mandelbulb.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5619445820287344438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5619445820287344438'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/distance-estimation-mandelbulb.html' title='Distance Estimation Mandelbulb'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4602432714885000825</id><published>2011-12-15T09:24:00.000+04:00</published><updated>2011-12-23T00:41:10.577+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>TRON, изоморфы и мандельбульбер</title><content type='html'>Смотрим кадры из Трон - Наследие (TRON Legacy), затем кадр из Mandelbulber&lt;br&gt;&lt;br&gt;TRON, здания изоморфов&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/563024/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5413/97637398.6/0_89750_c3c10d46_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Мандельбульбер&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/tron.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4602432714885000825?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4602432714885000825/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/tron.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4602432714885000825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4602432714885000825'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/tron.html' title='TRON, изоморфы и мандельбульбер'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-pErhj6In5tA/TZOItGS2r_I/AAAAAAAAAW4/F8cE1wKqBeI/s72-c/05.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4376614873410621768</id><published>2011-12-14T10:26:00.001+04:00</published><updated>2011-12-14T10:26:30.104+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Визуализация работы машины</title><content type='html'>Никогда, никогда, вообще никогда не делать таких...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/562256/"&gt;&lt;img alt="" border="0" height="375" src="http://img-fotki.yandex.ru/get/5314/97637398.6/0_89450_85ea3111_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4376614873410621768?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4376614873410621768/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_4820.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4376614873410621768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4376614873410621768'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_4820.html' title='Визуализация работы машины'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1453603154673746549</id><published>2011-12-14T09:56:00.001+04:00</published><updated>2011-12-14T10:08:17.153+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Цветные диаграммы</title><content type='html'>Продолжаю лепить интерфейс для проекта. Главный экран переработан (предыдущий вариант в посте &lt;a href="http://woronoi.blogspot.com/2011/11/blog-post_17.html"&gt;&amp;quot;Черный фон, белые буквы&amp;quot;&lt;/a&gt;). Состояние системы легко считывается метров с восьми. Пора подключать тестового оператора, для едкой критики и ценных советов&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/562248/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4525/97637398.6/0_89448_351c27a7_orig.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Анимированный вариант&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/blog-post_14.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1453603154673746549?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1453603154673746549/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_14.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1453603154673746549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1453603154673746549'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post_14.html' title='Цветные диаграммы'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7264226906618240595</id><published>2011-12-06T08:47:00.001+04:00</published><updated>2011-12-23T00:44:57.041+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='графика'/><title type='text'>Myth - History of The Making</title><content type='html'>Нужно быстро вытащить один или несколько уровней из старой игрушки, засунуть их в бесплатный редактор уровней &lt;a href="http://www.mapeditor.org/"&gt;Tiled&lt;/a&gt;, из которого получить уровень в виде XML-файла с привязанным к нему набором тайлов (tileset) в виде PNG... который можно засунуть... да хотя бы в &lt;a href="http://www.melonjs.org/"&gt;MelonJS&lt;/a&gt;.&lt;br&gt;&lt;br&gt;На примере &lt;a href="http://www.worldofspectrum.org/infoseekid.cgi?id=0003354"&gt;Myth - History In The Making&lt;/a&gt;, вышедшей на ZX Spectrum&amp;#39;е.&lt;br&gt;&lt;br&gt;Берем типичный игровой экран, оцениваем &amp;quot;на глаз&amp;quot; размер тайла: где-то 8x8 пикселей получаем.&lt;br&gt;&lt;br&gt;&lt;img src="http://www.worldofspectrum.org/showscreen.cgi?screen=screens/in-game/m/Myth-HistoryInTheMaking.gif"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Затем грузим в Paint.NET полную карту прохождения уровней в виде одного большого GIF&amp;#39;а и режем ее на отдельные уровни. Карту игры берем на том же World of Spectrum.&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/myth-history-of-making.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7264226906618240595?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7264226906618240595/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/myth-history-of-making.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7264226906618240595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7264226906618240595'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/myth-history-of-making.html' title='Myth - History of The Making'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-5903341910360099718</id><published>2011-12-03T22:21:00.001+04:00</published><updated>2011-12-06T10:13:46.043+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='графика'/><title type='text'>Спирограф</title><content type='html'>&lt;a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D1%84_(%D0%B8%D0%B3%D1%80%D1%83%D1%88%D0%BA%D0%B0)"&gt;Спирограф&lt;/a&gt;. Не фракталы, и не три дэ: пластина с дыркой, колесо с отверстиями и пара-тройка цветных ручек&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/560265/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/5823/97637398.5/0_88c89_d8f4337d_L.jpg" title="" alt="" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Почти гравюра&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/12/blog-post.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-5903341910360099718?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/5903341910360099718/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5903341910360099718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/5903341910360099718'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/12/blog-post.html' title='Спирограф'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-93759190979625204</id><published>2011-11-17T11:42:00.001+04:00</published><updated>2011-12-06T10:13:46.117+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Черный фон, белые буквы</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;i&gt;&amp;quot;У вас какой-то детский подход: говно, оно ведь не только коричневое.&amp;quot;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;i&gt;Заказчик рассуждает об интерфейсах&lt;/i&gt;&lt;/div&gt;&lt;br&gt;Разработка начинается &amp;quot;сделайте нам... и чтобы была графическая панель&amp;quot;. Что будет отображаться на панели, заказчик не знает и ему все равно, но(!) когда абстрактное &amp;quot;это &amp;quot; будет готово, заказчик начнет ныть и конючить: &amp;quot;Что это? А как тут нажать? А вот нам бы вывести ток, мы иногда по таблице считаем.&amp;quot; Поэтому интерфейс - головная боль разработчика. И, да, не давайте разрабатывать интерфейс программистам. Они привыкли к инструментам, а не то, к чему привык человек. Только делать интерфейс будут все-равно программисты. Они же будут его исправлять и дополнять. Каша из букв, цифр, иконок такой-то матери... все это будет.&lt;br&gt;&lt;br&gt;К тому же, заказчику совершенно не нужен интерфейс, ему нужно &amp;quot;чтобы работало&amp;quot;, а интерфейс ему только мешает. Дайте больших прорезиненых кнопок и больших ярко-красных лампочек, но чтобы цифры были. И, да, чтобы параметры системы было видно... и еще бы уровень показать, да чтобы...&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/553272/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5818/97637398.5/0_87138_2b5dce82_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/11/blog-post_17.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-93759190979625204?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/93759190979625204/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/11/blog-post_17.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/93759190979625204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/93759190979625204'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/11/blog-post_17.html' title='Черный фон, белые буквы'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1714245858767046639</id><published>2011-11-17T10:54:00.001+04:00</published><updated>2011-12-06T10:13:45.943+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Плохой, но понятный интерфейс</title><content type='html'>Картинка ниже - пример плохого интерфейса на 17&amp;quot; панели оператора. Не сенсорной. Управление мышкой и клавиатурой.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/553262/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4418/97637398.5/0_8712e_51ff58c6_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Тем не менее, такой интерфейс понятен заказчику и он легко им владеет. О чем это говорит?&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/11/blog-post.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1714245858767046639?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1714245858767046639/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1714245858767046639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1714245858767046639'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/11/blog-post.html' title='Плохой, но понятный интерфейс'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4604817393660903530</id><published>2011-10-14T03:30:00.000+04:00</published><updated>2011-12-06T10:13:46.012+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Насос Г</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;i&gt;Перечитал и ужаснулся, но править не буду.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;i&gt;Оставлю себе в назидание.&lt;/i&gt;&lt;/div&gt;&lt;br&gt;Закончен очередной интерфейс для промышленного объекта. Обычно принято расписывать какие разработчики молодцы и какие подходы они использовали: цвет заглядение, оператор нажимает кноки на 100 миллисекунд быстрее... Я буду ругать. Свой же интерфейс.&lt;br&gt;&lt;br&gt;Система управления насосом. Насос может качать, а может работать в цикле: 20 часов качает, три часа стоит, затем опять 20 часов... пока не выкачает всё Г. Мощность 160 киловатт.&lt;br&gt;&lt;br&gt;Управляется ценными прорезиненными переключателями и кнопками. Параметры объекта задаются на сенсорной панели. Плохо, что наэкранные кнопки маленькие. Пальцем нажимаются, но ощущется дискомфорт. Надо больше, но экран не резиновый, а всего-лишь 4.3&amp;quot;&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/544404/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5311/97637398.5/0_84e94_94268a37_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Плохо, что текущие отображаемые параметры выравнены ёлочкой. Это очень плохо, но ширина цифрового поля вывода фиксирована и либо елочкой, либо единицы измерения будут отстоять на разном расстоянии, что еще хуже.&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/10/blog-post_14.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4604817393660903530?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4604817393660903530/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/10/blog-post_14.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4604817393660903530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4604817393660903530'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/10/blog-post_14.html' title='Насос Г'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-9131267791574287278</id><published>2011-10-13T09:00:00.000+04:00</published><updated>2011-12-06T10:13:46.113+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Рекомендации к разработке интерфейсов</title><content type='html'>...для сенсорных панелей в комплексных системах управления промышленными объектами. Рекомендации, а не требования. Что-то спорно, а что-то требует уточнения. И конечно же список можно продолжать. Черновик.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Изображения/иконки выравнивать относительно букв, а не по пикселям. Т.е. выровняли по пикселям и доравняли под поясняющую надпись. Ширина разных букв воспринимается по разному.&lt;/li&gt;&lt;li&gt;Аварийные и ошибочные надписи писать сплошными заглавными буквами.&lt;/li&gt;&lt;li&gt;Не использовать таблицы и рамки в качестве разделителей, но можно выделять блоки фоновым цветом.&lt;/li&gt;&lt;li&gt;Для текущих параметров - темный контрастный цвет надписи (черный, темно синий, темно зеленый), светлый приглушенный неконтрастный для цвета фона (светло серый, бежевый). Например: черные надписи, белый фон. Яркий фон и яркий цвет надписи для сообщения об ошибках: желтый или белый на красном.&lt;/li&gt;&lt;li&gt;Единицы измерения пишутся справа или снизу параметра.&lt;/li&gt;&lt;li&gt;Использовать красный, желтый и оранжевый цвета только для предупредительных, запретительных и восклицательных элементов.&lt;/li&gt;&lt;li&gt;Кнопки всегда остаются на своих местах, не нужно делать плавающие элементы управления и не нужно скрывать их с экрана.&lt;/li&gt;&lt;li&gt;Запрещенные кнопки (которые нельзя нажать) не только приглушать цветом, но и перечеркивать (по диагонали или крестом). По другому, они должны отличаться от разрешенных кнопок. Идеальный вариант - когда таких кнопок нет.&lt;/li&gt;&lt;li&gt;Большой промежуток между названием и значением параметра заполнять многоточием приглушенного цвета. Взгляд не должен рыскать по экрану в поисках названия параметра.&lt;/li&gt;&lt;li&gt;Отделять блоки параметров с помощью большого белого пространства. Дайте интерфейсу дышать.&lt;/li&gt;&lt;li&gt;Не размещать сенсорные элементы впритык к краю экрана: бордюр сенсорного экрана приподнят и затрудняет нажатие. И наоборот, элемент который должен нажиматься с трудом - располагать у края экрана.&lt;/li&gt;&lt;li&gt;Сенсорные элементы должны нажиматься без ложных срабатываний большим пальцем руки взрослого человека.&lt;/li&gt;&lt;li&gt;Сообщения об ошибках и авариях должны быть крупные, как можно более красные, возможно мигающие (побуждать к исправлению). Должны считываться с большого расстояния, не обязательно читаться, но определяться должны.&lt;/li&gt;&lt;li&gt;Не бывает главного или основного экрана. Все экраны должны иметь свои различные названия или номера и они должны выводиться на экран.&lt;/li&gt;&lt;li&gt;По возможности использовать надписи, а не пиктограммы/иконки/значки. &lt;/li&gt;&lt;li&gt;Использовать пиктограммы для информационных (не важных) значений параметров. Например, мощность сигнала при беспроводной связи; текущее время.&lt;/li&gt;&lt;li&gt;Названия параметров пересекающиеся в терминах, но с разными единицами измерений должны быть переименованы. Например, частота тока (герцы) и частота вращения (обороты в минуты) должны быть переименованы в "частоту тока" и "скорость", но(!) с учетом того, что "скорость" будет пониматься как "обороты в минуту", а не как "метры в секунду". И наоборот: нельзя называть "частоту вращения" скоростью, если это не противоречит выше сказанному.&lt;/li&gt;&lt;li&gt;Заданные и текущие значения одного параметры желательно размещать рядом.&lt;/li&gt;&lt;li&gt;Если что-то осталось, прошло, истекло, то где-то должно быть указано сколько всего было и оно должно быть доступным к просмотру.&lt;/li&gt;&lt;li&gt;Не размещать на одном экране значения одного параметры "прошло" и "осталось", в них легко запутаться. Тем более не размещать их рядом.&lt;/li&gt;&lt;li&gt;Использовать "светофор", подкрашивать названия состояний: норма/готов -&amp;nbsp;зеленый, внимание - желтый, авария/ошибка - красный.&lt;/li&gt;&lt;li&gt;Мигающие надписи должны побуждать оператора к действию, а не привлекать внимания. Например, побуждать к нажатию кнопки или исправлению ошибки: мигающая надпись "Ожидание старта", должна побуждать к нажатию кнопки "старт". Если же надпись описывает какое-то промежуточное состояние системы и действие оператора не требуется, надпись мигать не должна.&lt;/li&gt;&lt;li&gt;Поясняющие надписи не нужны. Если они есть, экран нужно переделать.&lt;/li&gt;&lt;li&gt;Избегать кнопок "сохранить", "назад", "главный", "отмена", "закрыть", если при нажатии меняется текущий экран. Иными словами: всегда должно быть понятно, куда приведет нажатие кнопки.&lt;/li&gt;&lt;li&gt;Кнопка выполняет действие, это не обязательно глагол, может быть и название экрана. Кнопка показывает, что произойдет, если ее нажать. Она не должна быть индикатором.&lt;/li&gt;&lt;li&gt;Названия параметров и закладок выравниваются по левому краю. Названия кнопок - по центру.&lt;/li&gt;&lt;li&gt;Сообщения об ошибках/авариях желательно снабжать уникальным кодом ошибки. Желательно, чтобы код был цифровым и не длиннее двух цифр.&lt;/li&gt;&lt;li&gt;Длительный отсчет времени (несколько часов или минут) нужно снабжать отсчетом секунд, чтобы было видно, что отсчет идет.&lt;/li&gt;&lt;li&gt;В отсчетах промежутков времени, часы, минуты и секунды лучше разделять буквами ч,м,с или ч,мин,сек: "Осталось 123ч 56м 44с". Двоеточие использовать в указании точного момента времени события: "Старт системы в 12:23:45".&lt;/li&gt;&lt;li&gt;Если что-то происходит, то на экране должно что-то меняться.&lt;/li&gt;&lt;li&gt;Круговые диаграммы, спидометры, прогресс бар и подобные им индикаторы уместны для быстрого считывания "на бегу" текущего положения относительно начала/окончания процесса. Как правило, они вообще не нужны. Хороший интерфейс - текстовый интерфейс.&lt;/li&gt;&lt;li&gt;Значения параметров лучше выравнивать по правому краю. Единицы измерения по левому краю, если они справа от параметра, но выровнять так же как и параметр если они снизу параметра.&lt;/li&gt;&lt;li&gt;Размер шрифта единиц измерений должен быть меньше размера шрифта значения параметра.&lt;/li&gt;&lt;li&gt;Надписи в различных блоках на одном экране желательно выравнивать по единой сетке.&lt;/li&gt;&lt;li&gt;Выравнивание "ёлочкой" - недопустимо.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-9131267791574287278?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/9131267791574287278/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/10/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9131267791574287278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9131267791574287278'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/10/blog-post.html' title='Рекомендации к разработке интерфейсов'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-8204166966954940222</id><published>2011-10-12T14:46:00.000+04:00</published><updated>2011-12-06T10:13:46.095+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интерфейс'/><title type='text'>Focal Fuse</title><content type='html'>Из неизданного. Как писатели пишут в стол, так и тут - из под стола, недоделанный и незаконченный. Еще один эксперимент с интерфейсом.&lt;br&gt;&lt;br&gt;У любимой утилиты TuFuse консольный интерфейс и пусть таким же остается, но захотелось поэкспериментировать: поднадоели мне стандартные окошки, кнопки, закладки, хочется чтобы интерфейс дышал. MS Metro UI - тебе привет.&lt;br&gt;&lt;br&gt;И главное - никакой графики: как был интерфейс текстовым, так и остался. Пожалуй, в дальнейшем буду клепать именно такие &amp;quot;просторные&amp;quot; интерфейсы. Все ниже отскриншотенное написано под .NET 2.0, и никаких DHTML и др. блядских кросс-веб-десктоп-технологий. &lt;a href="http://awesomium.com/"&gt;Awesomium&lt;/a&gt; - привет!&lt;br&gt;&lt;br&gt;Все, что подчеркнуто - кнопки: черные - переключают окна/страницы, оранжевые - выполняют действия. Окно программы - таскается по десктопу за верхнюю часть окна, ресайзится - за серый диск в правом, нижнем углу. Индикаторы наличия утилит TuFuse и dcraw в левом, нижнем углу: черный - утилита доступна, бледная немочь - утилита не найдена.&lt;br&gt;&lt;br&gt;Список картинок&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/543847/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4416/97637398.5/0_84c67_2b42d393_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/10/focal-fuse.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-8204166966954940222?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/8204166966954940222/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/10/focal-fuse.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8204166966954940222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8204166966954940222'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/10/focal-fuse.html' title='Focal Fuse'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-8761263494146378487</id><published>2011-10-12T09:00:00.000+04:00</published><updated>2011-12-23T00:41:10.619+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>POV-Ray</title><content type='html'>Все-таки откопал что-то из POV-Ray насчет рендеринга фракталов. Ниже главное окно POV-Ray консоли. Видно как подгружается экспортированный из HyperFractal&amp;#39;а текстовик с просчитанными данными (123.txt).&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/543544/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5310/97637398.5/0_84b38_e35ecaaf_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Графическое разрешение в HyperFractal&amp;#39;е и POV-Ray должно совпадать, иначе получим кубики (об этом в самом конце поста). В результате получается то, что ниже.&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/10/pov-ray.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-8761263494146378487?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/8761263494146378487/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/10/pov-ray.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8761263494146378487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8761263494146378487'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/10/pov-ray.html' title='POV-Ray'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-6491901331089377366</id><published>2011-10-11T14:38:00.000+04:00</published><updated>2011-12-23T00:41:10.596+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Сепия и свечение в HyperFractal DE</title><content type='html'>...и совсем последний пост про фракталы. Внезапно нашел неопубликованное.&lt;br&gt;&lt;br&gt;На каком-то из этапов я использовал POV-Ray для визуализации просчитанного гиперфрактала. Результат был такой же как и в текущем моем рендере. Если не считать того, что в POV-Ray можно было изменять характер текстуры фрактала, добавлять источники освещения и пр. пр., лишь бы не менялся ракурс и положение камеры. Из минусов - большой размер текстовика сцены для рендера. При разрешении 800x800 получалось порядка 100 мегабайтный текстовик просчитанных треугольников.&lt;br&gt;&lt;br&gt;HyperFractal обсчитывал фрактал и топорно визуализировал. Затем можно было экспортировать просчитанные точки в текстовик для POV-Ray. Дальше POV-Ray - рендерил, т. е. требовалось дополнительное время. Картинок тех экспериментов не осталось, но впечатлил редактор текстовика-сцены: он спокойно переваривал и позволял редактировать 200-мегабайтные тексты сцены.&lt;br&gt;&lt;br&gt;Потом, когда я целиком перешел на рендер собственного производста и экспериментировал с distance estimation для mandelbulb, я добавил эффект свечения и сепии... получилось неплохо, но потом забросил. Зря наверное, получалось эффектно.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/542834/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5817/97637398.5/0_84872_79997e01_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/10/hyperfractal-de.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-6491901331089377366?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/6491901331089377366/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/10/hyperfractal-de.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6491901331089377366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6491901331089377366'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/10/hyperfractal-de.html' title='Сепия и свечение в HyperFractal DE'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1321865667205347683</id><published>2011-09-26T15:06:00.000+04:00</published><updated>2011-12-23T00:41:10.544+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Фракталы в большом разрешении</title><content type='html'>Для закрытия темы рендеринга фракталов силами C#, две картинки большого разрешения: 2000x2000 и 3000x3000. Оверсэмплинг - замечательная вещь. Вблизи, один-к-одному, оно как-то не очень и пиксели.&lt;br&gt;&lt;br&gt;Mandelbulb, DE (distance estimation), Ambient Occlusion. По кликам доступны картинки в полном разрешении: после клика, где-то снизу есть ссылка &amp;quot;в другом размере&amp;quot; - &amp;quot;оригинальный размер&amp;quot;.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/535996/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4413/97637398.5/0_82dbc_931d954a_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/09/blog-post_26.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1321865667205347683?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1321865667205347683/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post_26.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1321865667205347683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1321865667205347683'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post_26.html' title='Фракталы в большом разрешении'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-519038868830128332</id><published>2011-09-26T10:33:00.001+04:00</published><updated>2011-12-22T10:45:49.210+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Рендер фрактала на C#</title><content type='html'>Один из последних экспериментов с рендером гиперфракталов на C# с использованием distance estimation (DE). Кроме мандельбульб (mandelbulb), я пробовал Menger Sponge и его модификации. Результат по скорости очень хороший, но смысла продолжать рендерить на CPU я не вижу: нужно переходить на GPU и все считать там. C# или C++ особой разницы в производительности не заметно, а вот сам DE прирост дает ощутимый, но картинка становится слишком &amp;quot;гладкой&amp;quot;. На вкус и цвет...&lt;br&gt;&lt;br&gt;Ниже кусок кода отвечающий за расчет фрактала под .NET C#. Он уже заточен под многоядерность и многопоточность. Вполне достаточно для экспериментов при небольшой доработке напильником. Там же заложен Ambient Occlusion и зачатки работы с тенями (интересующийся - найдет самостоятельно).&lt;br&gt;&lt;br&gt;Vector3d и прочие Matrix4d берутся из подключенной сборки OpenTK. ZBuffer хранит цвета расчитанных пикселей, т. е. после расчета  можно делать постпроцессинг (ранее я так обсчитывал тени). Правда, это накладывает ограничение на максимальный размер картинки: памяти может не хватить, но ничто не мешает сразу же рисовать точки на экран, минуя буфер.&lt;br&gt;&lt;br&gt;И, да, практически - это рейтрейсер. Собственно так оно и делается.&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/09/c.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-519038868830128332?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/519038868830128332/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/c.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/519038868830128332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/519038868830128332'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/c.html' title='Рендер фрактала на C#'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-6788557846180873201</id><published>2011-09-16T11:00:00.000+04:00</published><updated>2011-12-06T10:13:46.058+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>УПА-510</title><content type='html'>Подаренный фотоувеличитель со временем должен превратиться в штатив для цифромыльницы. Это позволит делать серии снимков с разной глубиной фокуса.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/530327/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4412/97637398.5/0_81797_8a5887dc_L.jpg" title="" alt="" border="0"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-6788557846180873201?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/6788557846180873201/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/510.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6788557846180873201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6788557846180873201'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/510.html' title='УПА-510'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1081379287638320853</id><published>2011-09-09T20:18:00.000+04:00</published><updated>2011-12-06T10:13:45.934+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Вы точно это ели</title><content type='html'>...и не один раз, и по несколько штук за раз: вареными, жареными, солеными. С виду ничего примечательного, но вблизи - орёл!&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/528030/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4610/97637398.5/0_80e9e_edc0cce3_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Оно же - чуть дальше, зато видно &amp;quot;шерсть&amp;quot;&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/09/blog-post_09.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1081379287638320853?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1081379287638320853/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post_09.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1081379287638320853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1081379287638320853'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post_09.html' title='Вы точно это ели'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-9169337289690771443</id><published>2011-09-06T09:12:00.000+04:00</published><updated>2011-12-06T10:13:46.115+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Фотопринтер</title><content type='html'>Сканировал фотографию в единственном экземпляре и обратил внимание на цветные полоски на отсканированном изображение. Закралось подозрение что фотка распечатана на фотопринтере.&lt;br&gt;&lt;br&gt;Выставил разрешение сканера на максимум оптики - 1200 dpi&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/526512/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5811/97637398.5/0_808b0_b910bc09_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Потом достал микроскоп и заглянул в него. Увеличение 80x. Цветных полос не видно, крупинок тонера не видно. Цветные кляксы - видно. Фотопринтер?&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/09/blog-post_06.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-9169337289690771443?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/9169337289690771443/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post_06.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9169337289690771443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/9169337289690771443'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post_06.html' title='Фотопринтер'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-869002914615423813</id><published>2011-09-05T19:16:00.001+04:00</published><updated>2011-12-06T10:13:46.103+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Туалетная бумага, фланель, резина и липкие листочки</title><content type='html'>Для начала, &lt;b&gt;фланель &lt;/b&gt;(мягкая тряпочка шла в комплекте с монитором), обработка в &lt;b&gt;TuFuse&lt;/b&gt;:&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/526484/"&gt;&lt;img alt="Фланель" border="0" src="http://img-fotki.yandex.ru/get/5813/97637398.5/0_80894_323d3295_L.jpg" title="Фланель"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/09/blog-post_05.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-869002914615423813?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/869002914615423813/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post_05.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/869002914615423813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/869002914615423813'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post_05.html' title='Туалетная бумага, фланель, резина и липкие листочки'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1968641579642698289</id><published>2011-09-05T15:16:00.000+04:00</published><updated>2011-12-06T10:13:45.952+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Helicon Focus vs TuFuse</title><content type='html'>&lt;b&gt;TuFuse &lt;/b&gt;- консольная утилита для сложения фотографий с разной экспозицией... псевдо-HDR в ней можно делать бесплатно. Попробовал засунуть в нее фотки с разной глубиной фокуса. Иногда что-то получается не хуже чем в Helicon Focus, но фотографии должны быть точно позиционированы: дрожания рук и прочие подвижки изображения приводят к фееричной мозаике.&lt;br&gt;&lt;br&gt;&lt;b&gt;Итог:&lt;/b&gt; TuFuse - бесплатный, не всегда резкие снимки, требует точного позиционирования. Helicon Focus - оставляет артефакты, но делает более резкие снимки. Пока что буду использовать TuFuse.&lt;br&gt;&lt;br&gt;&lt;b&gt;TuFuse&lt;/b&gt;, резина с покрытием, 80x&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/526477/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5812/97637398.5/0_8088d_fc8be965_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Helicon Focus&lt;/b&gt;, сложены те же самые четыре кадра&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/09/helicon-focus-vs-tufuse.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1968641579642698289?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1968641579642698289/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/helicon-focus-vs-tufuse.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1968641579642698289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1968641579642698289'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/helicon-focus-vs-tufuse.html' title='Helicon Focus vs TuFuse'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4531680743759800504</id><published>2011-09-05T11:16:00.000+04:00</published><updated>2011-12-06T10:13:46.007+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Юннат-2П</title><content type='html'>Пока не сломал и не передоделал, сделал контрольный снимок:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/526458/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/5812/97637398.5/0_8087a_f37d4f2c_L.jpg" title="Микроскоп Юннат-2П" alt="Микроскоп Юннат-2П" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Увеличение: 80x .. 400x&lt;br /&gt;Сменные объективы: 8x; 20x.&lt;br /&gt;Окуляр: 10x + 2x линза Барлоу.&lt;br /&gt;Материалы: чугуний, стекло, немного пластика.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4531680743759800504?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4531680743759800504/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/2.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4531680743759800504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4531680743759800504'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/2.html' title='Юннат-2П'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-6725614568508306751</id><published>2011-09-01T21:23:00.001+04:00</published><updated>2011-12-06T10:13:46.056+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Макро и микро</title><content type='html'>Поймал мошку, положил под микроскоп и сделал снимок в режиме макро. &lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/523675/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4409/97637398.5/0_7fd9b_a95e56a9_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Засунул между мошкой и фотоаппаратом микроскоп и сделал снимок. Режим теперь можно назвать &amp;quot;микро&amp;quot;. Настройки в фотоаппарате не менял. &lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/09/blog-post.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-6725614568508306751?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/6725614568508306751/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6725614568508306751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6725614568508306751'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/blog-post.html' title='Макро и микро'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2302277084949601454</id><published>2011-09-01T20:49:00.000+04:00</published><updated>2011-12-06T10:18:43.607+04:00</updated><title type='text'>Helicon Focus vs Registax</title><content type='html'>Сравнил &lt;a href="http://www.heliconsoft.com/heliconfocus.html"&gt;Helicon Focus&lt;/a&gt; и &lt;a href="http://www.astronomie.be/registax/"&gt;Registax&lt;/a&gt;. Первый стоит денег (через 30-ть дней), второй бесплатный. Первый отлично подходит для микрофото, второй похоже для астрофото (еще есть Avistack, но у него проблемы с большими картинками). Registax умеет отслеживать перемещение объекта по кадру, Focus - нет. &lt;br&gt;&lt;br&gt;Helicon Focus умеет строить неполные 3D-модели, и выводить их под анаглиф и пр. стерео. Оно еще много всего умеет, но стоит денег.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/523670/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4610/97637398.4/0_7fd96_750c2160_L.jpg" title="" alt="" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Сравнение...&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/09/helicon-focus-vs-registax.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2302277084949601454?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2302277084949601454/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/09/helicon-focus-vs-registax.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2302277084949601454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2302277084949601454'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/09/helicon-focus-vs-registax.html' title='Helicon Focus vs Registax'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1303969252501575014</id><published>2011-08-31T21:41:00.003+04:00</published><updated>2011-12-06T10:13:45.936+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Тонкие вещи</title><content type='html'>Тонкие вещи любят обманывать зрение или наносить острые раны: швейная игла пускает капельку крови, канцелярский нож при неосторожном использовании может запросто навесить кличку &amp;quot;беспалый&amp;quot;, и сколько в рекламе не говорят про чешуйки на волосах, кроме перхоти с головы ничего не сыпется. Посмотрим ближе. &lt;br&gt;&lt;br&gt;&lt;b&gt;Швейная игла.&lt;/b&gt; 400х, три снимка сложены в регистаксе.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/522576/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4518/97637398.4/0_7f950_18d7223a_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_31.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1303969252501575014?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1303969252501575014/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_31.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1303969252501575014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1303969252501575014'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_31.html' title='Тонкие вещи'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-72033432761259299</id><published>2011-08-30T22:57:00.002+04:00</published><updated>2011-12-06T10:13:46.066+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Экраны телефонов</title><content type='html'>Экраны телевизоров фоткают все, кому не лень, а я возьму и сделаю сравнительный... Увеличение одинаковое (где-то 80x-100x), условия одинаковые, телефоны разные. Фоткать было тяжело, экраны гасли от усилий.&lt;br&gt;&lt;br&gt;Экран телефона МТС Huawei 128x128&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/522218/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5306/97637398.4/0_7f7ea_8626b975_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Экран телефона Sony-Ericsson k810i 240x320&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_494.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-72033432761259299?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/72033432761259299/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_494.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/72033432761259299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/72033432761259299'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_494.html' title='Экраны телефонов'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-6674541289611667477</id><published>2011-08-30T22:41:00.000+04:00</published><updated>2011-12-06T10:13:46.051+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Мусор</title><content type='html'>В капле воды много мусора и водорослей. Что из них что, я пока только догадываюсь, хотя есть умная книга &lt;a href="http://narod.ru/disk/6988228000/%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%20%D0%BF%D1%80%D0%B5%D1%81%D0%BD%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D1%8B%D1%85%20%D0%B1%D0%B5%D1%81%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE%D0%BD%D0%BE%D1%87%D0%BD%D1%8B%D1%85%20%D0%95%D0%B2%D1%80%D0%BE%D0%BF%D0%B5%D0%B9%D1%81%D0%BA%D0%BE%D0%B9%20%D1%87%D0%B0%D1%81%D1%82%D0%B8%20%D0%A1%D0%A1%D0%A1%D0%A0.djvu.html"&gt;Определитель пресноводных беспозвоночных Европейской части СССР.djvu&lt;/a&gt;&lt;br&gt;(20.85 Мб). Помогает мало. Например, что это ниже: водоросль или засохшая амеба?&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/522216/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4813/97637398.4/0_7f7e8_88167b0a_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_30.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-6674541289611667477?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/6674541289611667477/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_30.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6674541289611667477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/6674541289611667477'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_30.html' title='Мусор'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3660599573955191964</id><published>2011-08-29T22:32:00.000+04:00</published><updated>2011-12-06T10:13:45.991+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Монеты</title><content type='html'>Рассматривать в микроскоп монеты - скучно, но кое-что интересного есть и там. Например, логотип монетного двора. Панорамы-склейка из нескольких фото.&lt;br&gt;&lt;br&gt;Московский Монетный Двор. 10-ть рублей.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/521729/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5013/97637398.4/0_7f601_76f53e24_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_29.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3660599573955191964?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3660599573955191964/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_29.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3660599573955191964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3660599573955191964'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_29.html' title='Монеты'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2853188177772419489</id><published>2011-08-28T20:39:00.000+04:00</published><updated>2011-12-11T23:29:40.470+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Простохищник</title><content type='html'>Нашел еще одного простейшего или кто это? Оно питалось и резвилось. Видел у него реснички: ловко загребает, но видно на грани глюка, на видео кое-где проступают впереди по ходу движения.&lt;br&gt;&lt;br&gt;&lt;a href="http://img-fotki.yandex.ru/get/5213/97637398.4/0_7f1e2_abc5c78e_orig" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img-fotki.yandex.ru/get/5213/97637398.4/0_7f1e2_abc5c78e_orig"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_28.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2853188177772419489?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2853188177772419489/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_28.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2853188177772419489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2853188177772419489'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_28.html' title='Простохищник'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7895702534933930628</id><published>2011-08-27T21:00:00.000+04:00</published><updated>2011-12-11T23:27:44.116+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Трагедия в капле воды</title><content type='html'>Вот так крутишься, вертишься, а мир внезапно берет и накрывается медным тазом... Капля воды из кружки с цветком медленно испаряется под светом лампы.&lt;br /&gt;&lt;br /&gt;Сначала свет лампы нагревает воду и простейшие начинают шевелиться. Капля тает, мирок сжимается, их все больше проносится под объективом микроскопа. Пока они не собьются стаями около нитей водорослей и не застынут в кольце сжимающейся пустыни.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7895702534933930628?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7895702534933930628/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_7789.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7895702534933930628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7895702534933930628'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_7789.html' title='Трагедия в капле воды'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2989979219869567501</id><published>2011-08-27T06:00:00.000+04:00</published><updated>2011-12-06T10:13:45.981+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Крыло мухи</title><content type='html'>Вечером на балкон пробралась толстый образец мухи. Пришлось поймать и обобрать. Теперь я точно уверен, что режиссер фильма &amp;quot;Муха&amp;quot;, не раз и не два разглядывал многократно увеличенное изображение насекомого. Любителям проблеваться на фотографии насекомых стоит пропустить этот пост.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/520123/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5113/97637398.4/0_7efbb_32672f50_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_8039.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2989979219869567501?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2989979219869567501/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_8039.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2989979219869567501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2989979219869567501'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_8039.html' title='Крыло мухи'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4783702339958602758</id><published>2011-08-26T20:51:00.000+04:00</published><updated>2011-12-06T10:13:46.020+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Безворсовые чистящие салфетки</title><content type='html'>Ткани вообще трудно фотографировать - нужна большая глубина резкости. Поэтому на черном фоне, чтобы смотрелось эффектнее.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/520121/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4610/97637398.4/0_7efb9_11a1d21f_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_26.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4783702339958602758?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4783702339958602758/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_26.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4783702339958602758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4783702339958602758'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_26.html' title='Безворсовые чистящие салфетки'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7681095400626056467</id><published>2011-08-25T20:46:00.000+04:00</published><updated>2011-12-06T10:13:46.077+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Жидкости</title><content type='html'>Окунемся немного в жидкости и посмотрим как там: капля на предметный стол и крутим фокус. Можно спускаться и подниматься во внутренности капли.&lt;br&gt;&lt;br&gt;Что-то вроде крови пополам с еще чем-то. Цвет действительно оранжевый.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/520120/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4610/97637398.4/0_7efb8_bb929d59_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_25.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7681095400626056467?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7681095400626056467/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_25.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7681095400626056467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7681095400626056467'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_25.html' title='Жидкости'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2020010629587834494</id><published>2011-08-25T20:38:00.000+04:00</published><updated>2011-12-06T10:13:45.956+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='микрофотография'/><title type='text'>Микрофотография</title><content type='html'>Достал старый, но добрый микроскоп, почистил линзы, протер полой футболки предметное зеркальце и вперед. Итак, приступим.&lt;br&gt;&lt;br&gt;Частицы тонера от 3 до 10 микрон, притянутые к бумаге электростатикой и вплавленные в белое полотно барабаном...&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/520129/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5809/97637398.4/0_7efc1_e4bc45cd_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/08/blog-post_27.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2020010629587834494?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2020010629587834494/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_27.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2020010629587834494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2020010629587834494'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_27.html' title='Микрофотография'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4018052695899957755</id><published>2011-08-03T13:04:00.000+04:00</published><updated>2011-12-23T00:41:10.571+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Сортировка</title><content type='html'>После сортировки ситуация немного улучшается, но все равно не решает возникшие проблемы. Нужны например kd-деревья.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/508214/"&gt;&lt;img alt="" border="0" height="375" src="http://img-fotki.yandex.ru/get/5409/97637398.4/0_7c136_b369faaa_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/508213/"&gt;&lt;img alt="" border="0" height="421" src="http://img-fotki.yandex.ru/get/4411/97637398.4/0_7c135_33626f3f_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4018052695899957755?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4018052695899957755/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_03.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4018052695899957755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4018052695899957755'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_03.html' title='Сортировка'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1774503838680122729</id><published>2011-08-02T14:40:00.003+04:00</published><updated>2011-12-23T00:41:10.546+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Преломление</title><content type='html'>Собственно рефракция работает, но есть непорядок в порядке отрисовке объектов: их приходится добавлять в порядке удаления от камеры и это не всегда спасает.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/508020/"&gt;&lt;img alt="" border="0" height="395" src="http://img-fotki.yandex.ru/get/5306/97637398.4/0_7c074_ac1e2099_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В принципе решается алгоритмом типа kd-деревьев. Нужно попробовать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1774503838680122729?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1774503838680122729/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_02.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1774503838680122729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1774503838680122729'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post_02.html' title='Преломление'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1051783717177564005</id><published>2011-08-02T10:01:00.003+04:00</published><updated>2011-12-23T00:41:10.538+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Координаты</title><content type='html'>Опять поплыли координаты. Положение объектов ведут себя неадекватно, где и что размещать получается методом подгонки, рефракция работает, но сложно проверить точность. Время затачивать код.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Картинка размером 2000х1600 в отражениях видны тени.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/507844/"&gt;&lt;img alt="" border="0" height="400" src="http://img-fotki.yandex.ru/get/4411/97637398.4/0_7bfc4_83615038_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1051783717177564005?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1051783717177564005/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1051783717177564005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1051783717177564005'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/blog-post.html' title='Координаты'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2603306725535708571</id><published>2011-08-02T09:18:00.001+04:00</published><updated>2011-12-23T00:41:10.559+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>NwRays</title><content type='html'>&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/507674/"&gt;&lt;img alt="" border="0" height="357" src="http://img-fotki.yandex.ru/get/4410/97637398.4/0_7bf1a_9ff09409_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/507673/"&gt;&lt;img alt="" border="0" height="342" src="http://img-fotki.yandex.ru/get/4707/97637398.4/0_7bf19_1f9a757a_L.jpg" title="" width="500" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2603306725535708571?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2603306725535708571/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/nwrays.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2603306725535708571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2603306725535708571'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/nwrays.html' title='NwRays'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7125478426546528789</id><published>2011-08-01T23:59:00.000+04:00</published><updated>2011-12-23T00:41:10.601+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='рейтрейсинг'/><title type='text'>Just Raytracer</title><content type='html'>Просматривал скриншоты от HyperFractal'а и решил попробовать сделать обычный рэй-трейсер: ага, те самые зеркальные сферы на плоскости.&lt;br /&gt;&lt;br /&gt;Пять часов криво-кода и вот результаты: освещение от нескольких источников накладывается (дифуз, спек), отражения какие-то есть, что-то даже с рефракцией получилось... Пожалуй, буду допиливать.&lt;br /&gt;&lt;br /&gt;...и, пожалуй, нужно поставить цель - стеклянный бокал вина на столе.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7125478426546528789?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7125478426546528789/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/08/just-raytracer.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7125478426546528789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7125478426546528789'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/08/just-raytracer.html' title='Just Raytracer'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3716791615829585140</id><published>2011-06-28T16:15:00.000+04:00</published><updated>2012-02-09T09:22:37.766+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Версия для Linux</title><content type='html'>Пересобрал версию 1.0 под Linux (Xubuntu 10.04). Использовал MonoDevelop. Изменений немного: убрал библиотеку для плавающих окошек и все заработало само.&lt;br /&gt;&lt;br /&gt;Исходники:&amp;nbsp;&lt;a href="http://sites.google.com/site/imfract/hyperfractal/HyperFractal_src_1.0_mono.zip"&gt;HyperFractal_src_1.0_mono.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;И картинка, чтобы не было скучно:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img-fotki.yandex.ru/get/4705/nik-v-voronin.4/0_763df_68fd5c29_L.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3716791615829585140?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3716791615829585140/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/06/linux.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3716791615829585140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3716791615829585140'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/06/linux.html' title='Версия для Linux'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7995002118215397777</id><published>2011-05-31T09:30:00.000+04:00</published><updated>2012-02-09T09:21:33.679+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Версия 1.0 + исходники</title><content type='html'>Версия 1.0:&amp;nbsp;&lt;a href="http://sites.google.com/site/imfract/hyperfractal/HyperFractal_1.0.4168.14804.zip"&gt;HyperFractal_1.0.4168.14804.zip&lt;/a&gt;&lt;br /&gt;Исходники: &lt;a href="http://sites.google.com/site/imfract/hyperfractal/HyperFractal_src_1.0.zip"&gt;HyperFractal_src_1.0.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7995002118215397777?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7995002118215397777/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/10.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7995002118215397777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7995002118215397777'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/10.html' title='Версия 1.0 + исходники'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-8849570777739099936</id><published>2011-05-11T23:54:00.000+04:00</published><updated>2011-12-23T00:41:10.621+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Пять минут спустя</title><content type='html'>Концентрические круги сменяются кубом в концентрических кривулинах, чем-то напомнившего Hellraiser.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/453446/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5903/nik-v-voronin.4/0_6eb46_51f3268e_L.jpg" title="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-8849570777739099936?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/8849570777739099936/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_2007.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8849570777739099936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8849570777739099936'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_2007.html' title='Пять минут спустя'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2509859314410808650</id><published>2011-05-11T23:35:00.000+04:00</published><updated>2011-12-23T00:41:10.557+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Другой АО</title><content type='html'>Переделал алгоритм расчета Ambient Occlusion: теперь вполне честный, с учетом соседей.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/453445/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5704/nik-v-voronin.4/0_6eb45_6dbea487_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/05/blog-post_11.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2509859314410808650?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2509859314410808650/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_11.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2509859314410808650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2509859314410808650'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_11.html' title='Другой АО'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4958556492988002583</id><published>2011-05-07T21:52:00.000+04:00</published><updated>2011-12-23T00:41:10.583+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Ambient occlusion</title><content type='html'>Быстренько так реализовал псевдо-ambient-occlusion. Сильно лучше не стало, нужно думать в сторону более канонической реализации.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/451127/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5302/nik-v-voronin.3/0_6e237_6d1faf1_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/05/ambient-occlusion.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4958556492988002583?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4958556492988002583/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/ambient-occlusion.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4958556492988002583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4958556492988002583'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/ambient-occlusion.html' title='Ambient occlusion'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7687389327814739428</id><published>2011-05-05T22:56:00.000+04:00</published><updated>2011-12-23T00:41:10.605+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Зум в кубе</title><content type='html'>Сравнивая мой способ рендеринга и DE, получается, что мой дает более четкую (острую) картинку, DE - гладкие, округлые поверхности, но(!) DE - рассчитывает на порядок быстрее, просто охрененно-ощутимо-быстрее. Оставляю в будущей версии два рендера на выбор. &lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/450104/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4910/nik-v-voronin.3/0_6de38_140759b4_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/05/blog-post_793.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7687389327814739428?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7687389327814739428/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_793.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7687389327814739428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7687389327814739428'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_793.html' title='Зум в кубе'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-8096997545880152039</id><published>2011-05-05T22:31:00.000+04:00</published><updated>2011-12-23T00:41:10.610+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Шар в центре куба</title><content type='html'>Пока я делаю новый рендер (на том самом DE), сохраняю некоторые снимки со старого, чтобы позже сравнить. В центре Mandelbox&amp;#39;а - шар, в шаре - шар, ... в кубе, ...&lt;br&gt;&lt;br&gt;В Яндекс.Фотках, кста, внизу есть ссылка &amp;quot;В другом размере&amp;quot; → &amp;quot;Оригинал&amp;quot; на оригинальный размер картинок. Под катом картинки большого размера.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/450106/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5505/nik-v-voronin.3/0_6de3a_ba12aef6_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/05/blog-post_05.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-8096997545880152039?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/8096997545880152039/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_05.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8096997545880152039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8096997545880152039'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_05.html' title='Шар в центре куба'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1834241978946876090</id><published>2011-05-03T20:07:00.000+04:00</published><updated>2011-12-23T00:41:10.548+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>В большей степени</title><content type='html'>Изменений в код придется внести немало, чтобы потом не переделывать по сто раз. Пока что несколько картинок (проверяю некоторые вещи)...&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/449947/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5705/nik-v-voronin.3/0_6dd9b_ea0f3f51_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/05/blog-post_03.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1834241978946876090?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1834241978946876090/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_03.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1834241978946876090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1834241978946876090'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post_03.html' title='В большей степени'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2409187243472770928</id><published>2011-05-01T20:58:00.001+04:00</published><updated>2011-12-23T00:41:10.555+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Версия 1.1.x.x</title><content type='html'>Перешел на версию 1.1, в ней нужно реализовать все, что начато или не доделано сейчас. Довести до состояния, когда HyperFractal можно будет выложить в свободный доступ.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/448557/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5605/nik-v-voronin.3/0_6d82d_72d75f80_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;На последок, кусок Juliabulb&amp;#39;а...&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/05/11xx.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2409187243472770928?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2409187243472770928/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/11xx.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2409187243472770928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2409187243472770928'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/11xx.html' title='Версия 1.1.x.x'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-2707642807892222977</id><published>2011-05-01T09:28:00.017+04:00</published><updated>2011-12-23T00:41:10.561+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Черно-белое кино</title><content type='html'>Надоело &amp;quot;черно-белое кино&amp;quot;, один из оригинальных способов раскраски подчерпнул из темы &lt;a href="http://www.fractalforums.com/theory/coloring-the-mandelbulb"&gt;Coloring the Mandelbulb&lt;/a&gt; и немного модифицировал. Еще по раскраске можно глянуть в тему &lt;a href="http://www.fractalforums.com/help-and-support/mandelbox-coloring-in-mandelbulber/"&gt;Mandelbox Coloring in Mandelbulber?&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Mandelbulb&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/448549/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4809/nik-v-voronin.3/0_6d825_9edc1190_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/05/blog-post.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-2707642807892222977?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/2707642807892222977/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2707642807892222977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/2707642807892222977'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/05/blog-post.html' title='Черно-белое кино'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-4492847389853225788</id><published>2011-04-29T22:45:00.008+04:00</published><updated>2011-12-23T00:41:10.573+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Бенчмарк</title><content type='html'>&lt;b&gt;Железо&lt;/b&gt;&lt;br&gt;Intel Core2 Duo T7300 @ 2.00GHz&lt;br&gt;&lt;br&gt;Расчет теней дается дорого и плохо распараллеливается.&lt;br&gt;&lt;br&gt;&lt;b&gt;Mandelbulb&lt;/b&gt;&lt;br&gt;Размер = 800х800 пикселей&lt;br&gt;Расчет точек = 7 мин 53 сек&lt;br&gt;Тени = 23 сек&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/448373/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/5109/nik-v-voronin.3/0_6d775_ff995345_L.jpg" title="" alt="" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/04/blog-post_5101.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-4492847389853225788?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/4492847389853225788/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_5101.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4492847389853225788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/4492847389853225788'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_5101.html' title='Бенчмарк'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7864124454778926686</id><published>2011-04-29T09:47:00.008+04:00</published><updated>2011-12-23T00:41:10.606+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>IFS сбежавшего времени</title><content type='html'>Попробовал изобразить Escape-time IFS (Iterated Function System). В дальнейшем нужно будет заняться более плотно, а пока что Menger Sponge модифицированный под IFS.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/447912/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5903/nik-v-voronin.3/0_6d5a8_12c7ed5_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/04/ifs.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7864124454778926686?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7864124454778926686/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/ifs.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7864124454778926686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7864124454778926686'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/ifs.html' title='IFS сбежавшего времени'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-203584638279872674</id><published>2011-04-29T06:23:00.002+04:00</published><updated>2011-12-22T10:50:37.609+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Сборка проекта по быстрому</title><content type='html'>Банально, но памятку оставить нужно... Не хочу и не вижу смысла ставить Visual Studio на нетбук. Иногда нужно поправить в коде проекта одну цифру, либо добавить пару строк. Для быстрой пересборки проекта достаточно воспользоваться MSBuild.exe который лежит в каталоге с установленным .NET. MSBuild'у достаточно подсунуть файл солюшена (решение, solution, .sln).&lt;br /&gt;&lt;br /&gt;Проект собирается в 2008 студии, поэтому использую MSBuild из .NET 3.5. В каталоге с проектом лежит батник build.cmd (название - произвольное), состоящий из одной единственной строки:&lt;br /&gt;&lt;pre class="brush:csharp"&gt;C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe HyperFractal.sln&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-203584638279872674?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/203584638279872674/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_29.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/203584638279872674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/203584638279872674'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_29.html' title='Сборка проекта по быстрому'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3706338357932980752</id><published>2011-04-28T19:35:00.011+04:00</published><updated>2011-12-22T10:50:37.619+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Вычисление Quadray-мандельброта</title><content type='html'>&lt;pre class="brush:csharp"&gt;// for ex.&lt;br /&gt;int _iterations = 40;&lt;br /&gt;double _bail = 64.0;&lt;br /&gt;double _scale = 2.0;&lt;br /&gt;&lt;br /&gt;public override bool IsInSet(double x, double y, double z)&lt;br /&gt;{&lt;br /&gt;    double ctx = Math.Abs( x + y + z);&lt;br /&gt;    double cty = Math.Abs(-x - y + z);&lt;br /&gt;    double ctz = Math.Abs(-x + y - z);&lt;br /&gt;    double ctw = Math.Abs( x - y - z);&lt;br /&gt;    x = 0.0;&lt;br /&gt;    y = 0.0;&lt;br /&gt;    z = 0.0;&lt;br /&gt;    double w = 0.0;&lt;br /&gt;&lt;br /&gt;    for (int i = 0; i &lt; _iterations; i++)&lt;br /&gt;    {&lt;br /&gt;        double xx = x * x;&lt;br /&gt;        double yy = y * y;&lt;br /&gt;        double ww = w * w;&lt;br /&gt;        double zz = z * z;&lt;br /&gt;&lt;br /&gt;        double wz = _scale * w * z;&lt;br /&gt;        double xy = _scale * x * y;&lt;br /&gt;&lt;br /&gt;        double X1 = xx - yy + wz + ctx;&lt;br /&gt;        double Y1 = yy - xx + wz + cty;&lt;br /&gt;        double Z1 = zz - ww + xy + ctz;&lt;br /&gt;        double W1 = ww - zz + xy + ctw;&lt;br /&gt;        x = X1;&lt;br /&gt;        y = Y1;&lt;br /&gt;        z = Z1;&lt;br /&gt;        w = W1;&lt;br /&gt;        &lt;br /&gt;        double radius = x * x + y * y + z * z + w * w;&lt;br /&gt;        if (radius &gt; _bail)&lt;br /&gt;        {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return true;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3706338357932980752?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3706338357932980752/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/quadray_28.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3706338357932980752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3706338357932980752'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/quadray_28.html' title='Вычисление Quadray-мандельброта'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1939478928156203851</id><published>2011-04-28T17:39:00.016+04:00</published><updated>2011-12-23T00:41:10.549+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Мандельброт в Quadray-координатах</title><content type='html'>Видел раньше &lt;a href="http://www.fractalforums.com/3d-fractal-generation/quadray-sets/"&gt;на форуме&lt;/a&gt;, но сделал только сейчас. Про загадочные quadray-координаты есть в англоязычной части Википедии. Сам фрактал - скучный, но для разнообразия разок посмотреть можно.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/447721/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4702/nik-v-voronin.3/0_6d4e9_15c07c14_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/04/quadray.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1939478928156203851?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1939478928156203851/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/quadray.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1939478928156203851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1939478928156203851'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/quadray.html' title='Мандельброт в Quadray-координатах'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-8134473281693867757</id><published>2011-04-27T10:58:00.000+04:00</published><updated>2011-12-23T00:41:10.611+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Правильные, годные тени</title><content type='html'>Уже почти правильные тени, остались мелочи. Где-то в конце поста - небольшая анимация... А мягкие тени - не мягкие, а просто так выглядят. Для мягких теней плотность тени не настоящая. Быстро накидал ослабление плотности от длины тени.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/447541/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/4607/nik-v-voronin.3/0_6d435_dfcd4dc5_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/04/blog-post_27.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-8134473281693867757?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/8134473281693867757/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_27.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8134473281693867757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/8134473281693867757'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_27.html' title='Правильные, годные тени'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-3444518026307177853</id><published>2011-04-26T23:43:00.000+04:00</published><updated>2011-12-23T00:41:10.564+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Превью</title><content type='html'>&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/447607/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/5006/nik-v-voronin.3/0_6d477_79a235ab_L.jpg" title="" alt="" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/447605/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4703/nik-v-voronin.3/0_6d475_87510a3b_L.jpg" title="" alt="" border="0"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-3444518026307177853?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/3444518026307177853/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_2850.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3444518026307177853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/3444518026307177853'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_2850.html' title='Превью'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-1514735157951735456</id><published>2011-04-26T19:56:00.000+04:00</published><updated>2011-12-06T10:14:22.493+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Ускорение расчетов</title><content type='html'>Для более быстрого обсчета - после запуска HyperFractal нужно отрендерить что-угодно с минимальным разрешением и минимальным шагом (например: resolution = 200; steps = 50), и включить шейдинг по Ламберту.&lt;br /&gt;&lt;br /&gt;После первого запуска рендеринга, .NET откомпилирует все необходимые методы, и последующие расчеты будут работать заметно быстрее.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-1514735157951735456?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/1514735157951735456/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_8413.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1514735157951735456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/1514735157951735456'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_8413.html' title='Ускорение расчетов'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-246380119359347867</id><published>2011-04-26T19:47:00.000+04:00</published><updated>2011-12-22T10:50:37.612+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><category scheme='http://www.blogger.com/atom/ns#' term='код'/><title type='text'>Код для Juliabulb</title><content type='html'>&lt;pre class="brush:csharp"&gt;//for ex.&lt;br /&gt;double _bail = 4.0;&lt;br /&gt;double _power = 4.0;&lt;br /&gt;double _re = -1.1;&lt;br /&gt;double _im = 0.0;&lt;br /&gt;int _iterations = 8;&lt;br /&gt;&lt;br /&gt;public override bool IsInSet(double x, double y, double z)&lt;br /&gt;{&lt;br /&gt;    double nextX = x;&lt;br /&gt;    double nextY = y;&lt;br /&gt;    double nextZ = z;&lt;br /&gt;&lt;br /&gt;    int cnt = 0;&lt;br /&gt;    do&lt;br /&gt;    {&lt;br /&gt;        cnt++;&lt;br /&gt;        if (cnt == _iterations + 1)&lt;br /&gt;        {&lt;br /&gt;            break;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        double r = Math.Sqrt(nextX * nextX + nextY * nextY + nextZ * nextZ);&lt;br /&gt;        double phi = Math.Atan2(nextY, nextX);&lt;br /&gt;        double theta = Math.Asin(nextZ / r);&lt;br /&gt;&lt;br /&gt;        r = Math.Pow(r, _power);&lt;br /&gt;        phi *= _power;&lt;br /&gt;        theta *= _power;&lt;br /&gt;&lt;br /&gt;        double cosThetaR = Math.Cos(theta) * r;&lt;br /&gt;        nextX = cosThetaR * Math.Cos(phi);&lt;br /&gt;        nextY = cosThetaR * Math.Sin(phi);&lt;br /&gt;        nextZ = r * Math.Sin(theta);&lt;br /&gt;&lt;br /&gt;        nextX += _re;&lt;br /&gt;        nextY += _im;&lt;br /&gt;    }&lt;br /&gt;    while ( nextX * nextX +&lt;br /&gt;            nextY * nextY +&lt;br /&gt;            nextZ * nextZ &lt; _bail);&lt;br /&gt;&lt;br /&gt;    if (cnt != _iterations + 1)&lt;br /&gt;    {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-246380119359347867?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/246380119359347867/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/juliabulb.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/246380119359347867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/246380119359347867'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/juliabulb.html' title='Код для Juliabulb'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425172697582224039.post-7344460440275900662</id><published>2011-04-26T11:10:00.026+04:00</published><updated>2011-12-23T00:41:10.603+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='фракталы'/><title type='text'>Хренотень</title><content type='html'>Поверхность фрактала &amp;quot;изъедена&amp;quot; бесконечным числом отверстий, проемов, провалов и пр., поэтому его поверхность отражает/рассеивает свет во все стороны одинаково, т. е. его поверхность - матовая. Все эти отражения, преломления и пр. пятна на поверхности всего-лишь украшательства: можно обойтись и без них, но с ними эффектнее.&lt;br&gt;&lt;br&gt;Для освещения поверхности достаточно Ламберта, но все еще недостаточно чтобы глаза правильно оценили глубину. Перспектива - помогает, но к ней нужно добавить тени. Для большей глубины, не помешает разбавить картину дымкой (distance fog).&lt;br&gt;&lt;br&gt;Первый эксперимент с тенями: они сейчас неправильные и падают куда-то вбок, но эффект уже заметен.&lt;br&gt;&lt;br&gt;&lt;a href="http://fotki.yandex.ru/users/nik-v-voronin/view/447162/"&gt;&lt;img alt="" border="0" src="http://img-fotki.yandex.ru/get/5603/nik-v-voronin.2/0_6d2ba_e54cbc2c_L.jpg" title=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://woronoi.blogspot.com/2011/04/blog-post_26.html#more"&gt;Дальше →&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425172697582224039-7344460440275900662?l=woronoi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://woronoi.blogspot.com/feeds/7344460440275900662/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_26.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7344460440275900662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425172697582224039/posts/default/7344460440275900662'/><link rel='alternate' type='text/html' href='http://woronoi.blogspot.com/2011/04/blog-post_26.html' title='Хренотень'/><author><name>Nikolay Voronin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
