我工作的一个修改vis.js的Graph3d做填充的线路图,就像这样:查找“视图”坐标在vis.js
困难的部分 - 意料之中 - 正在制定多边形的渲染顺序。我想我可以通过检查从观众到给定线B光线是否越过A线做到这一点:
在本例中,A线是“在路上” B线,我们应先画线A.我将使用How do you detect where two line segments intersect?中的一段代码来检查这些行是否交叉。
但是,我还没有想到如何找到用户视图的位置。我有种以为这将是相机对象,所以写的调试代码一点点绘制在相机上图:
var camera = this._convert3Dto2D(this.camera.getCameraLocation());
ctx.strokeStyle = Math.random()>0.5 ? 'ff0000' : '00ff00';
ctx.beginPath();
ctx.moveTo(camera.x, camera.y);
ctx.lineTo(camera.x, camera.y+5);
ctx.stroke();
事实上,通过这种测定照相机坐标始终为0 ,图上的0,0(这将在上面的屏幕抓图的最右上角)。我认为,我需要的是屏幕的底部。
我该如何找到它?还是有更好的方法来实现我想要做的事情?
谢谢!由于这个问题,我最终使用了three.js作为图表而不是vis.js,但希望对别人有用。 (如果您有兴趣,可以在http://cycle.travel/map上看到完成的图形;规划路线,单击高程图标,然后单击“3D”。) –
不是问题!我很高兴你找到了适合你的东西。 我认为这种图类型是一个很酷的想法;它现在在我的TODO上。 –