Войти
ПрограммированиеФорумОбщее

Найти радиус и угол, зная координаты

Страницы: 1 2 3 4 Следующая »
#0
5:37, 20 янв 2023

Вроде задача простая, но не получается.

Как получить координаты точки на окружности, с центром в начале координат, всем известно:

x = cos(angle) * radius;
y = sin(angle) * radius;

А обратную операцию как реализовать?

Ну радиус понятно что длина вектора (x,y)
А вот с нахождением угла проблема, пробовал через нормализованные координаты через арккосинус и арксинус - неправильно получается. Что-то туплю, помогите.. с математикой всегда нелады были.

#1
(Правка: 9:49) 9:10, 20 янв 2023

angle = acos(x / radius);
if(y < 0) angle = [360] - angle *3я правка, я начал забывать математику*
ну или посмотри стандартные либы на аналог
https://docs.unity3d.com/ScriptReference/Mathf.Atan2.html

#2
9:15, 20 янв 2023

угол считается относительно чего то. То есть нужно 2 вектора.
https://gamedev.ru/code/forum/?id=143045&m=2250662#m3

#3
9:34, 20 янв 2023

можно взять "два угла" и состряпать из него один.
cos = b / c
sin = a / c

a - противолежащий катет, b - прилежащий катет, c - гипотенуза.
и потом просто складываем два угла.

#4
9:59, 20 янв 2023

MikeNew
> А обратную операцию как реализовать?
radius = sqrt(x^2 + y^2)
angle = atan2(y, x)

#5
10:20, 20 янв 2023

Имбирная Ведьмочка, на самом деле, в плане программирования - это самый долгий путь, в плане длительности работы.

#6
(Правка: 13:23) 13:21, 20 янв 2023

Mirrel
> это самый долгий путь, в плане длительности работы.
Это единственно правильный путь. Я бы даже сказал, что использование обратных тригонометрических функций, отличных от atan2, — это в 90% случаях говнокод.

#7
15:15, 22 янв 2023

Имбирная Ведьмочка
> angle = atan2(y, x)
Точно. Делал же где-то уже год на назад уже, и забыл. То что надо, спасибо.

#8
21:50, 22 янв 2023

}:+()___ [Smile], как раз нет. Процентов на 90, то же самое происходит в коде для поиска арктангенса, но не факт что наименьшими потерями (правда большинство всё равно полностью хорошо не реализуют данную функцию).

#9
(Правка: 23:25) 23:20, 22 янв 2023

парни, я горжусь вами! Вы кодите не доучившись до 6го класса?!!
Когда дойдёте до 6го, вам училка расскажет, что по вашим условиям, тангенс - это и есть Y разделить на X. А угол этого тангенса можно определить через его арктангенс. Когда я учился в 5м классе, у меня не было компа! Компов тогда не было... А у вас уже есть! Такими темпами вы далеко пойдёте. Главное школу не забрасывайте...
ЗЫ и всё-таки попробуйте поступить в институт. Конечно там паршивенько сейчас учат, но вы всё-равно попробуйте. Хотя бы ради диплома.

#10
23:49, 22 янв 2023

ivashko
Потому что atan2(y,x), atan(y/x), acos(dot({x, y}, {1, 0})) это всё не правильно для определения угла. Но на собесе нужно сказать хотяб atan2(y,x). А дальше могут завалить реализацией SIMD + LUT и прочее. Сослаться на Эберли и Geometric Tools норм только для джунов. В итоге правильного ответа нет.

#11
0:48, 23 янв 2023

ivashko
для начала пример приложи.
а после можно будет смотреть, что ты тут пробубнил.

А потом я буду смотреть как ты это всё будешь реализовывать в свободном пространстве.

#12
(Правка: 8:59) 8:56, 23 янв 2023

ivashko
>парни, я горжусь вами! Вы кодите не доучившись до 6го класса?!!
>Когда дойдёте до 6го, вам училка расскажет,

Ты наверно только недавно  в шестом классе отучился, или проспал Х лет после школы и потому просто не успел забыть. Она не расскажет, где в жизни это применять на практике, в том числе при программировании (а на информатике аналогично будут дрючить не тем, что нужно для написания ПО под ключ), потому, через несколько лет после школы мозг очистится от большинства ущербных знаний и потом при необходимости придётся изучать тангенсы и котангенсы заново, уже более качественно, но в меньшем количестве. То, что показалось полезным, запомнилось намного лучше. Если бы в школе действительно хотели научить тем знаниям на всю жизнь, то объясняли меньше но лучше, а там объясняют не чтобы все знания в голове остались, а тупо чтобы мозг чем-то развить, чтобы он физически вырос в нужном размере и качестве, и подготовить к последующей заливке другой информации. Этот процесс больше про биологию, чем про математику - на математике черепную коробку расширяют а не учат применять тангенсы в быту:) Вот потому, когда американцы вопят, что им не нужна алгебра в школах, то это вызывает ехидные мысли.

