Сначала небольшой перечень операций, которые можно совершать над векторами: Сложение - вектора можно складывать и вычитать, для этого нужно к соответствующей координате первого вектора прибавить/отнять соответствующую координату второго вектора. Умножение на скаляр - вектор можно умножать/делить на скаляр(число), для этого нужно каждую координату вектора умножить/поделить на скаляр. Dot product - или скалярное умножение векторов, для того чтобы скалярно умножить два вектора, нужно перемножить их длины и на косинус угла между ними, или суммировать произведения соответствующих координат. Cross product - или векторное умножение векторов, продуктом этой операции является вектор перпендикулярный плоскости проходящей через два исходных вектора, для того чтобы векторно умножить два вектора нужно составить матрицу состоящую из векторов (i, j, k),(x1,x2,x3),(y1,y2,y3) и найти ее детерминант(определитель). Модуль вектора - это есть длинна вектора, считается она путем нахождения корня квадратного из суммы квадратов координат вектора. Если начало вектора лежит не в начале координат, то следует его туда пометить, путем вычитания из координат конца вектора координаты начала. Также можно найти угол между двумя векторами из скалярного умножения векторов. v1x*v2x + v1y*v2y + v1z*v2z = |v1| |v2| * cos(a) Проекция одного вектора на другой. У нас есть вектора u и v, нам нужно спроецировать вектор u на вектор v и получить puv(projection of vector u onto vector v), puv = dot(u,v)/|v|*v Несколько картинок: http://www.lighthouse3d.com/opengl/maths/images/crossproduct.gif http://www.lighthouse3d.com/opengl/maths/images/projuv.gif Вектор в полярной системе: |x = p*cos(a) { |y = p*sin(a) p - расстояние от начала координат, a - угол между вектором и осью Х, a = arctg(y/x); при x=0, при y>0 a=pi/2 при y<0 a=-pi/2 Вектор в сферических координатах | x = p*cos(a)*sin(b) { y = p*sin(a)*sin(b) | z = p*cos(b) a - угол между осью x и меняется в пределах [0, pi*2), b - угол между осью z и меняется в пределах [0, pi] to be continue =)
Сообщение отредактировал Kostia256 - Четверг, 10.06.2010, 18:56 |