If B1 is the blue point between the 2 red points, and B2 is the other blue point then the way to do this is:

- Find B1 - B2
- Normalise this vector
- Then scale this vector up by half the distance between the red points
- Rotate by 90 degrees
- Add this vector to B1 (this is R1)
- Subtract this vector from B1 (This is R2)

All of the above is fairly straightforward - the trickiest bit would be figuring out how to write it out in text!

This might be helpful though - matrix to rotate by 90 degrees:

```
[ 0 -1 ]
[ 1 0 ]
```

The easy way around this one is not to think in terms of slope m, but rather the change in x and y, which I call dx, dy (from the calculus notation).

The reason is for one thing, that dealing with a slope for a vertical line is infinite, and in any case, you don't need to use trig functions, this code will be faster and simpler.

```
dx = x2 - x1;
dy = y2 - y1;
```

I am assuming here that point 2 is the intersection of the desired line.

Ok, so the perpendicular line has a slope with the negative reciprocal of the first.

There are two ways to do that:

```
dx2 = -dy
dy2 = dx
```

or

```
dx2 = dy
dy2 = -dx
```

this corresponds to the two directions, one turning right, and the other left.

However, dx and dy are scaled to the length of the original line segment. Your perpendicular has a different length.

Here's the length between two points:

```
double length(double x1, double y1, double x2, double y2) {
return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
}
```

Do what you want, to go to one side or the other, is:

```
double scale = length(whatever length you want to go)/sqrt(dx*dx+dy*dy);
double dx2 = -dy * scale;
double dy2 = dx * scale
```

and then the same again for the other side.

I just realized my example is somewhat c++, since I used sqrt, but the differences are trivial. Note that you can write the code more efficiently, combining the square roots.

You know the slope of the blue line, let's call it `m`

. And a line perpendicular to the blue line will have slope `-1/m`

.

to find the x-coordinate you need some trig, `sine \theta = d / delta_x`

, where \theta is the angle of the blue line for the x-axis and d is the distance to one of the red points from the blue point. Then add/subtract `delta_x`

to the x-coordinate of the blue point you want the line to be perpendicular to. Now you can use the point-slope formula to figure out the y coordinate.

I'd prefer the vector or matrix solutions suggested by Kragan and in your previous question, but you might also try a more basic approach: Assume a linear equation of the form *y = mx + b*. Use the two-point form to get the slope (*m*) of the line's equation. The perpendicular has slope -1/*m*. Use this new slope and the endpoint in the pointâ€“slope form to find any two points on the perpendicular. Naturally, you have to avoid *m* = 0.