Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 大陆一级毛片免费视频观看 ,91在线视频在线,一级毛片一级毛片

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          純CSS也可以實(shí)現(xiàn)邊界碰撞檢測(cè)?#css

          個(gè)視頻來看一個(gè)小球碰撞邊界的運(yùn)動(dòng)效果。可以看到有一個(gè)小球在隨機(jī)運(yùn)動(dòng),然后當(dāng)碰到邊界它就會(huì)反彈出去,似乎可以用來做碰撞邊界的檢測(cè)。

          想一下這個(gè)例子可不可以只用CSS來做?其實(shí)是可以的,但是這里它并不算是邊界檢測(cè),又或者說它只能檢測(cè)到整個(gè)窗口的邊界,然后反彈。如果是有其它元素,想檢測(cè)和其它元素有沒有發(fā)生碰撞,用CSS就很難實(shí)現(xiàn)了。

          先來看一下這個(gè)demo,現(xiàn)在非常簡(jiǎn)單,就寫了一個(gè)div,然后給它一些基本的樣式,用來模擬這個(gè)小球。

          接下來就要想一下,怎么樣可以讓這個(gè)小球動(dòng)起來?無非就是給它添加一個(gè)動(dòng)畫對(duì)吧?這個(gè)動(dòng)畫應(yīng)該控制哪些屬性發(fā)生變化,可以讓這個(gè)小球動(dòng)起來呢?是不是控制這兩個(gè)屬性?

          先來控制水平方向的運(yùn)動(dòng),也就是left,因?yàn)槌跏紶顟B(tài)就是讓它從0開始。CSS上面設(shè)置的也是0,所以from可以省略不寫,只寫吐就行了。結(jié)束的狀態(tài)是讓小球運(yùn)動(dòng)到邊界。這里可以用一個(gè)計(jì)算的函數(shù),水平方向用整個(gè)視口的寬度,再減去小球自身的寬度,再把這個(gè)動(dòng)畫給它綁定到小球上面,這樣小球它就可以動(dòng)起來了。

          但是它只是往一個(gè)方向來動(dòng)并沒有反彈的效果,要讓小球反彈的也很簡(jiǎn)單,給它加一個(gè)alternate,當(dāng)動(dòng)畫執(zhí)行到最后狀態(tài)的時(shí)候,再反過來執(zhí)行就可以了??匆幌拢∏蜻\(yùn)動(dòng)到邊界它就反彈了,但是現(xiàn)在只是水平方向的運(yùn)動(dòng),還要加上垂直方向的運(yùn)動(dòng)。

          垂直方向和水平方向原理是一樣的,給它復(fù)制一下,再改一下動(dòng)畫的名稱,left改成top,視口的寬度就改成視口的高度,再把這個(gè)動(dòng)畫綁定上去。這里名稱再改一下,看一下效果?,F(xiàn)在確實(shí)水平和垂直方向同時(shí)在運(yùn)動(dòng)了,但是它只是往對(duì)角線運(yùn)動(dòng),沒有一種隨機(jī)彈跳的效果。

          怎么樣可以讓這個(gè)運(yùn)動(dòng)不要那么規(guī)律?不要只是往對(duì)角線來運(yùn)動(dòng),看起來有一些隨機(jī)性。這里也很簡(jiǎn)單,只要讓這兩個(gè)動(dòng)畫完成的時(shí)間稍微錯(cuò)開一點(diǎn)就可以了。

          →比方水平方向的給它3.6秒,垂直方向就2.3秒,看一下最終的效果?,F(xiàn)在的運(yùn)動(dòng)就不是只往對(duì)角線來運(yùn)動(dòng)了,看起來有一定的隨機(jī)性,然后運(yùn)動(dòng)到邊界就可以回彈過來。

          這個(gè)視頻就到這里,感謝大家的收看。

          代碼

          <!DOCTYPE html>
          <html lang="zh_CN">
          <head>
           <meta charset="UTF-8">
           <title>彈球</title>
           <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
          </head>
          <body>
          <canvas id="canvas" width="400" height="400"></canvas>
          <script>
           // 全局canvas
           let canvas = document.getElementById("canvas");
           let context = canvas.getContext("2d");
           // 彈球?qū)ο? class Ball{
           x = 100;
           y = 40;
           xSpeed = -2;
           ySpeed = -2;
           constructor(){};
           getX(){
           return this.x;
           }
           getY(){
           return this.y;
           }
           setX(x){
           this.x = x;
           }
           setY(y){
           this.y = y;
           }
           getXSpeed(){
           return this.xSpeed;
           }
           setXSpeed(xSpeed){
           this.xSpeed = xSpeed;
           }
           getYSpeed(){
           return this.ySpeed;
           }
           setYSpeed(ySpeed){
           this.ySpeed = ySpeed;
           }
           // 繪制小球的方法
           draw = () => {
           context.beginPath();
           context.arc(this.x, this.y, 10, 0, Math.PI * 2, false);
           context.strokeRect(0, 0, 400, 400);
           context.fill();
           };
           // 移動(dòng)操作
           move = () => {
           this.x = this.x + this.xSpeed;
           this.y = this.y + this.ySpeed;
           };
           // 邊緣檢測(cè),碰撞檢測(cè)
           checkCanvas = (panel) => {
           // 左右
           if(this.x < 5 || this.x > 400 - 5){
           this.xSpeed = -this.xSpeed;
           }
           // 上方
           if(this.y < 0){
           this.ySpeed = -this.ySpeed;
           }
           // 下方
           // 碰到擋板
           if(this.y > 390 - 10){
           if(this.x > panel.x && this.x < panel.xSize + panel.x){
           this.ySpeed = -this.ySpeed;
           }else{
           alert("游戲結(jié)束");
           this.x = 100;
           this.y = 10;
           }
           }
           }
           }
           // 增加一個(gè)擋板對(duì)象
           class Panel{
           constructor(){};
           // 左x
           x = 200;
           // 左y
           y = 390;
           // 長(zhǎng)度
           xSize = 50;
           // 寬度
           ySize = 5;
           draw(){
           context.fillRect(this.x, this.y, this.xSize, this.ySize);
           }
           }
           // 創(chuàng)建出一個(gè)小球?qū)ο? let ball = new Ball();
           // 創(chuàng)建出擋板對(duì)象
           let panel = new Panel();
           // 每10秒為一幀
           window.setInterval(() => {
           // 清空畫布
           context.clearRect(0, 0, 400, 400);
           // 畫出小球
           ball.draw();
           // 畫出擋板
           panel.draw();
           // 移動(dòng)
           ball.move();
           // 進(jìn)行邊界判斷
           ball.checkCanvas(panel);
           },10);
           // 控制擋板
           $("body").keydown((event) => {
           if(event.keyCode == 37){
           panel.x = panel.x - 5;
           // 移出邊界問題處理
           if(panel.x < 0){
           panel.x = 0;
           }
           }
           if(event.keyCode == 39){
           panel.x = panel.x + 5;
           // 移出邊界處理
           if(panel.x + panel.xSize > 400){
           panel.x = 400 - panel.xSize;
           }
           }
           })
          </script>
          </body>
          </html>
          

          思路

          這就是倆對(duì)象,,一個(gè)依賴于另一個(gè)。。

          碰撞檢測(cè)時(shí)實(shí)的坐標(biāo)判斷,碰撞完成以后兩個(gè)速度分量為取反即可。

          事件是左右事件。。移動(dòng)即可。

          需要時(shí)實(shí)刷新,即,幀的概念

          爾夫球的設(shè)計(jì)環(huán)節(jié)會(huì)有樣品沖擊測(cè)試,以便了解產(chǎn)品在沖擊作用下的響應(yīng)。

          高爾夫球的球體一般會(huì)有2~5層,分別采用不同材料,利用球體結(jié)構(gòu)的剛度分布,來影響球的操控性。根據(jù)網(wǎng)上搜到的試驗(yàn)數(shù)據(jù)與材料參數(shù),使用Abaqus對(duì)試驗(yàn)中的3層球進(jìn)行撞擊響應(yīng)建模分析。球體按層切分,并賦予指定材料的截面屬性。

          通過Abaqus/Explicit分析的高爾夫球沖擊過程中的應(yīng)力以及速度云圖如下:



          對(duì)于球體在球桿打擊作用下的響應(yīng)(速度與旋轉(zhuǎn)速率),在設(shè)計(jì)環(huán)節(jié)也會(huì)進(jìn)行大量的計(jì)算分析,通常會(huì)計(jì)算球桿不同表面特征(U型開槽、V型開槽)下的出球響應(yīng)。


          如下圖所示,設(shè)計(jì)部門在仿真前期會(huì)做一些基于試驗(yàn)參數(shù)的對(duì)標(biāo)工作,以矯正仿真分析時(shí)高應(yīng)變率條件下的材料本構(gòu)模型參數(shù)。

          在參數(shù)修正的基礎(chǔ)上,再進(jìn)行仿真計(jì)算,以更準(zhǔn)確地對(duì)高爾夫球的動(dòng)態(tài)響應(yīng)進(jìn)行預(yù)測(cè),從而指導(dǎo)產(chǎn)品設(shè)計(jì),縮短研發(fā)周期。對(duì)標(biāo)后的仿真基本上可以做到和高速攝影同步。

          現(xiàn)在再來談?wù)?,球面上的凹槽怎么回事。上面提到高爾夫球的出球響?yīng)中,有個(gè)變量是旋轉(zhuǎn)速率,原來,球在飛行的過程中,不同旋轉(zhuǎn)速率下,由于凹凸的氣動(dòng)外形,導(dǎo)致球體產(chǎn)生氣動(dòng)阻力、升力是完全不一樣的,這也就決定了高爾夫球的運(yùn)動(dòng)軌跡。

          對(duì)于高速飛行的高爾夫球,凹凸的表面會(huì)導(dǎo)致湍流,影響球體受力,下面這個(gè)視頻是Youtube上ID為CFD Support的團(tuán)隊(duì)通過OpenFOAM計(jì)算的不同旋轉(zhuǎn)速率條件下高爾夫球的升力和阻力系數(shù)。有沒有旋轉(zhuǎn),差別還是挺顯著的,所以球桿的擊球面要開槽,這樣在出球時(shí),球才會(huì)更容易轉(zhuǎn)起來。

          https://v.qq.com/x/page/n0660gsrpd2.html

          作者:鄧怡超,仿真秀科普作者。

          聲明:原創(chuàng)文章,版權(quán)所有,禁止私自轉(zhuǎn)載,歡迎分享,轉(zhuǎn)載請(qǐng)聯(lián)系我。


          主站蜘蛛池模板: 久久精品国产一区二区三区不卡| 视频一区二区在线观看| 亚洲第一区在线观看| 亚洲蜜芽在线精品一区| 日韩一区二区三区在线精品 | 日本精品一区二区三本中文| 国产成人一区二区三区在线| 美女视频一区二区| 女女同性一区二区三区四区| 91无码人妻精品一区二区三区L| 中文字幕在线观看一区二区| 国产一区二区三区播放| 日本一区二区三区四区视频| 精品人妻无码一区二区三区蜜桃一| 国产亚洲一区二区三区在线观看| 久久综合精品国产一区二区三区| 狠狠爱无码一区二区三区| 香蕉久久ac一区二区三区| 国产欧美一区二区精品仙草咪| 精品国产乱码一区二区三区| 中文字幕一区一区三区| 亚洲综合在线成人一区| 亚洲国产美国国产综合一区二区 | 一区二区国产精品| 免费一区二区三区在线视频| 色欲AV无码一区二区三区| 成人欧美一区二区三区在线视频| 亚洲AV香蕉一区区二区三区| 中文字幕av人妻少妇一区二区| 国产精品香蕉在线一区| 五十路熟女人妻一区二区| 久久精品国内一区二区三区| 日韩视频在线一区| 日韩AV在线不卡一区二区三区 | 福利一区二区在线| 久久99久久无码毛片一区二区 | 国产伦一区二区三区免费| 国产在线不卡一区| 国产日韩AV免费无码一区二区 | 一区二区三区视频| 视频一区二区在线播放|