我工作的一個修改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上。 –