Подскажите как определить угол
|
|
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 |
постоянный участник
Сейчас нет на сайте
| чумовая фишка, никак не нарадуюсь )
|
|
| |