Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Как работать с векторами?   Найти похожие ветки 

 
Norlin ©   (2003-09-08 19:13) [0]

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


 
Рамиль ©   (2003-09-08 19:37) [1]

Ну уж, формула...
a = (x1, y1)
b = (x2, y2)
c = a + b = (x1+x2, y1+y2)


 
MeF88 ©   (2003-09-08 20:05) [2]

Читай геометрии с 7 до 9 класс.


 
TButton ©   (2003-09-08 20:58) [3]

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


 
Asteroid ©   (2003-09-08 21:13) [4]

?? Скалярное/векторное сложение??? Умножение - да, а вот сложение - что-то новое для меня...


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

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

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


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

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


 
MeF88 ©   (2003-09-09 16:17) [7]

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


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


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

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


 
Norlin ©   (2003-09-09 21:39) [9]

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


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

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


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

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


 
MeF88 ©   (2003-09-10 10:43) [12]

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


 
il_ ©   (2003-09-10 16:17) [13]

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

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


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


> il_ ©

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


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

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

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


 
Koreolis ©   (2003-10-15 11:18) [16]

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


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

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


 
Darkwing ©   (2003-10-15 21:16) [18]

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


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


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

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

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


 
Darkwing ©   (2003-10-15 21:26) [19]

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

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... это косинусы углов вектора силы к координатным осям.

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


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

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


 
Koreolis ©   (2003-10-17 10:27) [21]

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


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

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


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

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


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


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

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



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.032 c
1-1080566510
TButton
2004-03-29 17:21
2004.04.18
Сравнить 2 record а


4-1076174980
nester
2004-02-07 20:29
2004.04.18
Как внедриться в OutlookExpress.


14-1079759294
Chcnger
2004-03-20 08:08
2004.04.18
Сколько нулей


14-1080208845
PVOzerski
2004-03-25 13:00
2004.04.18
А не завести ли на сайте отдельный форум по FreePascal?


3-1079951829
Drozdov A
2004-03-22 13:37
2004.04.18
есть ли такой тип данных в MS SQL 2000 ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский