8

我正在尝试使用中心和半径的坐标在MySQL中创建圆形几何。我到处搜索......我在网站上的 MySQL 文档中能找到的都是多边形。可能是我找错地方了。任何人都可以帮助我使用适当的 SQL 来帮助我创建一个将该圆形几何图形存储为表中的列之一的表吗?另外,我什至不确定在 MySQL 中是否有办法这样做?..我使用的版本是 MySQL 5.6。

提前致谢。

4

2 回答 2

9

从 MySQL v5.6.1 开始,您可以使用:Buffer(g, d)

返回一个几何图形,该几何图形表示与几何值的距离g小于或等于距离 的所有点d

显然,在您的情况下g应该是圆心的点并且d应该是它的半径。

于 2013-06-10T20:57:09.113 回答
2

有两个部分: A.对于给定的测试点,您必须检查它们与给定圆的关系。B.您想在给定圆的圆周上生成点。

A.是的,首先取给定点(测试点)和圆心点之间的距离。这两个点都在纬度和经度中定义。两点 (x1,y1) 和 (x2,y2) 之间的距离公式为距离 d= sqrt[ (x2-x1)^2 + (y2-y1)^2 ]。现在,

  1. 如果这个距离小于圆的半径,那么你的测试点就在你的圆内。
  2. 如果此距离大于半径,则测试点在圆外。
  3. 如果这个计算的距离等于圆的半径,那么这个测试点就在你的圆上,即在你的圆的圆周上。

B. 在一个圆中,总角度 theta 是 360 度或 2*Pi 的弧度。对于给定的圆,其中心为 (x1, y1),半径为 r。

x = x1 + r * cos(θ)

y = y1 + r * sin(theta)

其中,theta 从零运行到 2*Pi,Pi 为 3.1415。

取决于你怎么做。示例:如果您想要圆上的 10 个点,则增量 =(2*Pi-Zero)/10。

拳头theta为零,然后theta为零+增量,然后theta为零+增量+增量,即2*增量,然后零+3*增量,依此类推。除非你得到等于 2*Pi 的 theta。

对于所有上述 thetas 计算 x 和 y。这些所有 x 和 y 坐标点都在圆的圆周上。

于 2016-11-22T01:04:24.637 回答