Processing:Примеры/Ускорение при помощи векторов: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 1: | Строка 1: | ||
{{Processing панель перехода}} | {{Processing панель перехода}} | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Описание<ref>[https://processing.org/examples/accelerationwithvectors.html processing.org - Acceleration with Vectors by Daniel Shiffman.]</ref>= | =Описание<ref>[https://processing.org/examples/accelerationwithvectors.html processing.org - Acceleration with Vectors by Daniel Shiffman.]</ref>= | ||
Строка 178: | Строка 175: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Processing}} | |||
{{Навигационная таблица/ | |||
Текущая версия от 08:00, 27 августа 2023
Содержание | Среда разработки 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 | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |