兩個(gè)球的速度差是矢量DV,相對(duì)位移矢量是DS,那么碰撞的條件就是兩個(gè)球的距離足夠小,并且DV和DS的內(nèi)積大于0(就是趨向接近的位置相對(duì)運(yùn)動(dòng))

目前累計(jì)服務(wù)客戶數(shù)千家,積累了豐富的產(chǎn)品開(kāi)發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹(shù)立企業(yè)形象,為客戶提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)公司始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺(jué)傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
!DOCTYPE html
html
head
script type="text/javascript" src="libs/three.js"/script
script type="text/javascript" src="libs/OBJLoader.js"/script
script type="text/javascript"
var scene = null;
var camera = null;
var renderer = null;
var mesh = null;
var id = null;
function init() {
renderer = new THREE.WebGLRenderer({//渲染器
canvas: document.getElementById('mainCanvas')//畫布
});
renderer.setClearColor(0x000000);//畫布顏色
scene = new THREE.Scene();//創(chuàng)建場(chǎng)景
camera = new THREE.OrthographicCamera(-5, 5, 3.75, -3.75, 0.1, 100);//正交投影照相機(jī)
camera.position.set(15, 25, 25);//相機(jī)位置
camera.lookAt(new THREE.Vector3(0, 2, 0));//lookAt()設(shè)置相機(jī)所看的位置
scene.add(camera);//把相機(jī)添加到場(chǎng)景中
var loader = new THREE.OBJLoader();//在init函數(shù)中,創(chuàng)建loader變量,用于導(dǎo)入模型
loader.load('libs/port.obj', function(obj) {//第一個(gè)表示模型路徑,第二個(gè)表示完成導(dǎo)入后的回調(diào)函數(shù),一般我們需要在這個(gè)回調(diào)函數(shù)中將導(dǎo)入的模型添加到場(chǎng)景中
obj.traverse(function(child) {
if (child instanceof THREE.Mesh) {
child.material.side = THREE.DoubleSide;
}
});
mesh = obj;//儲(chǔ)存到全局變量中
scene.add(obj);//將導(dǎo)入的模型添加到場(chǎng)景中
});
var light = new THREE.DirectionalLight(0xffffff);//光源顏色
light.position.set(20, 10, 5);//光源位置
scene.add(light);//光源添加到場(chǎng)景中
id = setInterval(draw, 20);//每隔20s重繪一次
}
function draw() {//們?cè)谥乩L函數(shù)中讓茶壺旋轉(zhuǎn):
renderer.render(scene, camera);//調(diào)用WebGLRenderer的render函數(shù)刷新場(chǎng)景
mesh.rotation.y += 0.01;//添加動(dòng)畫
if (mesh.rotation.y Math.PI * 2) {
mesh.rotation.y -= Math.PI * 2;
}
}
/script
/head
body onload="init()"
canvas id="mainCanvas" width="800px" height="600px" /canvas
/body
/html
如果你是獲取可視區(qū)域的寬度是
document.documentElement.clientWidth || document.body.clientWidth (兼容寫法)
如何你是獲取div的寬度應(yīng)該是
oDiv.offsetWidth
你這個(gè)oDiv.documentElement.clientWidth表述是錯(cuò)誤的
設(shè)矩形的左上頂點(diǎn)是(x, y), 寬w, 高h(yuǎn), 那么只要存在以下情況一定不相交, 否則是相交的
(x1 + w1) x2 || (x2 + w2) x1 || (y1 + h1) y2 || (y2 + h2) y1
使用Raycaster進(jìn)行碰撞檢測(cè)
用Raycaster來(lái)檢測(cè)碰撞的原理很簡(jiǎn)單,我們需要以物體的中心為起點(diǎn),向各個(gè)頂點(diǎn)(vertices)發(fā)出射線,然后檢查射線是否與其它的物體相交。如果出現(xiàn)了相交的情況,檢查最近的一個(gè)交點(diǎn)與射線起點(diǎn)間的距離,如果這個(gè)距離比射線起點(diǎn)至物體頂點(diǎn)間的距離要小,則說(shuō)明發(fā)生了碰撞。
這個(gè)方法有一個(gè) 缺點(diǎn) ,當(dāng)物體的中心在另一個(gè)物體內(nèi)部時(shí),是不能夠檢測(cè)到碰撞的。而且當(dāng)兩個(gè)物體能夠互相穿過(guò),且有較大部分重合時(shí),檢測(cè)效果也不理想。
還有需要 注意 的一點(diǎn)是:在Three.js中創(chuàng)建物體時(shí),它的頂點(diǎn)(veritces)數(shù)目是與它的分段數(shù)目相關(guān)的,分段越多,頂點(diǎn)數(shù)目越多。為了檢測(cè)過(guò)程中的準(zhǔn)確度考慮,需要適當(dāng)增加物體的分段。
當(dāng)前標(biāo)題:碰撞javascript,碰撞的拼音
本文來(lái)源:http://chinadenli.net/article35/dseojsi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站營(yíng)銷、網(wǎng)站策劃、網(wǎng)站制作、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)