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

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

Построения
на плоскости (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 Яндекс.Метрика
Язык программирования: 
Javascript
Среда программирования: 
Любая

<!DOCTYPE HTML>
<html>
<head>
    <title>Fun Dots</title>
    <meta charset="utf-8">
    <script src="pixi.js"></script>
 
</head>
<body style="margin: 0">
 
 
<script type="text/javascript">
var width = 800;
var height = 600;
var animTime = 100;
var crossSize = 66;
var whiteColor = 0xffffff;
var blackColor = 0x222222;
 
var app = new PIXI.Application(width, height, { antialias: true, backgroundColor : whiteColor}); // создание нового приложения
document.body.appendChild(app.view); //добавление canvas'a приложения в html
 
var graphics = new PIXI.Graphics(); //создание объекта графики(в нем будет рисоваться фон)
app.stage.addChild(graphics); //добавление графики к приложению
 
var crossTemplateWhite = new PIXI.Graphics();// создание шаблона для белого креста
crossTemplateWhite.beginFill(whiteColor, 1);
crossTemplateWhite.drawRect(-crossSize/6, -crossSize/2, crossSize/3, crossSize); //рисуем 2 пересекающихся прямоугольника
crossTemplateWhite.drawRect(-crossSize/2, -crossSize/6, crossSize, crossSize/3);
var crossTemplateBlack = new PIXI.Graphics(); //аналогично для черного
crossTemplateBlack.beginFill(blackColor, 1);
crossTemplateBlack.drawRect(-crossSize/6, -crossSize/2, crossSize/3, crossSize);
crossTemplateBlack.drawRect(-crossSize/2, -crossSize/6, crossSize, crossSize/3);
var crossesWhite = []; // заводим массивы для белых
var crossesBlack = []; // и черных крестов
 
for(var i= -height/crossSize/3; i<=width/crossSize+height/crossSize/3; i++){
    for(var j= -width/crossSize/3; j<=height/crossSize+width/crossSize/3; j++){
        var crossWhite = crossTemplateWhite.clone(); //клонируем шаблон
        var crossBlack = crossTemplateBlack.clone();
        crossWhite.position.set((i+j/3+1/3)*crossSize, (j-i/3-2/3)*crossSize); //расчитываем позиции
        crossBlack.position.set((i+j/3)*crossSize, (j-i/3)*crossSize);
        crossWhite.visible = false; // изначально видны только черные кресты
        crossesWhite.push(crossWhite); //добавляем кресты в массивы
        crossesBlack.push(crossBlack);
        graphics.addChild(crossWhite); //добавляем кресты как детей графики для отрисовки
        graphics.addChild(crossBlack);
    } 
}
 
var t=0; // время
var currBlack = true; //какие кресты сейчас крутятся
var crosses = crossesBlack; //массив текущих вращающихся крестов
app.ticker.add(function(){ //выполняется каждый кадр
    t++;
    if(t<=animTime){ //вращаем кресты текущего цвета
        crosses.forEach(function(cross) {
            cross.rotation =(Math.PI/2)/animTime*t*(currBlack?1:-1); //если вращаем белые то в противоположную сторону
        });
    } else { // переключаемся на вращение крестов другого цвета
        t=0;
        currBlack = !currBlack; //меняем переменную currBlack на противоположное значение
        crosses.forEach(function(cross){ // делаем все текущие кресты невидимыми
            cross.visible = false;
        });
        crosses = currBlack?crossesBlack:crossesWhite; //обновляем текущие кресты
        crosses.forEach(function(cross){ // делаем их видимыми
            cross.visible = true;
        });
        graphics.clear();                                       //
        graphics.beginFill(currBlack?whiteColor:blackColor);    // меняем цвет фона
        graphics.drawRect(0,0,width,height);                    //
    }
});
</script>
</body>
</html>

Прикрепленный файлРазмер
opryzhkoCrosses.zip224.41 кб