At 3:04 PM -0700 8/23/10, CZ wrote:
Hi,

I am trying to draw a perpendicular line from a point to two points.
Mathematically I know how to do it, but to program it, I encounter some
problem and hope can get help.  Thanks.

I have points, A, B and C.  I calculate the slope and intercept for line
drawn between A and B.
I am trying to check whether I can draw a perpendicular line from C to line
AB and get the x,y value for the point D at the intersection.

Assume I get the slope of the perpendicular line, I will have my point (D)
using variable x and y which is potentially on line AB.   My idea was using
|AC|*|AC| = |AD|*|AD|+ |CD|*|CD|.  I don't know what function I may need to
call to calculate the values for point D (uniroot?).


This is easier than you think.
Think of the x,y coordinates of each point :
Then, the slope is slope = rise/run =  (By- Ay)/(Bx- Ax)
The Dx coordinate = Cx and the Dy = (Dx - Ax) * slope
Then, to draw the line segment from C to D
lines(C,D)

In R:

A <- c(2,4)
B <- c(4,1)
C <- c(8,10)
slope <-( C[2]- A[2])/(C[1]-A[1])  #rise/run
D <- c(B[1],(B[1]-A[1])*slope + A[2])  # find D

my.data <- rbind(A,B,C,D)
colnames(my.data) <- c("X","Y")
my.data    #show it
plot(my.data,type="n")   #graph it without the points
text(my.data,rownames(my.data))  #put the points in
segments(A[1],A[2],C[1],C[2])   #draw the line segments
segments(B[1],B[2],D[1],D[2])

Bill



Thank you.



--
View this message in context: http://r.789695.n4.nabble.com/Draw-a-perpendicular-line-tp2335882p2335882.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to