SED navigation bar go to SED home page go to Dataplot home page go to NIST home page SED Home Page SED Staff SED Projects SED Products and Publications Search SED Pages
Dataplot Vol 2 Vol 1

DPNTLINE

Name:
    DPNTLINE (LET)
Type:
    Library Function
Purpose:
    Compute the perpindicular distance between a point and line defined by a point and a slope.
Description:
    Given a point (X1,Y1) and line defined by (X2,Y2) and the slope s, determine the perpindicular distance between (X1,Y1) and the line.

    The formula for this distance is

      D = |s*X1 - Y1 + B|/SQRT(s**2 + 1)

    where the line is defined as

      Y2 = s*X2 + B
      B = Y2 - s*X2
Syntax:
    LET <dist> = DPNTLINE(<x1>,<y1>,<x2>,<y2>,<slope>)
                            <SUBSET/EXCEPT/FOR qualification>
    where <x1> is a variable or a parameter containing the x coordinates of the first point;
                <y1> is a variable or a parameter containing the y coordinates of the first point;
                <x2> is a variable or a parameter containing the x coordinates of the second point;
                <y2> is a variable or a parameter containing the y coordinates of the second point;
                <slope> is the slope of the line containing (<x2>,<y2>);
                <dist> is a variable or a parameter (depending on what the input arguments are) where the computed perpindicular distances are stored;
    and where the <SUBSET/EXCEPT/FOR qualification> is optional.
Examples:
    LET A = DPNTLINE(1,1,0,0,0.5)
    LET DIST = DPNTLINE(X1,Y1,X2,Y2,SLOPE)
Default:
    None
Synonyms:
    None
Reference:
    Bowyer and Woodwark (1983), "A Programmer's Geometry", Butterworths, pp. 12-13.
Related Commands:
    ANGRAD = Return the counter clockwise angle, in radians, of the angle determined by three points.
    POINTS IN POLYGON = Determine whether points are in the interior of a convex polygon.
    CONVEX HULL = Determine the convex hull of a set of points.
    TRANSFORM POINTS = Perform location, scale, and rotation transformation for a set of points.
    EXTREME POINTS = Determine the extreme points of a set of points.
    LINE INTERSECTIONS = Determine the intersection points for a set of lines.
    PARALLEL LINE = Determine the coordinates for a point that defines a parallel line determined by a point and a line defined by two points.
    PERPINDICULAR LINE = Determine the coordinates for a point that defines a perpindicular line determined by a point and a line defined by two points.
Applications:
    Computational Geometry
Implementation Date:
    2012/10
Program:
     
    skip 25
    read convhull.dat x y
    .
    let y2 x2 = 2d convex hull y x
    let xtemp = x2(1)
    let ytemp = y2(1)
    let y2 = combine y2 ytemp
    let x2 = combine x2 xtemp
    let x3 = x2
    let y3 = y2
    let n = size y2
    let nm1 = n - 1
    retain x2 y2 for i = 1 1 nm1
    retain x3 y3 for i = 2 1 n
    let slope = slope(x2,y2,x3,y3)
    let pdist = dpntline(xtemp,ytemp,x3,y3,slope)
    .
    set write decimals 4
    print "Anchor Point: (^xtemp,^ytemp)"
    print " "
    print " "
    print x3 y3 slope pdist
        
    The following output is generated
     
    Anchor Point: (0,-2.)
     
     
     
    ------------------------------------------------------------
                 X3             Y3          SLOPE          PDIST
    ------------------------------------------------------------
             1.0000        -1.7300         0.2700         0.0000
             1.7300        -1.0000         1.0000         0.3650
             2.0000         0.0000         3.7037         0.3674
             1.7300         1.0000        -3.7037         0.6392
             1.0000         1.7300        -1.0000         2.3650
             0.0000         2.0000        -0.2700         3.7282
            -1.0000         1.7300         0.2700         3.7282
            -1.7300         1.0000         1.0000         2.3650
            -2.0000         0.0000         3.7037         0.6392
            -1.7300        -1.0000        -3.7037         0.3674
            -1.0000        -1.7300        -1.0000         0.3650
             0.0000        -2.0000        -0.2700         0.0000
        

Date created: 02/15/2013
Last updated: 02/15/2013
Please email comments on this WWW page to alan.heckert@nist.gov.