Processing:Примеры/Ускорение при помощи векторов
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Черновик |
Описание[1]
Этот скетч-пример демонстрирует основы движения при помощи векторов. В объекте Mover в виде векторов хранятся данные о позиции, скорости и ускорении. Движение управляется при помощи воздействия на величину ускорения (в данном случае – в сторону курсора мышки).
О том, как симулировать физику и движение тел при помощи векторов, можно также почитать в примере «Силы (гравитация и сопротивление жидкости) с векторами».
Пример
// объект Mover:
Mover mover;
void setup() {
size(640,360);
mover = new Mover();
}
void draw() {
background(0);
// обновляем позицию:
mover.update();
// показываем объект Mover:
mover.display();
}
/**
* Ускорение при помощи векторов
* Автор – Дэниэл Шиффман.
*
* Демонстрирует основы движения при помощи векторов.
* Объект Mover в виде векторов хранит позицию, скорость и ускорение.
* Управление движением осуществляется при помощи воздействия
на ускорение (в данном случае – в сторону курсора мышки).
*/
class Mover {
// объект Mover (шар) отслеживает позицию, скорость и ускорение:
PVector location;
PVector velocity;
PVector acceleration;
// максимальная скорость объекта Mover:
float topspeed;
Mover() {
// шар начнет движение в центре экрана:
location = new PVector(width/2,height/2);
velocity = new PVector(0,0);
topspeed = 5;
}
void update() {
// рассчитываем вектор,
// указывающий от позиции шара в сторону курсора мышки:
PVector mouse = new PVector(mouseX,mouseY);
PVector acceleration = PVector.sub(mouse,location);
// задаем длину вектора ускорения:
acceleration.setMag(0.2);
// скорость меняется при помощи добавления ускорения:
velocity.add(acceleration);
// ограничиваем скорость значением «topspeed»:
velocity.limit(topspeed);
// меняем позицию в зависимости от скорости:
location.add(velocity);
}
void display() {
stroke(255);
strokeWeight(2);
fill(127);
ellipse(location.x,location.y,48,48);
}
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |
Категории:
- Страницы с устаревшим атрибутом подсветки синтаксиса «enclose»
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Processing
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Черновик
- Надо доработать
- Черновой вариант статьи
- Черновой вариант
- SEO
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом