subroutine intri(x,y,u,v,n,okay)
#
# Test whether any of the points (u(i),v(i)) are inside the triangle
# whose vertices are specified by the vectors x and y.
# Called by .Fortran() from triang.list.R.
#
implicit double precision(a-h,o-z)
dimension x(3), y(3), u(n), v(n)
integer okay
logical inside
zero = 0.d0
# Check on order (clockwise or anticlockwise).
s = 1.d0
a = x(2) - x(1)
b = y(2) - y(1)
c = x(3) - x(1)
d = y(3) - y(1)
cp = a*d - b*c
if(cp < 0) s = -s
do i = 1,n {
inside = .true.
do j = 1,3 {
jp = j+1
if(jp==4) jp = 1 # Take addition modulo 3.
a = x(jp) - x(j)
b = y(jp) - y(j)
c = u(i) - x(j)
d = v(i) - y(j)
cp = s*(a*d - b*c)
if(cp <= zero) {
inside = .false.
break
}
}
if(inside) {
okay = 0
return
}
}
okay = 1
return
end
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.