# generate barcode in c# windows application Intersection in Font Create Code 128 in Font Intersection

Intersection
Print ANSI/AIM Code 128 In None
Using Barcode encoder for Font Control to generate, create USS Code 128 image in Font applications.
www.OnBarcode.com
DataMatrix Generation In None
Using Barcode generation for Font Control to generate, create Data Matrix 2d barcode image in Font applications.
www.OnBarcode.com
Now that we have a way to figure out if the spaceship has collided with the vector, we need to find out exactly where the collision happened. But let s first consider when it won t happen. When two vectors are parallel, they ll never intersect. And that means that a collision between them will never happen. What do I mean by parallel vectors Those are vectors that are pointing in exactly the same direction or exactly opposite directions. Figure 2-28 shows three examples of parallel vectors. They run alongside each other like the two rails of a train track. You can always tell when two vectors are parallel because their dx and dy values will be exactly the same.
QR Code 2d Barcode Creation In None
Using Barcode maker for Font Control to generate, create QR Code image in Font applications.
www.OnBarcode.com
UPC-A Supplement 5 Maker In None
Using Barcode maker for Font Control to generate, create UPCA image in Font applications.
www.OnBarcode.com
Figure 2-28. These vectors are parallel and will never intersect.
Create PDF-417 2d Barcode In None
Using Barcode generation for Font Control to generate, create PDF 417 image in Font applications.
www.OnBarcode.com
EAN 128 Encoder In None
Using Barcode maker for Font Control to generate, create EAN / UCC - 13 image in Font applications.
www.OnBarcode.com
Most vectors aren t parallel and will intersect at some point or another. Sometimes the intersection will happen in the future; other times the intersection has already happened in the past. Figure 2-29 illustrates two pairs or intersecting vectors.
Make Code 128C In None
Using Barcode printer for Font Control to generate, create Code 128 image in Font applications.
www.OnBarcode.com
Paint Bookland EAN In None
Using Barcode drawer for Font Control to generate, create ISBN image in Font applications.
www.OnBarcode.com
Figure 2-29. The X marks the intersection point.
Code 128 Generation In Java
Using Barcode generator for Java Control to generate, create Code 128 Code Set C image in Java applications.
www.OnBarcode.com
Code 128 Code Set C Generation In .NET
Using Barcode generation for ASP.NET Control to generate, create Code128 image in ASP.NET applications.
www.OnBarcode.com
Finding the intersection point
PDF-417 2d Barcode Generation In .NET
Using Barcode drawer for .NET Control to generate, create PDF417 image in Visual Studio .NET applications.
www.OnBarcode.com
UCC - 12 Creator In Objective-C
Using Barcode printer for iPhone Control to generate, create UCC-128 image in iPhone applications.
www.OnBarcode.com
Finding the intersection point is not hard. A little bit of math comes to our rescue again. Figure 2-30 illustrates the general idea behind finding the intersection point. The key is that you need to extend a third vector between v1 and v2. The third vector helps us calculate the coordinates of the intersection point. v3 is like a ghost vector that quietly and invisibly contributes a bit of extra data that your calculations need to find the intersection point. The math involves a value called a perpendicular dot product. It s nothing to be afraid of! In fact, it s exactly the same as finding an ordinary dot product, except that instead of using v1 in the equation, you use v1 s normal: the perpendicular vector. The perpendicular dot product is sometimes called the perp product or perp-dot product. In the example code, it s represented by a variable named perpProduct. perpProduct = v1.ln.vx * v2.dx + v1.ln.vy * v2.dy;
1D Creator In Visual Studio .NET
Using Barcode creator for .NET Control to generate, create Linear image in .NET framework applications.
www.OnBarcode.com
Generate USS-128 In .NET Framework
Using Barcode maker for Reporting Service Control to generate, create EAN128 image in Reporting Service applications.
www.OnBarcode.com
VECTORS: GHOSTS IN THE MACHINE
Barcode Creator In None
Using Barcode maker for Software Control to generate, create Barcode image in Software applications.
www.OnBarcode.com
Barcode Generation In Objective-C
Using Barcode maker for iPhone Control to generate, create Barcode image in iPhone applications.
www.OnBarcode.com
Figure 2-30. The crosshair marks the intersection point. No big deal, right We ve used this sort of calculation before. You can use either the right or left normal, and the result will be the same. Here s how to use a perp-dot product to find the intersection point of v1 on v2:
2D Barcode Drawer In Java
Using Barcode drawer for Java Control to generate, create 2D image in Java applications.
www.OnBarcode.com
Print Code-128 In None
Using Barcode encoder for Microsoft Word Control to generate, create Code 128C image in Office Word applications.
www.OnBarcode.com
1. Find the perp-dot product of v3 and v2.
Printing Code 128B In Objective-C
Using Barcode generator for iPad Control to generate, create USS Code 128 image in iPad applications.
www.OnBarcode.com
Code-39 Decoder In VS .NET
Using Barcode decoder for VS .NET Control to read, scan read, scan image in VS .NET applications.
www.OnBarcode.com
perpProduct1 = v3.ln.vx * v2.dx + v3.ln.vy * v2.dy
2. Find the perp-dot product of v1 and v2.
perpProduct2 = v1.ln.vx * v2.dx + v1.ln.vy * v2.dy
3. Find the ratio between perpProduct1 and perpProduct2. This is just a matter of
dividing the two values together. (t is for tangent, the point of intersection, and is a common convention for representing this value.) t = perpProduct1 / perpProduct2
4. With the value of t in our pocket, we now have enough information to pinpoint the
precise intersection point with real x and y coordinates. We can find this by adding v1 s start point to its velocity and multiplying it by t. intersectionX = v1.a.x + v1.vx * t intersectionY = v1.a.y + v1.vy * t
5. And there we have the coordinates for the intersection point.
I can just imagine the giddy delight on the faces of the first mathematicians who first figured this out. Mathematicians: 1; Mysteries of the Universe: 0.
Intersection in action
Now let s see how this works in a live example. In the chapter s source files, you ll find a folder called Intersection. Run the SWF, and you ll see something that looks like Figure 2-31. The ship s intersection point with the line is marked by a small crosshair. (The ship s motion vector has been scaled by 10 so that you can see it clearly.) You can move the drag handles to change the line s inclination, and the intersection mark will have no problem keeping up. The status box also displays whether the intersection happens in the future or might have happened in the past. Because the intersection is found using the ship s velocity, not the direction its pointing in, the ship often looks like it s going to miss the intersection. But the intersection point is always predicted with spooky, pinpoint accuracy. Again, most of the code in the source files is routine. Here, we ll look at the important sections that create the intersection. The names of the vectors are the same as in Figure 2-30.
Figure 2-31. The code predicts where the intersection will take place. First, we need three vectors: v1 is the ship s motion vector, v2 is the target vector on which we want to find the intersection, and v3 is the helper vector between v1 and v2 that helps to calculate the correct point.