#13
(Правка: 14:04) 13:47, 23 янв 2023

Skvoznjak
> а на информатике аналогично
Ух ты! У вас и информатика в школе была?! Круто!
> придётся изучать тангенсы и котангенсы заново
как это ни странно, тригонометрию вам забыть не дадут. В школе вам будут её вдалбливать до выпуска, а в ВУЗе первый и второй курс на кафедре высшей математики и особеннно много при решении дифференциальных уравнений, в рядах Фурье и в преобразованиях Лапласса. 3й курс на основах автоматики (в передаточных функциях) Ну и дальше на дисциплинах по специальности if any. Особено если будут другие разновидности автоматики.
Так что зря ты так про ненужность. А тангенс это твой спасательный круг в будущем. Его везде пихают. И в задачки по физике на экзаменах и вообще везде. Посчитать его легче всего - Y/X, но зато можно без калькулятора через это посчитать кучу всяких задач, включая олимпиадные. Например длина дуги при малых углах, равна тангенс, помноженный на её радиус. И вот эта фигня встречается в каждой 4й задаче по физике. Так что не судьба вам будет это забыть.
ЗЫ мнимые(комплексные) числа забыл. Ну и фазы тока...
ЗЗЫ а если залезешь в сопромат и термех... уууу... там вообще одна тригонометрия.

#14
(Правка: 16:22) 16:13, 23 янв 2023

ivashko
>Ух ты! У вас и информатика в школе была?! Круто!

Уже не в школе, но немного была. Физичка вела. На стене, среди прочих умных мыслей и формул было написано, что настоящий программист должен уметь складывать вычисления в цепочку, наверно это писалось про программируемые калькуляторы. А в дальнем углу, стояло для компутера с зелёными экранами, на которых однажды некоторые счастливчики несколько минут даже сыграли на клаве в какую-то хрень типа пакмана в текстовом режиме!  А все вместе несколько раз порисовали квадратики с условным алгоритмом в тетради, без фанатизма конечно, училка ведь не компилятор, если зависнет, то будет неправильно:) Вот и вся информатика, ничего там больше не было. Но после обучения, чтобы почерпнуть ценных знаний, заглядывал в учебники по программированию для школ и обнаруживал, что там только начало ценное, а потом скатывается в "а докажем формулу Х на языке Y". Те, кто по такой учебной программе учились, вынесли знание, что язык Х непригоден для практического применения:) Так обучили. Имхо, математике учили с похожим результатом, только основы накладывали на реальное применение.

>как это ни странно, тригонометрию вам забыть не дадут. В школе вам будут её вдалбливать до выпуска,

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

>а в ВУЗе первый и второй курс на кафедре высшей математики и особеннно много при решении дифференциальных уравнений, в рядах Фурье и в преобразованиях Лапласса. 3й курс на основах автоматики (в передаточных функциях) Ну и дальше на дисциплинах по специальности if any. Особено если будут другие разновидности автоматики.

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

>Так что зря ты так про ненужность. А тангенс это твой спасательный круг в будущем.

Спасательный круг, это логика. Не математическая или формальная, а полная версия, которую ни в школе, ни в вузе сейчас не изучают, потому что получившим полное знание сложнее впаривать ненужное и обманывать. При помощи логики, пусть долго, но вытащишь из поисковика или книг, а вот в них через хлам пробиться будет намного дольше, какую-то формулу, а потом приспособишь её для решения задачи. Потому "Виноградов С.Н., Кузьмин А.Ф. - Логика. Учебник для средней школы - 1954" в учебном процессе давно и не применяется - пользователь должен верить гуру на слово, а не сам проверять что да как.

>И вот эта фигня встречается в каждой 4й задаче по физике. Так что не судьба вам будет это забыть.

Давным давно все лабораторки сданы, а по теории проблем с ней не было. Задачки решали по формулам и таблицам из учебника, а прочий реальный мир в процессе не участвовал. Так что забыть тангенсы легко.

>ЗЗЫ а если залезешь в сопромат и термех... уууу... там вообще одна тригонометрия.

Необязательно. Сопроматом препод специально валил, чтобы побольше двоечников получить, а те потом отрабатывали зачёт:) Читал из головы тему, которой не было в учебнике, объяснял хреново какой-то момент, а потом давал письменные работы по нюансам, которые неоткуда узнать, а дальше - угадал или не угадал, вот и вся тригонометрия. Зато через сопромат научился электродрелью железяки сверлить! А через другую науку, у препода на даче - проводить техобслуживание трёхфазного электрогенератора. Щётки там чистить, провода винтить. Это за пропуск дня на практике. Так что лёгкое_незнание/пропуск это валюта и не факт, что обучающие от неё откажутся.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее