Уроки, алгоритмы, программы, примеры

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
HTML + Javascript + jquery.js + d3.js
Статья по теме: 

Задача - нарисовать фрактал "Папоротник Барнсли".
1.Создаем файл fern.html (fern - папоротник), к которому подключаем файл fern.js, содержащий основную часть программы. Также подключаем библиотеки jquery.js и d3.js, содержащие весь необходимый инструментарий.

<!DOCTYPE html>
  <head>
    <meta charset="utf-8">
    <style>
      body {
        color: #333;        
        background-color: black;
      }
      h1{
        color: #4BFF5F;
        text-align: center;
        text-shadow: 0px 0px 20px white;
      }
    </style>
  </head>
  <body>
    <h1> Папоротник Барнсли (150000 итераций)</h1>
    <div id="svg-container"></div>
    /*Подключение библиотек, исполняемого файла*/
    <script src="lib/d3.js"></script>
    <script src="lib/jquery.js"></script>
    <script src="js/ferns.js"></script>
    <script>
    /* Вызов во время загрузки страницы, чтобы соответствовать размеру окна */
      VIZ.onResize();  
    /* И вызываем еще раз, при измнение размера окна браузера*/
      $(window).on("resize", function() {
        VIZ.onResize();
      });
    /* Отрисовка фрактала*/
      for (var i = 0; i < 150000; i++) {
        VIZ.addPoint(1);
      }
    </script>
  </body>
</html>

2. Файл fern.js:
a). Объявляем прототип VIZ, ширину и высоту, координаты стартовой точки, цвет. Выбираем элемент для отображения SVG-графики.
b). function getCoords(x, y) - Выбираем случайную точку.
c). function random(min, max) - Определяем функцию для получения СВ
d). function renderPoint(data, flag) - Определяем каким образом будут отображаться "точки" фрактала
e). VIZ.addPoint = function () - Получаем координаты из getCoords и изменяем на них соотв. координаты текущей базовой точки. Ставим точку.
f). VIZ.onResize = function () - Обеспечиваем корректное отображение при масшатбировании окна браузера

Код программы: 

(function (){
 /*Инициализация функций, ширины и высоты, стартовой точки, цвета, выбор элемента для отображения графики SVG*/
  var VIZ = {};
  var width = 4, height = 4;
  var basePoint = {x: 0, y: 0};
  var color = '#50E52A';
  var svg = d3.select("#svg-container")
    .append("svg")
    .attr("id", "thesvg")
    .attr("width", width)
    .attr("height", height)
    .attr("viewBox", "0 0 " + width + " " + height)
    .append("g");
 
  VIZ.times = 10000;
  VIZ.count = 0;
 
  /*Выбираем случайную точку. р - коэффициент вероятности. (1,2,3,4) - см. статью "Папоротник Барнсли */
  function getCoords(x, y) {
    var p = random(1,1000);
    return p <= 701 ? {x: 0.81 * x + 0.07  * y + 0.12, y: -0.04 * x + 0.84 * y + 0.195}: // 70.1% (2)
           p <= 851 ? {x: 0.18 * x - 0.25  * y + 0.12, y: 0.27  * x + 0.23 * y + 0.02 }: // 15.0% (3)
           p <= 980 ? {x: 0.19 * x + 0.275 * y + 0.16, y: 0.238 * x - 0.14 * y + 0.12 }: // 12.9% (4)
                    {x: 0.0235 * x + 0.087 * y + 0.11, y: 0.045 * x + 0.1666 * y};       // 2.0%  (1)
  }
  /*Функция для получения случайного значения*/
  function random(min, max) {
    return min + Math.floor(Math.random() * (max - min + 1));
  }
  /*Будем отображать точки при помощи круга радиусом .002. Определяем его цвет, прозрачность, координаты*/
  function renderPoint(data, flag) {
    svg.append("circle")
      .attr("class", "fractalPoint")
      .style("fill", color)
      .style("opacity", .4)
      .attr("cx", data.x)
      .attr("cy", data.y)
      .attr("r", .002)
  }
  /* Получаем координаты из getCoords и изменяем на них соотв. координаты текущей базовой точки. Ставим точку */
  VIZ.addPoint = function () { 
    var xy = getCoords(basePoint.x, basePoint.y);
    basePoint = xy; 
      renderPoint({x: xy.x + width / 5, y: xy.y + height / 10}, 0); 
  }
  /*Функция контроля размера окна браузера. Наш фрактал будет корректно отображаться в любом окне*/
  VIZ.onResize = function () {
    var aspect = height / width, chart = $("#thesvg");
    var targetWidth = chart.parent().width();
    chart.attr("width", targetWidth);
    chart.attr("height", targetWidth / aspect);
  }
 
  window.VIZ = VIZ;
 
}())

Прикрепленный файлРазмер
Пример построения папоротника Барнсли135.88 кб