Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1

Движение на координатной плоскости

16.12.2014, 21:56. Показов 2034. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
допустим я знаю чему равен косинус от 0 до 180 (я просто таблицу в объект перефаршировал)
вот код обрабатывающий это движение, сразу скажу всё уже двигается:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
grad = grad%360;
            if (grad > 180){
                cos= -engine.bradis[grad-180];
            } else cos = bradis[grad];
            var mob = entity[keys];
            var sin = Math.sqrt(1-cos*cos);
            //if (grad >= 180 && grad < 270) sin = -sin;//проверяем чтобы могло двигаться влево вниз только это на сайте не стоит так что это не считаем 
            x = cos * mob.speed;//вычисляем дельту x
            y = sin * mob.speed;//вычисляем y
            mob.pos.x += (+x.toFixed(0));//передаём новые координаты объекту
            mob.pos.y += (+y.toFixed(0));
  • примечания к коду entity[keys] это объект в "уме машины" для простоты и кросплатформенности, а честно говоря так просто легче
  • координаты расположены так
    x
    |
    +- y
соответственно градусы берём по вектору y
если хотите проверить то вот
проверяем синий квадрат
но если ввести команду entity.y.sys.by.deg=100 то квадрат поворачивается красным углом правильно но вот движится он на 80% это непонятно

Добавлено через 5 минут
немножко вспомнил геометрию и обновил код но теперь он вообще ничего не едет при любом градусе
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
function (keys, grad) {
            grad = grad%360;
            if (grad > 180 && grad < 270){
                cos= -engine.bradis[grad-180];
            } else cos = engine.bradis[grad];
            var mob = entity[keys];
            var sin = Math.sqrt(1-cos*cos);
            if (grad > 90 && grad < 270) sin = -sin;
            x = cos * mob.speed;
            y = sin * mob.speed;
            mob.pos.x += (+x.toFixed(0));
            mob.pos.y += (+y.toFixed(0));
Добавлено через 2 минуты
и ещё читок обновил
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        by: function (keys, grad) {
            grad = grad%360;
            if (grad > 180){
                cos= engine.bradis[grad-180];
            } else cos = engine.bradis[grad];
            var mob = entity[keys];
            var sin = Math.sqrt(1-cos*cos);
            if (180 > grad < 270) cos = -cos;
            if (grad > 90 && grad < 270) sin = -sin;
            x = cos * mob.speed;
            y = sin * mob.speed;
            mob.pos.x += (+x.toFixed(0));
            mob.pos.y += (+y.toFixed(0));
            grad = -grad;
            if (mob.rotated) id(keys).style.transform="rotate("+(grad)+"deg)";
            engine.move.mapOut(keys);
        },
Добавлено через 1 минуту
теперь двигается но не правильно

Добавлено через 2 минуты
понял не движится по y вообще
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2014, 21:56
Ответы с готовыми решениями:

Радиус на координатной плоскости
не знаю как сделать расчёт &quot;зашёл объект в радиус действия другова объекта&quot; насколько понял понял по учебнику это можно как то сделать с...

График "ёжик" на координатной плоскости
Я новичок в javascripte, помогите пожалуйста нарисовать такой график. Спасибо заранее!)))

Нужно изобразить на координатной прямой или на координатной плоскости множества истинности следующего предиката
Помогите пожалуйста Добавлено через 1 минуту (\sin x&gt;0)\sim (\cos x&lt;\pi /2)

8
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
16.12.2014, 22:32
Цитата Сообщение от BANO Посмотреть сообщение
я просто таблицу в объект перефаршировал
вы это серьёзно?

а зачем?
чем вас не устраивает Math.cos ()?
0
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
17.12.2014, 16:08
BANO, читать ваши взлеты и падения, конечно, интересно, НО, чего именно вы хотите добиться? Можете перефразировать задачу, исключая ваши надумки и лирические отступления
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
17.12.2014, 21:30  [ТС]
Thisman, вот новый код
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function (keys, grad) {
            grad = grad%360;
            if (grad > 180){
                cos= engine.bradis[grad-180];
            } else cos = engine.bradis[grad];
            var mob = entity[keys];
            var sin = Math.sqrt(1-cos*cos);
            y = cos * mob.speed;
            x = sin * mob.speed;
            if (180 <= grad > 360) y = -y;
            if (180 <= grad ) x = -x;
            mob.pos.x += (x^0);
            mob.pos.y += (y^0);
            grad = -grad;
            if (mob.rotated) id(keys).style.transform="rotate("+(grad)+"deg)";
            engine.move.mapOut(keys);
}
но теперь "y" вообще не переводится в отрицательное число
не понимаю почему

Добавлено через 4 минуты
задача понять почему при "y" не переводится в отрицательны вид

Добавлено через 1 минуту
kalabuni, потому что в Math.cos() всё в радианах а я делаю в градусах
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.12.2014, 23:13
Цитата Сообщение от BANO Посмотреть сообщение
потому что в Math.cos() всё в радианах а я делаю в градусах
а переводить ваши градусы в нужные для метода радианы вы не умеете?

подсказываю простейшую пропорцию:
ПИ радиан - это 180 градусов
X радиан - это Y градусов

отсюда X = ПИ * Y / 180
JavaScript
1
2
3
4
var angleGRADUS = 123;                         // величина угла в градусах
var angleRADIAN = Math.PI * angleGRADUS / 180; // тот же угол в радианах
var angleCOS  = Math.cos (angleRADIAN);        // косинус этого угла
alert (angleCOS);                              // сверьте с табличным значением
порекомендую вам для изучения книжку - Энциклопедический словарь юного математика / Сост. А. П. Савин. — М.: Педагогика, 1989
1
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.12.2014, 19:25  [ТС]
kalabuni, вы такой умный прям
я знаю как переводить в радианы
но мне ЛЕНЬ
а по коду, какова чёрта он не работает, вы что нибудь скажите?

Добавлено через 34 минуты
короче вот
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 function (keys, grad) {
            grad = grad%360;
            var rad = Math.PI * grad / 180; // тот же угол в радианах
            var cos  = Math.cos(rad);
            var mob = entity[keys];
            var sin = Math.sqrt(1-cos*cos);
            echo(sin, "sin "+keys);
            y = cos * mob.speed;
            x = sin * mob.speed;
            if (90 <= grad && grad <= 270) y = -y;
            if (180 <= grad && grad < 360) x = -x;
            if (grad == 180) y = -y;
            echo(y^0, "{y} "+keys);
            echo(x^0, "{x} "+keys);
            mob.pos.x += +(x.toFixed(0));
            mob.pos.y += +(y.toFixed(0));
            grad = -grad;
            if (mob.rotated) id(keys).style.transform="rotate("+(grad)+"deg)";
            engine.move.mapOut(keys);
        }
честно говоря недоволен производительностью этой темы
спасибо kalabuni
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
18.12.2014, 21:10
Цитата Сообщение от BANO Посмотреть сообщение
по коду, какова чёрта он не работает, вы что нибудь скажите?
а и не нужно, чтобы он работал

человечек из точки А в точку В может попасть, двигаясь только по вертикали и горизонтали
а нагоняющий его квадрат может двигаться по кратчайшему расстоянию
скорость обоих объектов одинакова
таким образом по-любому у нагоняющего квадрата имеется абсолютное преимущество
играть в игру, в которой в принципе нельзя выиграть - оно никому неинтересно, кроме создателя
да и ему эта игра быстро-быстро наскучит

так что нам здесь совершенно незачем ни "копья ломать, ни "бисер метать", вам помогая
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
19.12.2014, 15:47  [ТС]
kalabuni, честно говоря меня немного оскорбили ваши слова,
но это не важно

вы как то поздно зашли когда я уже всё сделал

и вообще этот код может по разному использоваться: например ракеты на америку наводить
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
20.12.2014, 18:40  [ТС]
kalabuni, кстати у нас свободное волеизъявление так-что мой код что хочу то с ним и делаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2014, 18:40
Помогаю со студенческими работами здесь

Написать уравнение плоскости, проходящей через точку М(1,1,1) и параллельной координатной плоскости XOY
помогите решить

Точки на координатной плоскости
1) Даны координаты двух точек A(x0 y0) и B(x1 y1).Нужно определить длину отрезка между этими точками. 2) Задать окружность и точку на...

Граф на координатной плоскости
Помогите пожалуйста с лабой. Суть задания: На плоскости заданы координаты N элементов, некоторые элементы связаны между собой. Требуется...

Синусоиды на 1 координатной плоскости
написать программу для синусоиды: y=2sinx y=sin2x y = sin(x+2) y= sinx +2 чтобы эти графики выводились одновременно на 1...

Точки на координатной плоскости
Дано множество A из N точек. Среди всех точек этого множества, лежащих в первой|второй|третьей|четвертой четверти, найти точку, наиболее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru