Update
This commit is contained in:
parent
d9a9d8158f
commit
364e16e0e6
3 changed files with 32 additions and 11 deletions
19
line.md
19
line.md
|
@ -13,7 +13,7 @@ Line is a one [dimensional](dimension.md) shape, i.e. any of its points can be d
|
|||
|
||||
*some lines, in case you haven't seen one yet*
|
||||
|
||||
## Equations
|
||||
## Representing Lines With Equations
|
||||
|
||||
Mathematically lines can be defined by equations with space coordinates (see [analytic geometry](analytic_geometry.md)) -- this is pretty important for example for [programming](programming.md) as many times we need to compute intersections with lines; for example [ray casting](ray_casting.md) is a method of 3D rendering that "shoots lines from camera" and looks at which objects the lines intersect. Line equations can have different "formats", the two most important are:
|
||||
|
||||
|
@ -44,6 +44,23 @@ Here *P* is a point that lies on the line, i.e. we may again use e.g. the point
|
|||
|
||||
Now for whatever *t* we plug into these equations we get the *[x,y]* coordinates of a point that lies on the line; for example for *t = 0* we get *x = 1 + 0 * 3 = 1* and *y = 2 + 0 * 1 = 2*, i.e. the point *A* itself. As an exercise you may try substituting other values of *t*, plotting the points and verifying they lie on a line.
|
||||
|
||||
## Formulas
|
||||
|
||||
Here let be formulas for computing various things related to lines and line segments.
|
||||
|
||||
Consider two dimensional plane. Let *L* be a line (or line segment) going from point *L1 = [L1x,L1y]* to point *L2 = [L2x,L2y]*. Let *dx = L2x - L1x* and *dy = L2y - L1y*. Let *K* be another line (or line segment). Let *P = [Px,Py]* be a point.
|
||||
|
||||
- **line segment [length](length.md)**: Use [Pythagorean theorem](pythagorean_theorem.md): *length(L) = sqrt(dx^2 + dy^2)*. The same goes for a line in 3D.
|
||||
- **determine which side of line L point P lies on**: A simple way is to use the simple formula for [triangle](triangle.md) winding, i.e. determine if triangle *[L1,L2,P]* goes clockwise or counterclockwise. This can also determine if the point lies exactly on the line (i.e. lies on neither side).
|
||||
- **shortest distance of point P from line L**: TODO
|
||||
- **intersection of lines (or line segments) L and K**: Represent the lines with their equations (see above), preferably parametric (allows any angle), put both points equal and solve the system of equations (watch out for the cases with no or many solutions). For line segments you also additionally have to check whether the intersection you find lies within BOTH line segments (with parametric representations this is easily done by checking if both parameters you get as a solution lie in the range 0 to 1).
|
||||
- **angle between lines L and K**: TODO
|
||||
- **distance of lines P and L**: TODO
|
||||
- **project point P orthogonally to line L**: TODO
|
||||
- TODO: more
|
||||
|
||||
TODO: 3D lines
|
||||
|
||||
## Line Drawing Algorithms
|
||||
|
||||
Drawing lines with computers is a subject of [computer graphics](graphics.md). On specific devices such as [vector monitors](vector_monitor.md) this may be a trivial task, however as most display devices nowadays work with [raster graphics](raster_graphics.md), let's from now on focus only on such devices.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue