创建一个圆,将其划分为圆形扇区并使用 R 测试点所在的位置
create a circle, divide it into circular sectors and test where a point is located with R
我需要你的帮助来创建一个代码,使我能够在圆形网格中投影点,分为段和级别。我请求你的帮助,因为我知道这个社区到处都是优秀的人。
我想做的是
在笛卡尔平面中创建一个圆;它的中心点坐标必须是x=300和y=300,它的半径r=300;
构造完圆后,我需要把它分成几部分。我需要构建一个类似于您在下面看到的网格,但有 16 个线段(有 16 个标签,例如 sector_1 到 sector_16)和 5 个级别或同心圆(有 5 个标签,例如 level_1 到 level_4 + level_0 为中心圆)。所以我需要构造5个同心圆并将第二个,第三个,第四个和第五个分成16个部分。我的目标是获得点可能落在的一系列区域;
- 构建此网格后,我需要在其中投射一些我拥有的点以及其中的 x 和 y 坐标(例如 point_1 -> x=286;y=342);
R 应该 return 告诉我该点位于哪个段和哪个级别。
请问,我如何开发允许我执行此操作的代码?
任何帮助都是非常受欢迎和有帮助的。
非常感谢您的关注。
你可以这样绘制网格:
t <- seq(0, 2 * pi, length = 1000)
plot(300, 300, xlim = c(0, 600), ylim = c(0, 600))
for(i in 0:4) {
lines((300 - (i * 60)) * sin(t) + 300, (300 - (i * 60)) * cos(t) + 300)
}
for(i in 0:7) {
lines(300 * sin(c(i * pi /8, i * pi / 8 + pi)) + 300,
300 * cos(c(i * pi /8, i * pi / 8 + pi)) + 300)
}
要计算该点落在哪一段,您计算到圆心的距离,并找到超过 60 秒的整数
sqrt((x - 300)^2 + (y - 300)^2) %/% 60
要知道它属于哪一段,需要找到它的极角,可以通过:
atan2((y - 300), (x - 300))
你可以通过找到它超过的 pi/8
的数量来确定它代表哪个段:
atan2((y - 300), (x - 300)) %/% pi/8
我需要你的帮助来创建一个代码,使我能够在圆形网格中投影点,分为段和级别。我请求你的帮助,因为我知道这个社区到处都是优秀的人。
我想做的是
在笛卡尔平面中创建一个圆;它的中心点坐标必须是x=300和y=300,它的半径r=300;
构造完圆后,我需要把它分成几部分。我需要构建一个类似于您在下面看到的网格,但有 16 个线段(有 16 个标签,例如 sector_1 到 sector_16)和 5 个级别或同心圆(有 5 个标签,例如 level_1 到 level_4 + level_0 为中心圆)。所以我需要构造5个同心圆并将第二个,第三个,第四个和第五个分成16个部分。我的目标是获得点可能落在的一系列区域;
- 构建此网格后,我需要在其中投射一些我拥有的点以及其中的 x 和 y 坐标(例如 point_1 -> x=286;y=342);
R 应该 return 告诉我该点位于哪个段和哪个级别。
请问,我如何开发允许我执行此操作的代码?
任何帮助都是非常受欢迎和有帮助的。
非常感谢您的关注。
你可以这样绘制网格:
t <- seq(0, 2 * pi, length = 1000)
plot(300, 300, xlim = c(0, 600), ylim = c(0, 600))
for(i in 0:4) {
lines((300 - (i * 60)) * sin(t) + 300, (300 - (i * 60)) * cos(t) + 300)
}
for(i in 0:7) {
lines(300 * sin(c(i * pi /8, i * pi / 8 + pi)) + 300,
300 * cos(c(i * pi /8, i * pi / 8 + pi)) + 300)
}
要计算该点落在哪一段,您计算到圆心的距离,并找到超过 60 秒的整数
sqrt((x - 300)^2 + (y - 300)^2) %/% 60
要知道它属于哪一段,需要找到它的极角,可以通过:
atan2((y - 300), (x - 300))
你可以通过找到它超过的 pi/8
的数量来确定它代表哪个段:
atan2((y - 300), (x - 300)) %/% pi/8