XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
silumin

offline
Опыт: 11,153
Активность:
Печатник lvl1, не спалось мне, вот сделал рабочий пример...
DioD, не обойдёшься ты тут только полярными координатами!

silumin добавил:
Печатник lvl1, кнопка Esc запускает триггер...
Миниатюры
Кликните на картинку для увеличения
Название:  XGM_FindPoint.JPG
Просмотров: 59
Размер:  11.7 Кбайт  
Прикрепленные файлы
Тип файла: w3x XGM_FindPoint.w3x (9.0 Кбайт, 19 просмотров )

Отредактировано silumin, 16.04.2010 в 03:31.
Старый 16.04.2010, 03:22
DioD

offline
Опыт: 45,134
Активность:
полярные координаты из точки а в точку б.
полярные координаты из полученной точки в +90 градусов...
Старый 16.04.2010, 04:11
Windrunner
Верь мне!
offline
Опыт: 4,565
Активность:
JimALIEN:
там вроде над еще модулей добавить, т.к. может получица что под корнем будет отрицательное число, т.е.:
Код:
real dx = Abs(Xb - Xa)
real dy = Abs(Yb - Ya)
аддед: фигню написал, не обращайте внимания)
Не получится там есть внесение под корень и вынесение(при внесении под корень число в любом случае становится положительным)
Windrunner добавил:
DioD, А если оно не в центре?Или я туплю?=)
Старый 16.04.2010, 07:00
Doc

offline
Опыт: 63,163
Активность:
DioD, по идее он сам задает точки начала отрезков, так что немного сложнее.
Старый 16.04.2010, 08:56
Garret
Недоброе творится
offline
Опыт: 3,893
Активность:
Старый 16.04.2010, 09:07
silumin

offline
Опыт: 11,153
Активность:
Малость разогнался, нужно было найти только длинну "Со", а я дошёл до координат точки "О". Ну да ладно, не много там дел было.
Печатник lvl1, в примере длинна нужного отрезка проходит под таким же названием "Со".
Старый 16.04.2010, 19:41
Печатник lvl1
Typo
offline
Опыт: 4,157
Активность:
silumin:
(отрезок)Co = AC*Sin(CAo) <--- Нужный отрезок
Тоесть тут мы уже получаем длину, да?
Прикольный пример сделал)
На вскидку.. Какая функция будет работать быстрее?
    real distcord (real Xa, real Ya, real Xb, real Yb) { 
        real dx = Xb - Xa
        real dy = Yb - Ya
        return SquareRoot(dx * dx + dy * dy)
    }

    real perpendicular_by_JimALIEN(real Xa,real Ya,real Xb,real Yb,real Xc,real Yc) {
        real AB=distcord(Xa,Ya,Xb,Yb)
        real BC=distcord(Xb,Yb,Xc,Yc)
        real AC=distcord(Xa,Ya,Xc,Yc)
        real p=(AB+BC+AC)/2
        return (2*SquareRoot(p*(p-AB)*(p-BC)*(p-AC)))/AB
    }

    real perpendicular_by_silumin(real Xa,real Ya,real Xb,real Yb,real Xc,real Yc) {
    	real alpha = Atan2(Yc-Ya,Xc-Xa) - Atan2(Yb-Ya,Xb-Xa)
    	real ac = distcord(Xa,Ya,Xc,Yc)
    	return ac*Sin(alpha)
    }
Старый 16.04.2010, 20:26
Doc

offline
Опыт: 63,163
Активность:
Вторая конечно же. Как минимум вызывается намного меньше функций.
Старый 16.04.2010, 20:36
Печатник lvl1
Typo
offline
Опыт: 4,157
Активность:
А тригонометрия не тяжелее квадратных корней?
Старый 16.04.2010, 20:39
silumin

offline
Опыт: 11,153
Активность:
Печатник lvl1, да, это и есть длинна нужного отрезка.
Старый 16.04.2010, 21:22
Sergarr

offline
Опыт: 4,677
Активность:
А может, все проще? Может, нужно применить вектора? xD
  1. Вычисляем вектор направляющей AB (то есть, P(AB)={x(B)-x(A),y(B)-y(A)}
  2. Вычисляем вектор, перпендикулярный направляющему (AB*XY=0) - здесь скалярное произведение векторов (x(AB)*x(XY)+y(AB)*y(XY)=0), XY определена с точностью до соотношения между x и y.
  3. Полученный вектор является направляющей OC => вычисляем параметрическое уравнение прямой (
x=x(XY)*t+x0
y=y(XY)*t+y0
), где t - произвольное действительное число, x0 и y0 - координаты точки C.
  1. Рассчитываем точку пересечения прямой OC и прямой AB.
Ну дальше уж сами, надеюсь, справитесь...
Старый 18.04.2010, 00:29
silumin

offline
Опыт: 11,153
Активность:
Sergarr, матрицы, векторы, давайте еще через интегралы и логарифмы... Зачем такие примудрости?
По сабжу уже ответили, тема себя исчерпала.
Старый 18.04.2010, 01:31
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Sergarr, Ну это метод для человеческого мозга, а у нас есть компьютерные вычисления, которые позволяют другую методику использовать. Хотя это тоже работает, для тех, кто проходит ан. гем xD
Старый 18.04.2010, 09:47
Печатник lvl1
Typo
offline
Опыт: 4,157
Активность:
silumin, Нахождение точки О таки пригодилось.
В твоём примере О может выпрыгивать за пределы отрезка АB. В работе это выглядит как баг.
Как этого избежать?
Старый 18.04.2010, 18:09
silumin

offline
Опыт: 11,153
Активность:
Самое простое - по сравнению:
if (AO<AB) and (OB<AB) then
...actions
else
...actions
endif
Утром подумаю над проверкой углов, что будет значительно быстрее.
Старый 19.04.2010, 00:31
ScorpioT1000
Работаем
offline
Опыт: отключен
Sergarr, матрицы, векторы, давайте еще через интегралы и логарифмы...
кватернионы !
Старый 19.04.2010, 05:26
Печатник lvl1
Typo
offline
Опыт: 4,157
Активность:
Спасибо, все работает! =)
Энергостена жжот только при её пересечении. =)
Старый 19.04.2010, 09:09
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 13:33.