Среда, 27 Ноября 2024, 11:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Подскажите как определить угол
usluciferДата: Среда, 19 Октября 2016, 22:18 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
ребят подскажите , как определить угол из формул?
x = sin(a)*R+x0
y = cos(a)*R +y0
TymonrДата: Четверг, 20 Октября 2016, 00:48 | Сообщение # 2
With OpenSource forever
Сейчас нет на сайте
А 'a' это у тебя что тогда?

Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах
SaiteiДата: Пятница, 21 Октября 2016, 03:22 | Сообщение # 3
старожил
Сейчас нет на сайте
Цитата uslucifer ()
как определить угол из формул?

Почитай про arcsin и arccos.

Ну и на всякий случай подумай ещё раз - а нужно ли это тебе? Может быть угол известен заранее?
VuvkДата: Пятница, 21 Октября 2016, 04:59 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
A = arcsin ((x - x0)/R) ? Любопытно.
usluciferДата: Пятница, 21 Октября 2016, 17:29 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Цитата Saitei ()
Почитай про arcsin и arccos.

Ну и на всякий случай подумай ещё раз - а нужно ли это тебе? Может быть угол известен заранее?


Ах если бы отсутствие ответа реже скрывалось чувством юмора, но увы (.
SaiteiДата: Пятница, 21 Октября 2016, 17:42 | Сообщение # 6
старожил
Сейчас нет на сайте
uslucifer, рад, что ты понял шутку :)

Если ты знаешь значения sin и cos (но не знаешь угол), то угол можно получить через atan2: atan2(s, c);

Используя atan2, ты избавишься от проблем со знаком, добавочных поправок не нужно.
Ну и да, результат ты получишь в радианах.

Выразить sin и cos из твоих формул довольно легко, дерзай
usluciferДата: Пятница, 21 Октября 2016, 18:03 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Цитата Vuvk ()
A = arcsin ((x - x0)/R) ? Любопытно.


нет, по одной функции угол не определить. Поэтому я и написал сразу две.

по сути то уравнение можно упростить, но это я строил паровоз.

я думал что у меня просто "замылился глаз" и искал не в той стороне, поэтому и решил спросить на форуме.

Добавлено (21 октября 2016, 17:44)
---------------------------------------------
Сейчас проиллюстрирую для наглядности

Добавлено (21 октября 2016, 18:03)
---------------------------------------------

голубая точка это мой объект, формула ее позиции
x = sin(a)*R(n)+x(n)
y = cos(a)*R(n) +y(n)

n = параметры точек 1-3

изменяя угол, я вращаю объект вокруг опорной точки.
изменив опорную точку изменяется радиус, и угол. с радиусом попроще , а вот с углом оказалось потруднее.

SaiteiДата: Пятница, 21 Октября 2016, 18:04 | Сообщение # 8
старожил
Сейчас нет на сайте


Попробуй это (если значения sin и cos неизвестны):

x = sin(a)*R + x0;
y = cos(a)*R +y0;

s = (x - x0)/R;
c = (y - y0)/R

alpha = atan2(s, c);
usluciferДата: Пятница, 21 Октября 2016, 18:05 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Saitei, сейчас попробую
SaiteiДата: Пятница, 21 Октября 2016, 18:12 | Сообщение # 10
старожил
Сейчас нет на сайте
Хотя по идеи можно сделать проще:

v = normalize(o3 - base);

atan2(v.y, v.x);

То есть строим вектор от опорной точки к третьей, затем его нормализуем и получаем угол между ним и осью X
usluciferДата: Пятница, 21 Октября 2016, 18:13 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Цитата Saitei ()
Попробуй это (если значения sin и cos неизвестны):

x = sin(a)*R + x0;
y = cos(a)*R +y0;

s = (x - x0)/R;
c = (y - y0)/R

alpha = atan2(s, c);

супер. и не нужно никаких паровозов.
теперь подскажите какие материалы мне прочитать, чтобы понять чуть происходящего. )


Сообщение отредактировал uslucifer - Пятница, 21 Октября 2016, 18:14
SaiteiДата: Пятница, 21 Октября 2016, 18:18 | Сообщение # 12
старожил
Сейчас нет на сайте
Цитата uslucifer ()
супер. и не нужно никаких паровозов.
теперь подскажите какие материалы мне прочитать, чтобы понять чуть происходящего. )

Если ты о моём последнем ответе, то почитай про векторную алгебру.

Например, чтобы получить угол между двумя векторами можно сделать вот так:
v0, v1;
angle = atan2(v1.y, v1.x) - atan2(v0.y, v0.x); //edited. Немножко обманул :Р
angle += angle < 0 ? 2 * M_PI : 0; //нормализация

Я просто не знал что было дано по условию, но увидев картинку всё встало на свои места :)
usluciferДата: Пятница, 21 Октября 2016, 18:27 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
чумовая фишка, никак не нарадуюсь )
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг