Dear Prof. Murrell,

Thanks a lot! This function is exactly what I need. Though I am not
working with geographic data, this package seems to have other
functions that I may need for my task.

Thanks!

Regards,
Shu Fai

On Mon, Aug 11, 2025 at 6:42 AM Paul Murrell <p...@stat.auckland.ac.nz> wrote:
>
> Hi
>
> The 'sf' package can calculate the intersection ...
>
> library(grid)
> x1 <- c(0.25, 0.25, 0.75, 0.75)
> x2 <- c(0.05, 0.15, 0.25, 0.35)
> y1 <- c(0.25, 0.75, 0.75, 0.25)
> a <- xsplineGrob(x1, y1, shape = 1, gp=gpar(col="grey"))
> b <- xsplineGrob(x2, y1, shape = .5, gp=gpar(col="grey"))
>
> ## Draw the lines to check that the answer is correct
> grid.newpage()
> grid.draw(a)
> grid.draw(b)
>
> ## Use 'sf' to find point of intersection
> library(sf)
> aPts <- xsplinePoints(a)
> bPts <- xsplinePoints(b)
> aLine <- st_linestring(cbind(aPts$x, aPts$y))
> bLine <- st_linestring(cbind(bPts$x, bPts$y))
> int <- st_intersection(aLine, bLine)
>
> ## Draw the intersection
> grid.circle(int[1], int[2], default.units="in",
>              r=unit(1, "mm"), gp=gpar(fill="black"))
>
> Hope that helps
>
> Paul
>
> On 9/08/25 06:36, Jeff Newmiller via R-help wrote:
> > "Spline" is a class of curve generating techniques. The grid library 
> > implements two of these techniques to interpolate a curve through some 
> > points (b-spline and x-spline, differing primarily in the control 
> > variables). As a graphics library it has a focus on graphical output, 
> > though it does export the xsplinePoints() function with which you can 
> > approximate the curve with short line segments and proceed to do your math 
> > starting from there. There are some options discussed here [1].
> >
> > [1] 
> > <https://stackoverflow.com/questions/68786700/calculate-2d-spline-path-in-r-with-customizable-number-of-interpolation-points>
> >
> > On August 8, 2025 7:16:03 AM PDT, Shu Fai Cheung <shufai.che...@gmail.com> 
> > wrote:
> >> Hi All,
> >>
> >> I am new to the grid package. Please pardon me for asking a question
> >> that may be a trivial one.
> >>
> >> If two curves created by grid::xsplineGrob() intersect, is there any
> >> existing function that can find this/these point(s)?
> >>
> >> This is an example:
> >>
> >> library(grid)
> >>
> >> x1 <- c(0.25, 0.25, 0.75, 0.75)
> >> x2 <- c(0.05, 0.15, 0.25, 0.35)
> >> y1 <- c(0.25, 0.75, 0.75, 0.25)
> >>
> >> a <- xsplineGrob(x1, y1, shape = 1)
> >> b <- xsplineGrob(x2, y1, shape = .5)
> >>
> >> grid.draw(a)
> >> grid.draw(b)
> >>
> >> Specifically, I would like to find these points without drawing the
> >> two curves using grid.draw().
> >>
> >> I found methods to find this/these point(s) on the internet. But this
> >> is a frequently asked question, so I guess maybe there are existing
> >> functions/packages that can do this. However, I could not yet find
> >> any.
> >>
> >> Regards,
> >> Shu Fai Cheung
> >>
> >> ______________________________________________
> >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >> https://stat.ethz.ch/mailman/listinfo/r-help
> >> PLEASE do read the posting guide 
> >> https://www.R-project.org/posting-guide.html
> >> and provide commented, minimal, self-contained, reproducible code.
> >
>
> --
> Dr Paul Murrell (he/him)
> Te Kura Tatauranga | Department of Statistics
> Waipapa Taumata Rau | The University of Auckland
> Private Bag 92019, Auckland 1142, New Zealand
> 64 9 3737599 x85392
> p...@stat.auckland.ac.nz
> www.stat.auckland.ac.nz/~paul/
>

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

Reply via email to