Re: [问题] 如何判断椭圆与矩形是否重叠?

楼主: banyhong (=_=)   2015-12-09 22:31:08
※ 引述《girl5566 (5566520)》之铭言:
: 文章分类提示:
: - 问题: 当你想要问问题时,请使用这个类别
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
: [软件熟悉度]:
: 新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: 目前有很多个椭圆形和矩形,想滤掉椭圆形与矩形相重合的矩形,如代码中的蓝色矩形
: 不知道有什么好方法可以做这件事情呢!?
: [程式范例]:
: d <- data.frame(x = c(8,5,2,5), y = c(5,9,5,1))
: plot(d,
: xlim=c(1, 10),
: ylim=c(1,20))
: bb <- data.frame(x = 1:10,y = 10:19)
: points(bb,col="blue")
: theta <- seq(0, 2 * pi, length=(30))
: x <- 100 + 50 * cos(theta)
: y <- 300 + 100 * sin(theta)
: plot(x, y, xlim=c(1, 500),
: ylim=c(1,500),type = "l")
: i <- 4*(0:10)
: rect(80, 280, 120, 320, col = "blue")
: rect(380, 280, 420, 320, col = "red")
: [环境叙述]:
:
: R 3.2.2 win7 64bit
: [关键字]:
:
如果你想问的是,用数学的角度判断是否在椭圆内部
椭圆的方程式是 x^2 / a^2 + y^2 / b^2 < 1
e1 <- function(c) return((c[1]-100)^2/50^2 + (c[2]-300)^2/100^2 < 1)
# 这是矩形的四个角座标
r1 <- matrix(c(80,80,120,120,280,320,280,320),4)
# [,1] [,2]
# [1,] 80 280
# [2,] 80 320
# [3,] 120 280
# [4,] 120 320
apply(r1, 1, e1)
# [1] TRUE TRUE TRUE TRUE
这里要看你的“重合”是指四个角都在内部,或只有一个在就算
作者: girl5566 (5566520)   2015-12-09 22:36:00
感谢 您的方法很有用

Links booklink

Contact Us: admin [ a t ] ucptt.com