在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/ HTML問答
陌璃 回答

(1) 要使用正確的對(duì)象類型

這里不能用Mesh,因?yàn)檫@里geometry的點(diǎn)數(shù)不滿足Mesh的規(guī)范,圖形是渲染不出來的,Mesh是由小三角面構(gòu)成,頂點(diǎn)數(shù)必須是3的倍數(shù)。所以,這里應(yīng)該用THREE.Line

將:

allLineMesh=new THREE.Mesh(allLine,new THREE.MeshBasicMaterial({color:0x000000,side:THREE.DoubleSide}))

改成:

allLineMesh=new THREE.Line(allLine,new THREE.MeshBasicMaterial({color:0x000000,side:THREE.DoubleSide}))

你會(huì)發(fā)現(xiàn)有圖像出來了,但只有一條直線,下面講這個(gè)問題。

(2)對(duì)對(duì)象使用變換之后,要手動(dòng)更新對(duì)象變換矩陣

在three.js中,考慮到性能,框架在做變換的時(shí)候不會(huì)自動(dòng)更新變換矩陣(其實(shí)還有很多東西都不會(huì)自動(dòng)更新,可以參考文檔里面定義的xxxNeedsUpdate,computeXXX,updateXXX之類的屬性),所以,如果你對(duì)對(duì)象做了變換之后要用到對(duì)象的矩陣,那么你首先需要更新對(duì)象的變換矩陣,可以使用Object3D.updateMatrix()方法。

所以,像下面這種寫法是不能看到geometry有任何改變的:

var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } ) );
line.position.z = ( i * 50 ) - 500; // 這里做了變換,但是沒更新變換矩陣
allLine.merge(line.geometry,line.matrix)//使用原始的變換矩陣,于是對(duì)象的變換并沒有應(yīng)用到geometry上

可以改成:

var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } ) );
line.position.z = ( i * 50 ) - 500;
line.updateMatrix(); // 加了這句
allLine.merge(line.geometry,line.matrix)

現(xiàn)在可以看到圖像了,但是你會(huì)發(fā)現(xiàn)圖像很奇怪:

圖片描述

這是什么鬼?為什么有那么多交叉線?

其實(shí)這和Line類型的繪制策略有關(guān),Line是把vertices的點(diǎn)一個(gè)一個(gè)連起來的,比如vertices里有四個(gè)點(diǎn)[A,B,C,D],那么Line在畫的時(shí)候,就是A-->B-->C--D,而你想的可能是A-->B,C-->D,簡(jiǎn)單驗(yàn)證一下,使用下面的函數(shù):

            function initObject(){
                var material = new THREE.LineBasicMaterial({
                    color: 0x0000ff
                });
                var geometry = new THREE.Geometry();
                geometry.vertices.push(
                    new THREE.Vector3( -500, 0, 0 ),
                    new THREE.Vector3( 500, 0, 0 ),
                    new THREE.Vector3( 0, 0, -500 ),
                    new THREE.Vector3( 0, 0, 500 )
                );
                var line = new THREE.Line( geometry, material );
                scene.add( line );
            }

運(yùn)行的結(jié)果如下圖:

圖片描述

確實(shí)是A-->B-->C--D這樣連的

(3)利用吸附算法使中間連線吸附到邊緣

對(duì)于Line的A-->B-->C--D這種畫法我們是沒辦法改變,但是,在這個(gè)例子中,我們可以人為的將B-->C邊吸附到邊緣。比如有個(gè)上面四個(gè)點(diǎn)的坐標(biāo)如下:

A:[1,0,0]
B:[-1,0,0]
C:[0,0,1]
D:[0,0,-1]

我們可以人為的插一個(gè)點(diǎn)E:
A:[1,0,0]
B:[-1,0,0]
E:[-1,0,1]
C:[0,0,1]
D:[0,0,-1]
使得B-->C由斜線變成了沿著邊緣走的斜線:

圖片描述

吸附算法如下:

 // 吸附算法
            function adsorb(geometry,compares){
                var vertices =  geometry.vertices;
                var cdt1 = compares[0];
                var cdt2 = compares[1];
                for (var i = 0 ; i < vertices.length-1; i++) {
                    var vertice = vertices[i];
                    var nextVertice = vertices[i+1];
                    if(Math.round(vertice[cdt1]) !== Math.round(nextVertice[cdt1])
                        && Math.round(vertice[cdt2]) !== Math.round(nextVertice[cdt2])){ // 差異超過兩個(gè)維度
                        var vector = new THREE.Vector3();
                        vector[cdt1] = vertice[cdt1];
                        vector[cdt2] = nextVertice[cdt2];
                        vertices.splice(i+1, 0,vector); // 插入一個(gè)點(diǎn)
                        i++;
                    }
                }
                geometry.vertices = vertices;
            }

將吸附算法加入到創(chuàng)建過程中:

 function initObject() {
                var geometry = new THREE.Geometry();
                var allLine=new THREE.Geometry();
                geometry.vertices.push( new THREE.Vector3( - 500, 0, 0 ) );
                geometry.vertices.push( new THREE.Vector3( 500, 0, 0 ) );
                for ( var i = 0; i <= 20; i ++ ) {
                    var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } ) );
                    line.position.z = ( i * 50 ) - 500;
                    line.updateMatrix();
                    allLine.merge(line.geometry,line.matrix)
                    var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } ) );
                    line.position.x = ( i * 50 ) - 500;
                    line.rotation.y = 90 * Math.PI / 180;
                    line.updateMatrix();
                    allLine.merge(line.geometry,line.matrix)
                }
                adsorb(allLine,["x","z"]);  // 添加這一行
                allLine.verticesNeedUpdate = true;
                allLineMesh=new THREE.Line(allLine,new THREE.MeshBasicMaterial({color:0x000000,side:THREE.DoubleSide}))
                scene.add( allLineMesh );
            }

這樣看起來就正確了

紓惘 回答

iview設(shè)計(jì)之初就不是響應(yīng)式的,它的一些組件(如日期組件)在移動(dòng)端根本不好用,為什么要用iview做pc和移動(dòng)端適配。如果僅僅只是類似bootstrap柵格系統(tǒng),它的Grid 柵格 可解決問題。

只愛你 回答

可以參考下我開源的 ionic 項(xiàng)目 HW-basic,實(shí)現(xiàn)了屏幕適配等開發(fā)常用的功能,適配的代碼在 app.scss和 valiables.scss 中,無需引入其他外部文件。

青瓷 回答

你不用fillrect 用rect再fill 一樣被覆蓋,canvas是基于狀態(tài)的,你用fillrect 內(nèi)部會(huì)處理的,讓當(dāng)前狀態(tài)結(jié)束

浪婳 回答

1.因?yàn)闉g覽器不支持tcp協(xié)議啊,只有通過http或者Websocket來傳輸,和tcp比起來效率肯定要低,因?yàn)榇握?qǐng)求和響應(yīng)都要帶上很多http頭,所以http協(xié)議多用于web服務(wù)器,不過基于http協(xié)議開發(fā)起來比較簡(jiǎn)單,現(xiàn)在很多rpc框架都支持http協(xié)議。
2.tcp協(xié)議的話可以定制的更高效,但是開發(fā)起來稍微復(fù)雜,要兼容各種開發(fā)語言的話需要各自實(shí)現(xiàn)一套客戶端。

不知道你知道這個(gè)網(wǎng)站是干啥的,但是NGINX在做轉(zhuǎn)發(fā)的時(shí)候有/和沒有效果是不一樣的

萌小萌 回答

Alias指令是將url映射到本地的文件系統(tǒng),這樣做的好處是不用將文檔保存在documenRoot目錄下
針對(duì)圖中的情況,訪問路徑比如是 www.example.com/static/a.jpg ,其實(shí)是訪問 /var/www/.../static/a.jpg

純妹 回答

echart沒有動(dòng)態(tài)自適應(yīng)的,要自己動(dòng)態(tài)設(shè)置

喵小咪 回答

有可能你的this.size里就包含了一個(gè)回車

如果使用模板字符串表示多行字符串,所有的空格和縮進(jìn)都會(huì)被保留在輸出之中。

console.log(this.size.length) 看看先

可以看下面的代碼,就可以輸出和樓主一樣的效果

var style={}
var vsize=`18
`
if (vsize) {
    style['font-size'] = `${vsize}px`;
}

console.log(style)
心癌 回答

3

var obj = new Object();
var arr = [1,2,3,4,5];
for (var x in arr){

obj[x] = x;

}

初念 回答

"navigationStyle": "custom"

然后通過 wxss wxml 實(shí)現(xiàn)自定義

版本要求: 微信版本在6.6.0以上,以及公共庫版本在1.9.1以上。

小眼睛 回答

可以試試這個(gè)方法:

var result= arr.reduce((item1,item2)=>Object.assign(item1,item2));
魚梓 回答

你說的應(yīng)該是開發(fā)模式下的預(yù)覽。這個(gè)缺少webpack配置,需要自己配.

來守候 回答

找到了解決方案,網(wǎng)上下載了cJSON.c和cJSON.h文件,里面有解析和生成JSON的接口函數(shù)

她愚我 回答

mysqljs文檔
配置連接的時(shí)候有個(gè)timezone選項(xiàng)設(shè)置時(shí)區(qū)。
或者配置dateStrings選項(xiàng)為true,不轉(zhuǎn)換為Date只返回字符串。

菊外人 回答

建議插入<pre></pre>標(biāo)簽

情皺 回答

設(shè)置 autoplay="autoplay , 默認(rèn)樣式打開 F12 看看