Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как работать с векторами? [Delphi, Windows]


Страницы:   1 2

Norlin ©   (2003-09-08 19:13:00) 

Люди, помогите пожалуйста!
Как написать функцию сложения векторов? (не скалярное, а векторное)
Уже вторую неделю мучаюсь, не получается, хотя, вроде бы, всё просто :((
Или, может быть, у кого-нибудь есть алгоритм, позволяющий рассчитать, как изменяется ускорение тела при воздействии на него определённой силы?
Всем, кто поможет, огромное спасибо!!


Думкин   (2003-10-20 07:24:00) [1]


> [22] Стекляшкин   (17.10.03 14:15)

Вектор - это элемент векторного пространства.
А если про 0 и т.д. - это к афинному пространству.


Goorus   (2003-10-19 18:37:00) [2]

Воспользуйся юнитом Geometry из GLScene, там много разнообразных функций для работы с векторами.


Стекляшкин   (2003-10-17 14:15:00) [3]

1)Скалярный вектор - просто напросто число. И скалярное сложение - это сложение чисел.
Скалярного вектора не бывает, бывает скалярная величина, характеризующая его(вектора) длину.
2)Вектор в плане геометрии - набор координат конца вектора(начало в нуле).
Нет не так. Вектор это не просто линия в пространстве или на плоскости. Не нужно пытаться себе представить вектор. Если я задам вектор A и Б, то вектор С = А - Б не будет начинаться в нуле, хотя, тем меннее, это есть вектор


Koreolis   (2003-10-17 10:27:00) [4]

1)Скалярный вектор - просто напросто число. И скалярное сложение - это сложение чисел.
2)Вектор в плане геометрии - набор координат конца вектора(начало в нуле). Для нормального движения тела надо расчитывать как минимум две силы. Т.е. два вектора. Результирующий между ними - см первый же ответ.
Для расчёта ускорения, скорости и т.д. - см ответы DarkWind'а. Мне кажется, что больше неясностей недолжно возникнуть.


resheto   (2003-10-15 21:36:00) [5]

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


Darkwing   (2003-10-15 21:26:00) [6]

Само же ускорение можно посчитать так:

F - вектор силы {fx, fy, fz}
m - масса тела

а := F/m то есть {ax, ay, az} := {fx/m, fy/m fz/m}

а если известны отдельно направление (направляющие косинусы) и величина силы |F| то силу можно посчитать так:

|F| := {|F|*cosx, |F|*cosy, |F|*cosz}

где cos... это косинусы углов вектора силы к координатным осям.

Больше мне сказать нечего.


Darkwing   (2003-10-15 21:16:00) [7]

Да и вот ещё замечание:


>как изменяется ускорение тела при воздействии на него >определённой силы?


Ускорение вроде как не изменяется. Изменяется скорость.
Вот V - вектор скорости {vx, vy, vz}
   a - вектор ускорения {ax, ay, az}

За каждую секунду скорость вырастает на величину ускорения
V := V + a то есть Vnext {vx+ax, vy+ay, vz+az}

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


Koreolis   (2003-10-15 11:18:00) [8]

Norlin:
Если ты хочешь замутить телегу: летит шарик - бабах об стену - отскочил - столкнулся с другим - поменял направление(тот другой тоже) и т.д. ТО: тебе надо для каждого объекта хранить две скорости по каждой координате(для 2Д). Два ускорения по каждой координате. Массу объекта. Угол (для удобства отображения на панели информации - в градусах) тяги движка. СИЛА ТЯГИ движка(на сколько приращивается ускорение объекта за еденицу времени(за один перепрощет объекта)).
За каждый цикл: Изменяем ускорениЯ по осям в соответствии с тягой движка. Зная массу и ускорениЯ росчитываем силу трения(тоже два вектора).
Теперь смотрим: а не столкнулся ли наш объект? Если да, то: Производим операцию сложения между векторамИ(в этом-то и вся фича - два вектора. два расчёта). Оба объекта подействовали друг на друга. У обоих объектов изменились вектора ускорения.(по непомню какому закону физики расчитывать надо, но что-то очень простое, кажется про энерцию)
Зная ускорения изменяем скорости. А зная скорость изменяем координаты. Усё.


Koreolis   (2003-10-15 11:17:00) [9]

Norlin:
Если ты хочешь замутить телегу: летит шарик - бабах об стену - отскочил - столкнулся с другим - поменял направление(тот другой тоже) и т.д. ТО: тебе надо для каждого объекта хранить две скорости по каждой координате(для 2Д). Два ускорения по каждой координате. Массу объекта. Угол (для удобства отображения на панели информации - в градусах) тяги движка. СИЛА ТЯГИ движка(на сколько приращивается ускорение объекта за еденицу времени(за один перепрощет объекта)).
За каждый цикл: Изменяем ускорениЯ по осям в соответствии с тягой движка. Зная массу и ускорениЯ росчитываем силу трения(тоже два вектора).
Теперь смотрим: а не столкнулся ли наш объект? Если да, то: Производим операцию сложения между векторамИ(в этом-то и вся фича - два вектора. два расчёта). Оба объекта подействовали друг на друга. У обоих объектов изменились вектора ускорения.(по непомню какому закону физики расчитывать надо, но что-то очень простое, кажется про энерцию)
Зная ускорения изменяем скорости. А зная скорость изменяем координаты. Усё.


Думкин   (2003-09-10 16:49:00) [10]

> [14] Рамиль ©   (10.09.03 16:31)
Это в векторном пространстве и то ...каком.
А в афинном - упорядоченная пара точек. Просто векторное пространство из афинного можно выделить зафиксировав точку - в вашем случае начало координат(а это может быть любая точкка), но ведь и координаты сразу вводить не обязательно - потом уж.

В ВП изначально длины нет. Если есть длина - то это уже векторное пространство с метрикой, тут же и скалярное валяется.


Рамиль   (2003-09-10 16:31:00) [11]


> il_ ©

Если подходить с такой точки зрения, еще и длиной.
Точка это конец вектора(это где стрелочка рисуется), а начало вектора считается совпадающим с началом координат.


il_   (2003-09-10 16:17:00) [12]

Вектор определяется точкой на плоскости (в 3D, 4D, ...) Как интересно можно их сложить еще? Или написать лекцию по линейной алгебре?

Вообще-то вектор на плоскости определяется точкой и направлением, а только точкой он определяется на прямой в 1D


MeF88   (2003-09-10 10:43:00) [13]

Между прочим
S(a,b)=sqrt(sqr(|a|)+sqr(|b|))


Думкин   (2003-09-10 06:38:00) [14]

%-)
Но ведь можно.
S(a,b) = |a|+|b|
Операция - инварианта при заданном скалярном произведении, коммутативна.
И пусть в меня плюнут, если это не скалярное сложение векторов.
:-)


MBo   (2003-09-10 05:45:00) [15]

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


Norlin   (2003-09-09 21:39:00) [16]

Всем, конечно, спасибо, но вы не поняли вопрос: мне нужно не скалярное сложение, а векторное...


Рамиль   (2003-09-09 16:26:00) [17]


> это и называется скалярное сложение векторов

Вектор определяется точкой на плоскости (в 3D, 4D, ...) Как интересно можно их сложить еще? Или написать лекцию по линейной алгебре?


MeF88   (2003-09-09 16:17:00) [18]

F=ma ;-)
a - вектор
Далее V=V0+a, где V0 - скорость на предыдущем шаге, a - ускорение, V-текущая скорость. Причем все три - вектора.
Между прочим - я еще до высшей математики не дошел, но разве есть векторная сумма векторов? ;-)


Micah'GF   (2003-09-09 07:28:00) [19]

млин... ну мне ведь тоже интересно..... книжки читать долго... приведите примерчик.


марсианин   (2003-09-08 23:09:00) [20]

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

второй закон Ньютона (по школьному)..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо