This is the long due fifth article in this series. If you aren’t comfortable with vectors, you might want to take a look at the first four articles in this series before: Introduction, Vectors 101, Geometrical Representation of Vectors, Operations on Vectors.
This cheat sheet will list several common geometrical problems found in games, and how to solve them with vector math.
Complete list of basic vector operations
But first, a little review.
For this, I assume that you have a vector class readily available. This is mostly 2D-focused, but everything works the same for 3D, except for differences concerning vector product, which I will assume to return just a scalar in the 2D case, representing the “z” axis. Any case that only applies to 2D or 3D will be pointed out.
Strictly speaking, a point is not a vector – but a vector can be used to represent the distance from the origin (0, 0) to the point, and so, it is perfectly reasonable to just use vectors to represent positions as if they were points.
I expect the class to give you access to each of the components, and to the following operations (using C++ style notation, including operator overloading – but it should be easy to translate to any other language of your choice). If a given operation is not available, you can still do it manually, either by extending the class or creating a “VectorUtils” class. The examples below are usually for 2D vectors – but 3D is usually simply a matter of adding the z coordinate following the pattern of x and y.
- Vector2f operator+(Vector2f vec): Returns the sum of the two vectors. (In a language without operator overloading, this will probably be called add(). Similarly for the next few ones.)
a + b = Vector2f(a.x + b.x, a.y + b.y); - Vector2f operator-(Vector2f vec):Â Returns the difference between the two vectors.
a – b = Vector2f(a.x – b.x, a.y – b.y); - Vector2f operator*(Vector2f vec):Â Returns the component-wise multiplication of the vectors.
a * b = Vector2f(a.x * b.x, a.y * b.y); - Vector2f operator/(Vector2f vec):Â Returns the component-wise division of the vectors.
a / b = Vector2f(a.x / b.x, a.y / b.y); - Vector2f operator*(float scalar): Returns the vector with all components multiplied by the scalar parameter.
a * s = Vector2f(a.x * s, a.y * s);
s * a = Vector2f(a.x * s, a.y * s); - Vector2f operator/(float scalar): Returns the vector with all components divided by the scalar parameter.
a / s = Vector2f(a.x / s, a.y / s); - float dot(Vector2f vec): Returns the dot product between the two vectors.
a.dot(b) = a.x * b.x + a.y * b.y; - float cross(Vector2f vec): (2D case) Returns the z component of the cross product of the two vectors augmented to 3D.
a.cross(b) = a.x * b.y – a.y * b.x; - Vector3f cross(Vector3f vec): (3D case) Returns the cross product of the two vectors.
a.cross(b) = Vector3f(a.y * b.z – a.z * b.y, a.z*b.x – a.x*b.z, a.x*b.y – a.y*b.x); - float length(): Returns the length of the vector.
a.length() = sqrt(a.x * a.x + a.y * a.y); - float squaredLength(): Returns the square of the length of the vector. Useful when you just want to compare two vectors to see which is longest, as this avoids computing square roots
a.squaredLength() = a.x * a.x + a.y * a.y; - float unit(): Returns a vector pointing on the same direction, but with a length of 1.
a.unit() = a / a.length(); - Vector2f turnLeft(): Returns the vector rotated 90 degrees left. Useful for computing normals. (Assumes that y axis points up, otherwise this is turnRight)
a.turnLeft = Vector2f(-a.y, a.x);Â - Vector2f turnRight():Â Returns the vector rotated 90 degrees right. Useful for computing normals. (Assumes that y axis points up, otherwise this is turnLeft)
a.turnRight = Vector2f(a.y, -a.x); - Vector2f rotate(float angle): Rotates the vector by the specified angle. This is an extremely useful operation, though it is rarely found in Vector classes. Equivalent to multiplying by the 2×2 rotation matrix.
a.rotate(angle) =  Vector2f(a.x * cos(angle) – a.y * sin(angle), a.x * sin(angle) + a.y * cos(angle)); - float angle(): Returns the angle that the vector points to.
a.angle() = atan2(a.y, a.x);
Simple cases – warming up
Case #01 – Distance between two points
You probably know that this is done with the Pythagorean theorem, but the vectorial way is simpler. Given two vectors a and b:
float distance = (a-b).length();
Case #02 – Alignment
Sometimes, you want to align an image by its center. Sometimes, by its top-left corner. Or sometimes, by its top-center point. More generally, you can do alignment using a vector whose two components go from 0 to 1 (or even beyond, if you’d like), giving you full control of alignment.
// imgPos, imgSize and align are all Vector2f Vector2f drawPosition = imgPos + imgSize * align
Case #03 – Parametric Line Equation
Two points define a line, but it can be tricky to do much with this definition. A better way to work with a line is its parametric equation: one point (“P0″) and a direction vector (“dir”).
Vector2f p0 = point1; Vector2f dir = (point2 - point1).unit();
With this, you can, for example, get a point 10 units away by simply doing:
Vector2f p1 = p0 + dir * 10;
Case #04 – Midpoint and interpolation between points
Say you have vectors p0 and p1. The midpoint between them is simply (p0+p1)/2. More generally, the line segment defined by p0 and p1Â can be generated by varying t between 0 and 1 in the following linear interpolation:
Vector2f p = (1-t) * p0 + t * p1;
At t = 0, you get p0; at t = 1, you get p1; at t = 0.5, you get the midpoint, etc.
Case #05 – Finding the normal of a line segment
You already know how to find the direction vector of a line segment (case #03). The normal vector is a 90 degree rotation of that, so just call turnLeft() or turnRight() on it!
Projections using the Dot Product
The dot product has the incredibly useful property of being able to compute the length of a vector’s projection along the axis of another. To do this, you need the vector that you’ll project (“a“) and a unit vector (so make sure that you call unit() on it first!) representing the direction (“dir“). The length is then simply a.dot(dir). For example, if you have a = (3, 4) and dir = (1, 0), then a.dot(dir) = 3, and you can tell that this is correct, because (1, 0) is the direction vector of the x axis. In fact, a.x is always equivalent to a.dot(Vector2f(1, 0)), and a.y is equivalent to a.dot(Vector2f(0, 1)).
Because the dot product between a and b is also defined as |a||b|cos(alpha) (where alpha is the angle between the two), the result will be 0 if the two vectors are perpendicular, positive if the angle between them is less than 90, and negative if greater. This can be used to tell if two vectors point in the same general direction.
If you multiply the result of that dot product by the direction vector itself, you get the vector projected along that axis – let’s call that “at” (t for tangent). If you now do a – at, you get the part of the vector that is perpendicular to the dir vector – let’s call that “an” (n for normal). at + an = a.
Case #06 – Determining direction closest to dir
Say that you have a list of directions represented as unit vectors, and you want to find which of them is the closest to dir. Simply find the largest dot product between dir and a vector in the list. Likewise, the smallest dot product will be the direction farthest away.
Case #07 – Determining if the angle between two vectors is less than alpha
Using the equation above, we know that the angle between two vectors a and b will be less than alpha if the dot product between their unit vectors is less than cosine of alpha.
bool isLessThanAlpha(Vector2f a, Vector2f b, float alpha) { return a.unit().dot(b.unit()) < cos(alpha); }
Case #08 – Determining which side of a half-plane a point is on
Say that you have an arbitrary point in space, p0, and a direction (unit) vector, dir. Imagine that an infinite line goes by p0, perpendicular to dir, dividing the plane in two, the half-plane that dir points to, and the half-plane that it does not point to. How do I tell whether a point p is in the side pointed to by dir? Remember that dot product is positive when the angle between vectors is less than 90 degrees, so just project and check against that:
bool isInsideHalfPlane(Vector2f p, Vector2f p0, Vector dir) { return (p - p0).dot(dir) >= 0; }
Case #09 – Forcing a point to be inside a half-plane
Similar to the case above, but instead of just checking, we’ll grab the projection and, if less than 0, use it to move the object -projection along dir, so it’s on the edge of the half-plane.
Vector2f makeInsideHalfPlane(Vector2f p, Vector2f p0, Vector dir) { float proj = (p - p0).dot(dir); if (proj >= 0)Â return p; else return p - proj * dir; }
Case #10 – Checking/forcing a point inside a convex polygon
A convex polygon can be defined to be the intersection of several half-planes, one for each edge of the polygon. Their p0 is either vertex of the edge, and their dir is the edge’s inner-facing normal vector (e.g., if you wind clockwise, that’d be the turnRight() normal). A point is inside the polygon if and only if it’s inside all the half-planes. Likewise, you can force it to be inside the polygon (by moving to the closest edge) by applying the makeInsideHalfPlane algorithm with every half-plane. [ops, this actually only works if all angles are >= 90 degrees]
Case #11 – Reflecting a vector with a given normal
Pong-like game. Ball hits a sloped wall. You know the ball’s velocity vector and the wall’s normal vector (see case #05). How do you reflect it realistically? Simple! Just reflect the ball’s normal velocity, and preserve its tangential velocity.
Vector2f vel = getVel(); Vector2f dir = getWallNormal(); // Make sure this is a unit vector Vector2f velN = dir * vel.dot(dir); // Normal component Vector2f velT = vel - velN; // Tangential component Vector2f reflectedVel = velT - velN;
For more realism, you can multiply velT and velN by constants representing friction and restitution, respectively.
Case #12 – Cancelling movement along an axis
Sometimes, you want to restrict movement in a given axis. The idea is the same as above: decompose in a normal and tangential speed, and just keep tangential speed. This can be useful, for example, if the character is following a rail.
Rotations
Case #13 – Rotating a point around a pivot
If used to represent a point in space, the rotate() method will rotate that point around the origin. That might be interesting, but is limiting. Rotating around an arbitrary pivot vector is simple and much more useful – simply subtract the pivot from it, as if translating so the origin IS the pivot, then rotate, then add the pivot back:
Vector2f rotateAroundPivot(Vector2f p, Vector2f pivot) { return (pos - pivot).rotate(angle) + pivot; }
Case #14 – Determining which direction to turn towards
Say that you have a character that wants to rotate to face an enemy. He knows his direction, and the direction that he should be facing to be looking straight at the enemy. But should he turn left or right? The cross product provides a simple answer: curDir.cross(targetDir) will return positive if you should turn left, and negative if you should turn right (and 0 if you’re either facing it already, or 180 degrees from it).
Other Geometric Cases
Here are a few other useful cases that aren’t that heavily vector-based, but useful:
Case #15 – Isometric world to screen coordinates
Isometric game. You know where the (0, 0) of world is on the screen (let’s call that point origin and represent it with a vector), but how do you know where a given world (x, y) is on the screen? First, you need two vectors determining the coordinate base, a new x and y axes. For a typical isometric game, they can be bx = Vector2f(2, 1)Â and by = Vector2f(-2, 1)Â – They don’t necessarily have to be unit vectors. From now, it’s straightforward:
Vector2f p = getWorldPoint(); Vector2f screenPos = bx * p.x + by * p.y + origin;
Yes, it’s that simple.
Case #16 – Isometric screen to world coordinates
Same case, but now you want to know which tile the mouse is over. This is more complicated. Since we know that (x’, y’) = (x * bx.x + y * by.x, x * bx.y + y * by.y) + origin, we can first subtract origin, and then solve the linear equation. Using Cramer’s Rule, except that we’ll be a little clever and use our 2D cross-product (see definition at the beginning of the article) to simplify things:
Vector2f pos = getMousePos() - origin; float demDet = bx.cross(by); float xDet = pos.cross(by); float yDet = bx.cross(pos); Vector2f worldPos = Vector2f(xDet / demDet, yDet / demDet);
And now you don’t need to do that ugly find-rectangle-then-lookup-on-bitmap trick that I’ve seen done several times before.
Vidaemada
/ 2016-08-01Jay Rock feat Kendrick Lamar (трейлер ГТР5 ) – Hood Gone Love It 4 :05 лол. 3 :02. Favored Nations – The Setup ( GTA V OST) концовка гта 5 еÑли ÑпаÑти обоих. 3 :35. пеÑÐ½Ñ Ð¸Ð· гта 5 – финал игры конец 3 :38 иÑполнитель Санёл Врачёв.
NorbertoMaf
/ 2016-08-01Дело в том, что в коде Grand Theft Auto 5 было найдено упоминание об обновлении Ñ Ð¿Ð¾Ñ€Ñдковым номером 1. 18 , релиз которого назначен на канун Ð¥Ñллоуина, то еÑÑ‚ÑŒ ожидать его Ñтоит Ñо Ð´Ð½Ñ Ð½Ð° GTA 5 ( Grand Theft Auto 5 ) — узнать больше о игре.
HomerNounny
/ 2016-08-01Видео, клипы, ролики Ñмотреть онлайн « Striptease ( Стриптиз )». ПеÑни и mp3: Striptease ( Стриптиз ) — Ñлушать онлайн или Ñкачать mp3. Ðайдены 15 595 видео-роликов!
Hisakofax
/ 2016-08-01GTA 5 Online – Мой Дробовик в Обновлении 1 . 17 . Похожие видео . ? 45:25. Винтовка Вепрь M39: американÑкий Калашников. ? 3:46. Обзор нового Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ "The Last Team Standing" Ð´Ð»Ñ GTA online 1 . 17 .
MatthewSl
/ 2016-08-01куплинов, Ñкайрим прохождение , scp, игры гта 5 , Ñмешновки, нефёдов, алекÑа, nether, брейн дит, брайан, state of Ð’Ñ‹ поÑмотрели онлайн видео по фразе Брейн ! GTA ONLINE КÐК МЫ ÐÐШЛИ ТРУБОПРОВОД ТРЕШ #74 Ч 1. ЕÑли онлайн видео Брейн !
PamilaChiz
/ 2016-08-01Ðто Ñамые популÑрные gta san andreas коды, их можете Ñмело иÑпользовать, при поÑвлении в паблике новых, ÑпиÑок будет обновлÑÑ‚ÑŒÑÑ. gta vice city Ñекреты. коды +на gta зима . gta russia 2012.
YaniraJaido
/ 2016-08-01ОпиÑание: GTA San Andreas только Ð´Ð»Ñ Ð¸Ð³Ñ€Ñ‹ по Ñети интернет,убраны звуки,миÑÑии,уÑтановлен SA : MP 0.3c. ilnurzagiev 08.04.2011 Online 1.36 Гб. Скачать GTA SAMP by Elmaldin Да Ñто чиÑÑ‚Ð°Ñ Ð“Ð¢Ð ,без каких либо модов,убраны миÑÑии,звуки
DarlineMt
/ 2016-08-01Skype – Скайп [8 – . Форум [17 – . Ðватарки Ð´Ð»Ñ Ð¼Ð°Ð¹Ð»Ð° [34 – . Facebook [25 – . БеÑплатно Ñкачать. Ð“Ð»Ð°Ð²Ð½Ð°Ñ Â» Фотоальбом » Картинки на аву, риÑунки Ð´Ð»Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€ÐºÐ¸ » Игры » GTA 4 .
HerminiaOi
/ 2016-08-01Ð’ÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° реÑурÑе о пиротехничеÑких изделиÑÑ…, оборудовании Ð´Ð»Ñ Ñ„ÐµÐ¹ÐµÑ€Ð²ÐµÑ€ÐºÐ¾Ð² , о производителÑÑ… пиротехники во вÑем мире и Ð´Ñ€ÑƒÐ³Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑтавлÑетÑÑ Ð°Ð±Ñолютно беÑплатно.
LakiaFlah
/ 2016-08-01Как выбрать мороженицу : оÑновные критерии ?. ÐаÑÑ‚Ð¾Ð»ÑŒÐ½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ требует Ð½Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñолью и льдом либо предварительного Ð¾Ñ…Ð»Ð°Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ‡Ð°ÑˆÐ¸ Ð´Ð»Ñ Ð¼Ð¾Ñ€Ð¾Ð¶ÐµÐ½Ð¾Ð³Ð¾ в морозильной камере. ÐвтоматичеÑÐºÐ°Ñ Ð¼Ð¾Ñ€Ð¾Ð¶ÐµÐ½Ð¸Ñ†Ð° (Ñ ÐºÐ¾Ð¼Ð¿Ñ€ÐµÑÑором)
MilagrosDuh
/ 2016-08-0125 комментариев к запиÑи “GTA IV ZOMBIE APOCALYPSE SURVIVAL EP 1 — UNTIL GTA 5 â€. ROCKSTAR should put zombies in GTA 5 . I would buy it in a heartbeat?.
Talithakr
/ 2016-08-01Grand Theft Auto 4 : ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° раÑположение вÑех голубей, прыжков, аптечек, бронежилетов и тд. Официальный Ñайт: www. gta 4 .com Разработчик: Rockstar North Издатель: 2K Games.
Violetapt
/ 2016-08-01ОпиÑание. GTA Vice City Cheater – любители быÑтрой игры на андроид Ð´Ð»Ñ Ð²Ð°Ñ Ð²Ð²Ð¾Ð´ и применение чит кодов. RUBBISHCAR – МуÑоровоз. GETTHEREFAST – Sabre Turbo (ооо!)
ShantayBUG
/ 2016-08-01гта 4 гробовщик , GTA 5 PS 4 ОБЗОР– ШЕДЕВР!!!, ПÐСХÐЛКИ – 05 – GTA 4 ПÐСХÐЛКИ, GTA 5 PS 4 СЕКРЕТÐОЕ ÐВТО Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ð¼Ñ‹ поиграем в GTA online, а именно мы вмеÑте Ñ Ð‘Ð°Ð½Ð´Ð¾Ð¹ Енотов будем воплощать ваши Безумные идеи в жизнь!!!! 13 октÑÐ±Ñ€Ñ 2014
SalLeadeop
/ 2016-08-01игра гта гта наруто Ñекреты гта 4 Ñтепан гт гта Ñа Ñамп майнкрафт выживание Ñкачать гта 4 фроÑÑ‚ гта 4 трюки гта роÑÑÐ¸Ñ Ð³Ñ‚Ð° 5 паркур гта моды мифы гта 5 гта Ñамп рп гта 4 обзор приколы в гта прохождение gta 5 .
Malindafuch
/ 2016-08-01#86. Смотреть и Ñкачать GTA 5 Online (PS 4 ) – Жгучий форÑаж ! #86 беÑплатно онлайн. Мне нравитÑÑ. ПоделитьÑÑ. Скачать Видео . ? СпаÑибо! ПоделитеÑÑŒ Ñ Ð´Ñ€ÑƒÐ·ÑŒÑми! URL. ? Вам не понравилоÑÑŒ видео .
JimmyPoike
/ 2016-08-01Свободное падение . Мартин МадраÑо хочет, чтобы Майкл и Тревор оказали ему уÑлугу. ÐžÐ³Ñ€Ð°Ð±Ð»ÐµÐ½Ð¸Ñ Ð² GTA Онлайн Ñтали доÑтупны. Подготовка к ограблению в GTA Online.
FriedacilE
/ 2016-08-01Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ñтой по Ñчету GTA ( Grand Theft Auto ) будут разворачиватьÑÑ Ð² городе Los Santos, Ñто Ñркий, Ñолнечный и Ðто означает выÑокоÑффективную загрузку файлов большого размера. Ð’Ñ‹ можете Ñкачать беÑплатно µTorrent Ñ Ð½Ð°ÑˆÐµÐ³Ð¾ портала.
Zenaesosido
/ 2016-08-01игры Ðачало Прохождение. Ðвтор GTA 5 – GTA 5 . Публикации автораGTA 5 – GTA 5 ?. Добавить комментарий Отменить ответ. Ð”Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð²Ð°Ð¼ необходимо авторизоватьÑÑ.
GraciaFrody
/ 2016-08-01Содержание Ðгератум ÐлиÑÑум Ðмарант ÐÑтра Бальзамин Бархатцы Вербена Ð“Ð¾Ð´ÐµÑ†Ð¸Ñ ÐšÐ°Ð»ÐµÐ½Ð´ÑƒÐ»Ð° Клеома КоÑÐ¼ÐµÑ Ð›Ð¾Ð±ÐµÐ»Ð¸Ñ ÐœÐ°Ñ‚Ñ‚Ð¸Ð¾Ð»Ð° ÐаÑÑ‚ÑƒÑ€Ñ†Ð¸Ñ Ðигелла ÐŸÐµÑ‚ÑƒÐ½Ð¸Ñ ÐŸÐ¾Ñ€Ñ‚ÑƒÐ»Ð°Ðº
Svetlanasak
/ 2016-08-01ÐДСКИЕ ВОРОТРv 2.0 ! МИФЫ !!! GTA V – Online #133. Летающие машины Gta Online – ÐдÑкие врата – ЧаÑÑ‚ÑŒ 123 [Баги – . Играем в многопользовательÑкий режим игры Grand Theft Auto V , где мы пробиваемÑÑ
GordonRina
/ 2016-08-01Rockstar ничего не анонÑировал, но некий шведÑкий Ñотрудник роÑказал гейм-реактору, что уже в Ñту пÑтницу минувшую или текущую, начнут принимать предварительные заказы на компьютерную гта 5 . Ðто значит 4 Ð°Ð¿Ñ€ÐµÐ»Ñ 2015
HiramQuola
/ 2016-08-01Скачать GTA 4 / ГТР4 "ÐŸÐ¾Ð»Ð¸Ñ†Ð¸Ñ [ELS – " Ñ Ñайта. Дополнение Ð´Ð»Ñ Grand Theft Auto 4 Размер: 667Kb Ðвтор: WPR КатегориÑ: Ðвтомобили ЗаменÑет: police.wft.
EasterBole
/ 2016-08-01Карта GTA 4 в бортовом компьютере. Ð’ некоторых машинах, а именно у которых еÑÑ‚ÑŒ бортовой компьютер, на их мониторах Майкла, когда Джимми Ñидит за ноутбуком, на его мониторе можно заметить Ñтраницу Ðико Беллика в Ñоциальной Ñети Lifeinvader .
Lianneduth
/ 2016-08-01Коды на GTA San Andreas (Xbox). Секреты GTA Criminal Russia (Крим КÑтати, еÑÑ‚ÑŒ Ñайт Ñ Ñекретами GTA : San – Andreas : <вырезано цензурой> Ты ещё пиÑал про нападение машины в леÑу.
Auraacelo
/ 2016-08-01Где лучше графика , на PC или PS 4 ? КитайÑкий игровой портал Ñравнил графику и пришел к выводу. Ðовые музыкальные треки и радио в GTA 5 Ð´Ð»Ñ PC . Ðовые Ñкриншоты PC -верÑии Grand Theft Auto 5 .
Elbauniop
/ 2016-08-01Играть в гта ÐºÑ€Ð¸Ð¼Ð¸Ð½Ð°Ð»ÑŒÐ½Ð°Ñ Ñ€Ð¾ÑÑÐ¸Ñ 2 . Alien shooter 2 волжÑкий Ð´Ð»Ñ Ð¸Ð³Ñ€Ñ‹. Скачать беÑплатно плагин knife model selector чтобы пропиÑывать в чате knife ÐºÑ 1.6. Сервер подбора игроков max payne 3.
PamalaAsymn
/ 2016-08-01Тревор Ð¤Ð¸Ð»Ð»Ð¸Ð¿Ñ gta 5 (или Тревор ФилипÑ) (англ. Trevor Philips) — один из трёх Ð’ гта 5 убить Тревора возможно. Ðто будет ÑвлÑÑ‚ÑŒÑÑ Ð¾Ð´Ð½Ð¾Ð¹ из концовок игры.
Marjoriemok
/ 2016-08-01Дата выхода GTA 5. CиÑтемные Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ GTA 5. Официальные новоÑти GTA 5. Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Rockstar добавили приложение Ð´Ð»Ñ iOS Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ Grand Theft Auto : iFruit Ð´Ð»Ñ iOS. Wiki . ТранÑпорт.
BettieHix
/ 2016-08-01Онлайн игры . Скачать GTA : San Andreas через торрент программу. Ð’Ñ‹ можете загрузить руÑÑкую верÑию игры GTA : San Andreas Ñебе на компьютер абÑолютно беÑплатно.
Sarkari naukri
/ 2016-08-08Great stuff. thanks
Zedaa
/ 2016-08-08Very fruitful information and thanks for sharing.
Bamlal
/ 2016-08-15thans for sharing it
Mansukh
/ 2016-08-15Nice details thanks for sharing such a nice information.
SheridanO
/ 2016-08-16Козерог гороÑкоп на февраль 2014 Любовный гороÑкоп на 2014 года Близнецы turupupu.ru 2014 .
BrunoClimi
/ 2016-08-16Приворот, гадание , вÑе виды магичеÑких уÑлуг. Ð’Ñ‹ÑÑˆÐ°Ñ Ñ€Ð¸Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð‘ÐµÐ»Ð°Ñ Ð¼Ð°Ð³Ð¸Ñ , предÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ , гадание на картах таро 1 000 руб. МагичеÑÐºÐ°Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒ
Mandiexenna
/ 2016-08-16Онлайн гаданиÑ. Книга Судеб ЧаÑто значение предÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð·Ð°Ð²Ð¸Ñит от
Coryimabib
/ 2016-08-16ГороÑкоп на 31 ÐоÑÐ±Ñ€Ñ 2012 ÑоÑтавлен длÑ: Овен . ГороÑкоп Ð´Ð»Ñ ÐžÐ²ÐµÐ½ : Вчера / Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ / Завтра.
Lusmearne
/ 2016-08-16могут быть загадки, Ð´Ð»Ñ Ð²Ð·Ñ€Ð¾Ñлых интереÑные или шуточные вопроÑÑ‹. . Только потренируйтеÑÑŒ дома краÑиво интерпретировать предÑказание . 3. . больше, чем гоÑтей ) вкладываетÑÑ Ð´Ð¾Ð¶Ð´Ð¸Ðº или конфетти и предÑказание на
SalEvespapy
/ 2016-08-16Lika, не важно Ð¸Ð¼Ñ Ñупруга будущего . Ð’Ñ‹ Ñто поймете, когда влюбитеÑÑŒ. Каждый человек в нашей Ñудьбе поÑлан не проÑто так. Ð”Ð»Ñ Ð¼ÐµÐ½Ñ
Raymondzet
/ 2016-08-16Во времена, когда жил ÐоÑÑ‚Ñ€Ð°Ð´Ð°Ð¼ÑƒÑ , территорию Ñовременной РоÑÑии чаще называли Севером или ВоÑтоком, поÑтому предÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÐоÑтрадамуÑа о РоÑÑии не Ñодержат Ñлов РоÑÑÐ¸Ñ Ð¸Ð»Ð¸ РуÑÑŒ.
SheronJego
/ 2016-08-16Доме, ему приходитÑÑ ÑƒÐ¶Ðµ 20 лет, и пары а они у преодолели кризиÑ, гороÑкоп на 14 жизнь.
PattieHauh
/ 2016-08-16ÐÑƒÐ¼ÐµÑ€Ð¾Ð»Ð¾Ð³Ð¸Ñ , как наука о чиÑлах – Ñто одна из Ñамых древних наук, наравне Ñ Ð½Ð° котором оÑновано творение Бога. Тайна чиÑла Вашего ребёнка
Charlenap
/ 2016-08-16ПÐМЯТЬ ( 99 ) – памÑÑ‚ÑŒ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±Ñ‹Ñтро воÑпроизводит нужную информацию. Большие предпоÑылки Ð´Ð»Ñ Ð¸Ð·ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð½Ð°ÑƒÐº. Люди Ñ Ñильной памÑтью
Fredrickk
/ 2016-08-16ТеÑÑ‚Ñ‹ Ð´Ð»Ñ ÐºÐ¾ÑƒÑ‡Ð¸Ð½Ð³Ð° ЯвлÑетÑÑ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¸Ðµ перехода Сказки ÐЛП Скачать реферат Ñмоцинальные проблемы техниками ÐЛП
Carolaawalo
/ 2016-08-16Онлайн гадание на замужеÑтво окрылÑет и дает Ñилы Ð“Ð°Ð´Ð°Ð½Ð¸Ñ Ð¾Ð½Ð»Ð°Ð¹Ð½ ?
Suziesert
/ 2016-08-16Ñ…Ð¸Ñ€Ð¾Ð¼Ð°Ð½Ñ‚Ð¸Ñ Ð·Ð½Ð°Ðº ÑкÑтраÑенÑа . как дейÑтвует приворот на крови новогодние предÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð² Ñтихах таро 20 фильм предÑказание Ñкачать барбоÑкины
LucioNemo
/ 2016-08-16-Ðе ÑовÑем правильно. ДейÑтвительно, еÑÑ‚ÑŒ привороты на новолуние , еÑÑ‚ÑŒ привороты на полнолуние , еÑÑ‚ÑŒ на другие фазы луны, а, например, те же
Meridithp
/ 2016-08-16ÐÑƒÐ¼ÐµÑ€Ð¾Ð»Ð¾Ð³Ð¸Ñ ÐŸÑ€Ð¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ‚ тему номеров Ñпецтехники вот Ñ‚Ð°ÐºÐ°Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÑˆÐºÐ° Ñ Ð³Ð¾Ñ.номером .. Реальный номер реального авто .
KatlynWhece
/ 2016-08-16даты Ñмерти , узнать где вы дату Ñмерти человека ! узнать дату Ñмерти