日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

计算机图形学Web前端笔记-浏览器中心点转场景坐标理论及实现(two.js)

發布時間:2025/3/15 HTML 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机图形学Web前端笔记-浏览器中心点转场景坐标理论及实现(two.js) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實現的功能是這樣的:

輸入window.mainPage.flyTo(xxx,?xxx)

后會在瀏覽器中心點畫個圓心,使用鼠標及滾輪滾動后。

再次運行:

前一篇博文已經說了3*3變化矩陣實現圖形放縮及平移,這里不再多談,此處只記錄下,將屏幕中心點坐標,轉換為two.js的場景坐標點:

這里的two.scene._matrix就是3*3的矩陣。

cirX?=?(屏幕坐標X點?-?水平位移)/?水平縮放

cirY?=?(屏幕坐標Y點?-?垂直位移)/?垂直縮放

?

源碼如下:

;import * as Two from "JS/two"; import * as $ from "JS/jquery";let two; let mouse; let isPressed = false; let originalPositionX = 0; let originalPositionY = 0; let map = new Map(); let rect;export function drawGraphic(){let elem = document.getElementById("draw-shapes");let params = {type: Two.Types['webgl'],fullscreen: true,autostart: true};two = new Two(params).appendTo(elem);mouse = new Two.ZUI(two.scene);mouse.addLimits(0.1, 10);let $stage = $(two.renderer.domElement);$stage.bind('mousewheel wheel', function(event){let e = event.originalEvent;e.stopPropagation();e.preventDefault();let dy = (e.wheelDeltaY || -e.deltaY) / 1000;mouse.zoomBy(dy, e.clientX, e.clientY);});$stage.bind('mouseup', function(event){isPressed = false;});$stage.bind('mouseout', function(event){isPressed = false;});$stage.bind('mousedown', function(event){isPressed = true;originalPositionX = event.clientX;originalPositionY = event.clientY;let x = event.clientX;let y = event.clientY;for(let value of map){let xOffset = value[0]._width / 2;let yOffset = value[0]._height / 2;let letX = ((value[0]._translation._x - xOffset) * (two.scene._matrix.elements[0]) + two.scene._matrix.elements[2]);let letY = ((value[0]._translation._y - yOffset) * (two.scene._matrix.elements[4]) + two.scene._matrix.elements[5]);let letWidth = value[0]._width * two.scene._matrix.elements[0];let letHeight = value[0]._height * two.scene._matrix.elements[4];if(x > letX &&y > letY &&x < letX + letWidth &&y < letY + letHeight){let r = Math.round(Math.random() * 255);let g = Math.round(Math.random() * 255);let b = Math.round(Math.random() * 255);let rgbStr = "rgb(" + r + "," + g + "," + b + ")";value[0].fill = rgbStr;break;}}});$stage.bind('mousemove', function(event){if(isPressed){let boolX = event.clientX - originalPositionX;let boolY = event.clientY - originalPositionY;mouse.graphicMove(boolX, boolY);originalPositionX = event.clientX;originalPositionY = event.clientY;}});createBtn(1001, 200, 200, 500, "red");createBtn(1002, 400, 400, 500, "green");createBtn(1003, 600, 600, 500, "blue");createBtn(1004, 800, 800, 500, "black");createBtn(1005, 1000, 1000, 500, "yellow");createBtn(1006, 400, 800, 500, "purple"); }function createBtn(id, x, y, weight, color) {rect = two.makeRectangle(x, y, 200, 200);rect.noStroke();rect.fill = color;rect.myId = id;map.set(rect, weight); }//計算當前屏幕圓心 對應的 圖形坐標 function getScreenOriginal(){let original = {x: 0,y: 0};original.x = two.width / 2;original.y = two.height / 2;console.log(two.scene._matrix.elements)//獲取水平位移及垂直位移//將瀏覽器上界面坐標轉換為two.js的場景坐標,也就是 cirX和cirY為當前界面中點的場景坐標let cirX = (original.x - two.scene._matrix.elements[2]) / two.scene._matrix.elements[0];let cirY = (original.y - two.scene._matrix.elements[5]) / two.scene._matrix.elements[4];console.log("cirX:" + cirX + " cirY:" + cirY);original.x = cirX;original.y = cirY;return original; }export function flyToPosition(x, y){let dot = getScreenOriginal();let circle = two.makeCircle(dot.x, dot.y, 10);circle.fill = "red"; }

?

?

總結

以上是生活随笔為你收集整理的计算机图形学Web前端笔记-浏览器中心点转场景坐标理论及实现(two.js)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 超碰在线免费公开 | 深夜啪啪| 日本55丰满熟妇厨房伦 | 牛牛精品一区 | 亚洲精品一二三四 | 日韩 国产 在线 | 久久最新视频 | 福利视频在线免费观看 | 欧美a在线 | 波多野结衣免费看 | 久久激情影院 | 久久久久久久久久久久久久国产 | 天天色一色 | 射射综合网| 日韩一区二区欧美 | 国产强被迫伦姧在线观看无码 | 久久午夜精品视频 | 国产视频在线一区二区 | 欧美亚色 | 日日日日干 | 精品人妻av一区二区三区 | 久久免费片 | 国产男女av | 欧洲丰满少妇做爰 | 中文字幕69 | 色漫| 国产成人无码一区二区在线观看 | 成人av资源站 | 一卡二卡三卡四卡 | 国产成人精品无码免费看81 | 天天摸天天操天天射 | 国产精品丝袜视频无码一区69 | 波多野结衣家庭主妇 | 精品二区在线 | 草草视频在线观看 | 国产精品高潮av | 福利一区二区在线 | 国产精品视频第一页 | 熟女av一区二区三区 | 久艹在线视频 | 国产一区在线免费观看 | 乳揉みま痴汉4在线播放 | 国产高清视频免费在线观看 | 日韩美女视频一区 | 欧美成人精品一区二区免费看片 | 美女日批在线观看 | 国产精品一区二区免费在线观看 | 乱lun合集小可的奶水 | 欧美夜夜爽 | 97人人模人人爽人人少妇 | 在线观看羞羞漫画 | 精品熟女一区二区 | 2024国产精品视频 | 在线一区二区三区四区五区 | 午夜欧美成人 | 欧美久久一区二区 | 久久久久二区 | 久久久精品视频一区 | 黄色av免费在线看 | 日日夜夜免费精品视频 | 日批视频免费播放 | 人人干人 | www.美色吧.com | 亚洲tv在线观看 | 亚洲成人久久精品 | 久久久久久久久久久久久女过产乱 | 欧美在线视频二区 | 色综合欧美| 精品动漫一区二区三区 | 亚洲二区一区 | 中文在线а√天堂官网 | 国产91色在线 | 亚洲国产97 | 欧美一级少妇 | 99久久久国产精品无码免费 | 国产精品视频播放 | 欧美一区二区性久久久 | 少妇人妻精品一区二区三区 | 影音先锋人妻啪啪av资源网站 | 中文字幕日韩人妻在线视频 | 国产在线拍 | 欧美日韩免费一区二区三区 | jizz欧美大片 | 性欧美欧美巨大69 | 成年人一级黄色片 | 久久与婷婷 | 日韩激情电影在线 | 91激情网 | 久久午夜影视 | 无码人妻精品一区二区三区99日韩 | 成人一级毛片 | 日本久久视频 | 欧美在线色视频 | 日韩久久一区二区 | 可以免费看的av毛片 | 亚洲天堂网在线观看 | 亚洲视频免费播放 | 青青青在线观看视频 | 美女扒开腿让男生桶 |