Google Earth/Processing.js-使用3D投影实现反剔除

Google Earth/Processing.js-使用3D投影实现反剔除,3d,processing,projection,google-earth-plugin,culling,3d,Processing,Projection,Google Earth Plugin,Culling,我目前正在做一个项目,希望通过谷歌地球API将真实世界的数据映射到谷歌地球上。be的首席执行官们要求提供比插件所能提供的更高要求的视觉效果(即,随着时间的推移,具有不同不透明填充的奇特线条、图像和形状会被动画化),因此我们决定使用Processing.js语言来处理图形方面的问题 目前,我已经在后台建立了GE插件。Processing.js草图位于画布元素的正上方,该元素具有CSS规范:pointer events:none(即,这允许鼠标与插件交互,而写入处理草图的任何内容都显示在顶部!) 我

我目前正在做一个项目,希望通过谷歌地球API将真实世界的数据映射到谷歌地球上。be的首席执行官们要求提供比插件所能提供的更高要求的视觉效果(即,随着时间的推移,具有不同不透明填充的奇特线条、图像和形状会被动画化),因此我们决定使用Processing.js语言来处理图形方面的问题

目前,我已经在后台建立了GE插件。Processing.js草图位于画布元素的正上方,该元素具有CSS规范:pointer events:none(即,这允许鼠标与插件交互,而写入处理草图的任何内容都显示在顶部!)

我的问题是关于3D投影。当图形显示在GE上时,该插件能够处理背景中所有令人讨厌的矩阵变换(这意味着,在GE上,如果你将一个点放置在lat:90,lon:0,无论你如何在地球上移动,该点都将保持在北极上方)。在处理覆盖中,我尝试模拟这个

有。很困难

Google Earth函数是我目前用来将3D lat/lon点投影到2D坐标的函数(然后使用Processing在屏幕上的返回点绘制一个椭圆)。您可以在下面看到:

你会注意到红色和黄色的椭圆实际上是地球后面的点。这是我的问题,我迫切需要一些建议/帮助。使用GE插件实现反向剔除的最有效方法是什么,这样Processing.js在地球的“背面”旅行时就不会画椭圆。对我来说,这里的大脑负担是,我仍然想保持在X、Y和Z方向绕地球旋转的能力(即不限制视口)


谢谢堆栈溢出

< P>一个不需要你做任何3D数学的简单方法是在点周围创建一个小三角形-想象它代表地板上的一个实际三角形,这个点位于项目中间的所有三个点,使用谷歌EngultEngult> CudioProject < /Cult>方法,然后计算出二维三角形的签名区域。如果面积为正,则绘制,如果面积为负,则不绘制

因此,例如,对于纬度和经度
(n,m)
,项目
(n-0.01,m)
(n,m+0.01)
(n+0.01,m)
获得二维位置
(a,q)
(b,r)
(c,s)

然后测试
(b-a)*(s-q)-(c-a)*(r-q)
-这实际上是三角形有符号面积的两倍,但加倍不会影响符号。这个公式是众所周知的;给你


我是临时打字的,所以我可能把我的用手习惯搞混了。如果是这样,只需翻转测试:抽签为阴性,不抽签为阳性。

Tommy!那很有魅力!如果我能投你10票,我会——谢谢你;)