草庐IT

凸多边形

全部标签

javascript - 如何简化复杂的多边形?

最近我一直在思考如何将复杂多边形转换为非复杂多边形。这是怎么做到的?这是我想做的事情:完成后我将以JavaScript结尾,但任何形式的解决方案都可以(语言、算法或简单的英语)。 最佳答案 我会使用与手动绘制多边形时相同的启发式方法(这可能不是计算该多边形的最有效的数学方法,但可能是最容易理解/实现的方法)。从一点开始找到我当前点和我试图到达的点之间的所有交点如果不存在则绘制到下一个点如果有,则绘制到那里,然后将下一个点设置为从那里开始的下一个点如果您还没有回到起点,则转到2。Hereisanexamplejsfiddle上的实现。

javascript - 将 d3 力定向图的节点封闭在圆形、多边形或云中

我已经构建了一个带有分组节点的d3力定向图。我想将这些组封闭在云状结构中。我该怎么做?图表的JsFiddle链接:http://jsfiddle.net/Cfq9J/5/我的结果应该类似于这张图片: 最佳答案 这是一个棘手的问题,我不完全确定您能否以一种表演的方式来解决这个问题。你可以在这里看到我的静态实现:http://jsfiddle.net/nrabinowitz/yPfJH/还有这里的动态实现,虽然它很慢而且不稳定:http://jsfiddle.net/nrabinowitz/9a7yy/实现注意事项:这是通过用其组中的所

javascript - leaflet.draw 垃圾按钮删除所有多边形并保存

使用javascript,如何更改leaflet.draw“垃圾桶”按钮以删除所有已绘制的多边形并自动保存。下面是我已经实现的代码,但它是一个完整的hack。它删除了事件多边形,但是在我删除一个对象后,当我单击“垃圾桶”图标时开始在控制台中出现错误,例如NotFoundError:Nodewasnotfound和TypeError:this._deletedLayers为空map.on('draw:editstart',function(e){if(e.handler=='remove'&&typeofdrawnItem!='undefined'&&drawnItem!==null){

javascript - 谷歌地图 v3 API 鼠标悬停与多边形。不工作

我正在尝试让鼠标悬停在googlemapsapiv3中处理多边形。我试过这篇文章中提供的答案:googlemapsv3APImouseoverwithpolygons?这个答案应该有效,但不适合我。谁能看出我辐条上的棍子?这是我的代码:html{height:100%}body{height:100%;margin:0px;padding:0px}#map_canvas{height:100%}GoogleMapsfunctioninitialize(){varmyLatlng=newgoogle.maps.LatLng(28,-81);varmyOptions={zoom:6,cen

javascript - THREE.js 光线转换对单个> 500k 多边形(面)对象非常慢,线与地球相交

在我的项目中,我有一个玩家在地球上行走。地球不仅仅是一个球体,它还有山脉和山谷,所以我需要改变玩家的z位置。为此,我从玩家的位置向单个物体(地球)转换一条光线,我得到它们相交的点并相应地改变玩家的位置。我只在玩家移动时进行光线转换,而不是在每一帧上。对于一个复杂的对象,它需要永远。具有~1m多边形(面)(1024x512分段球体)的对象需要~200ms。光线转换是否针对每张脸?是否有一种传统的快速方法可以在三中实现这一点,比如一些加速结构(八叉树?bvh?——老实说,从我的谷歌搜索中我似乎没有发现三中包含这样的东西)或其他一些想法-开箱即用(无光线转换)方法?vardir=g_Game

javascript - Openlayers 在 OpenStreetMaps 图层上圈出多边形

我正在尝试创建一个具有定义中心的圆并在其上放置一个图标标记。如果我使用图像而不是OpenLayers.Geometry.Polygon.createRegularPolygon,代码就可以工作。我无法解决它。在这里你可以找到我的代码:OpenLayersExamplemap=newOpenLayers.Map("mapdiv");map.addLayer(newOpenLayers.Layer.OSM());epsg4326=newOpenLayers.Projection("EPSG:4326");//WGS1984projectionprojectTo=map.getProject

javascript - 无法删除 ui-gmap-google-map 中的选定多边形

我可以使用GoogleDraw管理器绘制多个多边形。现在我无法从多个多边形中选择特定的多边形并删除和编辑它。编辑或删除后也无法获取新数组。我的demo.js代码如下:$scope.map={center:{latitude:19.997454,longitude:73.789803},zoom:10,//mapTypeId:google.maps.MapTypeId.ROADMAP,//radius:15000,stroke:{color:'#08B21F',weight:2,opacity:1},fill:{color:'#08B21F',opacity:0.5},geodesic:

svg - 使用 SVG 和 JavaScript 指向多边形检查?

我有一张map,我通过将不同颜色的区域转换为路径将光栅图形转换为SVG文件。我知道如何在给定边数组的情况下进行基本的多边形点检查,但是svg:path元素代表多个多边形以及mask(考虑到海洋等)和通过解析d属性来提取该信息似乎相当笨拙。是否有一个JS库可以让我简化该检查?我基本上想创建随机点,然后检查它们是在陆地上(即多边形内部)还是水上(即外部)。由于SVG元素似乎允许鼠标事件处理,我认为这应该不是什么大问题(即,如果您可以判断鼠标指针是否在元素之上,那么您已经解决了问题-多边形问题)。编辑:让事情有点复杂,我应该提到svg:path元素似乎是基于曲线而不是直线,所以只需解析d属性

javascript - 根据纬度和经度确定哪个是多边形

我有一张使用leaflet.js绘制的map。如果我将经度和纬度值作为输入我可以识别多边形吗?我可以为此获取客户端脚本吗? 最佳答案 得到的答案如下://这是基于'pointinpolygonalgorithm'functiongetPoint(){floatx=-89.82421875;//xandyrepresentsthelatandlngvaluesfloaty=40.18307014852533;vara=boundaries;//thecoordinatesusedtodrawthemapfor(i=0;i=pointY

javascript - 如何通过动画更改 Snap.svg 中多边形的点?

我正在尝试实现一个带有特定多边形的按钮,按下该按钮会将多边形更改为其他内容。例如,按钮上的播放图标变为停止图标。理想情况下,该图标应该是一个多边形,其中三个点描绘了游戏符号。动画后它变成一个四点多边形(一个正方形)描绘停止符号。我试过这样做:varpaper=Snap('svg');vartpts=[100,100,100,130,120,115];varsqpts=[100,100,100,130,130,130,130,100];vartri=paper.polygon(sqpts);tri.attr({id:"tri",fill:"#555555"});sqrFunc=funct