加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 使用Postgis绘制相机范围

发布时间:2020-12-13 18:10:57 所属栏目:百科 来源:网络整理
导读:我正在研究一些相机数据.我有一些点,包括方位角,角度,距离,当然还有坐标字段属性.在 postgresql postgis中我想用函数绘制这样的形状. 我怎么画这个粉红色的范围形状? 起初我应该绘制360度圆然后从我的形状中提
我正在研究一些相机数据.我有一些点,包括方位角,角度,距离,当然还有坐标字段属性.在 postgresql postgis中我想用函数绘制这样的形状.

我怎么画这个粉红色的范围形状?
起初我应该绘制360度圆然后从我的形状中提取…我不知道怎么做?

我将使用您的半径距离围绕点(x,y) create a circle,然后使用下面的信息创建一个高度大于半径的三角形.

然后使用这两个多边形在两个几何之间执行ST_Intersection.

注意:此方法仅在角度小于180度时有效.

请注意,如果延伸外边缘并与弧的中点成90度角,则会有一个角度和一个相邻边.现在你可以SOH CAH TOA!

获得积分B和C.

设点A =(x,y)

要获得最高点:

点B =(x半径,y(r * tan(角度)))

得到底线:

点C =(x半径,y – (r * tan(角度)))

将三角形旋转到azimouth

现在你有了三角形,你需要将它旋转到你的方位角,枢轴点为A.这意味着当你进行旋转时你需要在原点处得到点A.轮换是最棘手的部分.它一直用于计算机图形学. (实际上,如果你知道OpenGL,你可以让它为你做旋转.)

注意:此方法逆时针旋转原点周围的角度(θ).您可能需要相应地调整方位角.

第一步:translate您的三角形,以便A(您的原始x,y)为0,0.无论你添加/减去x和y,对其他两点都做同样的事情.

(你需要翻译它,因为你需要点A在原点)

第二步:然后使用旋转矩阵旋转点B和C.更多信息here,但我会给你公式:

Your new point is (x',y')

对B点和C点执行此操作.

第三步:通过添加或减去将它们转换回原始位置.如果您上次减去x,请在此时添加.

最后,使用点{A,B,C}来创建三角形.

然后做一个ST_Intersection(geom_circle,geom_triangle);

因为这需要大量计算,所以最好编写一个执行所有这些计算的程序,然后填充表格.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读