Rumah >hujung hadapan web >Tutorial H5 >HTML5 mengubah kiub tiga dimensi mencapai kesan putaran tiga dimensi 360 darjah tanpa hujung mati_html5 kemahiran tutorial
HTML5 mengubah kiub tiga dimensi mencapai kesan putaran tiga dimensi 360 darjah tanpa hujung mati_html5 kemahiran tutorial
WBOYasal
2016-05-16 15:47:282316semak imbas
Untuk memahami intipati transformasi dengan lebih baik, kami memutuskan untuk melengkapkan model kiub tiga dimensi, yang boleh mencapai kesan putaran tiga dimensi 360 darjah tanpa jalan buntu.
Namun, sukar untuk menentukan susunan pandangan setiap muka apabila berputar, dan ia masih belum diselesaikan dengan sempurna. Saya harap seseorang dapat menjawabnya!
Kod sumber disumbangkan secara langsung:
Salin kod
Kod tersebut adalah seperti berikut:
.kuboid_side_div{ kedudukan:mutlak; sempadan: 1px pepejal #333; 🎜> /** * Versi ini mempunyai masalah berikut: * Terdapat masalah dengan pengiraan zIndex putaran tiga dimensi * Ia juga tidak mempunyai pelbagai model, yang biasa termasuk: garisan, permukaan, kon, sfera, ellipsoid, dsb. */ function cuboidModel(left_init,top_init,long_init,width_init,height_init) { ////////////////////////////////////// //Mulakan pembolehubah persendirian / ////////////////////////////////////// //Awalkan kuboid kedudukan dan saiz var left = left_init; var top = top_init; sudut transformasi, lalai ialah 0 var rotateX = 0; var rotateY = 0 var rotateZ = 0; sisi kuboid var div_front ; var div_behind; ///////// /////////////////////////// //Awalkan kuboid /// ////////// /////////////////////////// //Bina enam muka berdasarkan awalan kedudukan. this.init = function() { //Buat div hadapan div_depan = document.createElement("div"); div_front.className = "kuboid_side_div"; = "div depan"; div_front.style.backgroundColor="#f1b2b2"; document.body.appendChild(div_front);//Buat di belakang div div_behind = document.createElement(" div"); div_behind.className = "cuboid_side_div"; div_behind.innerHTML = "div behind"; div_behind.style.backgroundColor="#bd91eb"; pendumen.badan. div_behind); //Buat div kiri div_left = document.createElement("div"); >div_left.style.backgroundColor="#64a3c3"; document.body.appendChild(div_left);//Buat div kanan div_right = document.createElement("div_right."); .className = "kuboid_side_div"; div_right.innerHTML = "div_kanan"; Cipta div teratas div_top = document.createElement("div"); div_top.className = "cuboid_side_div"; #e7db78"; document.body.appendChild(div_top); //Buat div bawah div_bottom = document.createElement("div"); div_bottom.className = "kuboid_side_div"; 🎜>div_bottom.innerHTML = "div bottom"; div_bottom.style.backgroundColor="#e79c78"; document.body.append(div_bottom(); ; //Lukis semula ini.segarkan = function() { //Tentukan gaya div_depan div_front.style.left = kiri "px" div_front.style . atas = atas "px"; div_front.style.width = panjang "px"; ((-1)*lebar / 2) "px"; //Tentukan gaya div_behind div_behind.style.left = kiri "px" div_behind.style.top = atas "px" ; div_behind.style.width = div_front.style.width; div_behind.style.height = div_front.style.height; div_behind.style.webkit TransformOrigin = "50% 50% " *lebar / 2) "px"; //Tentukan gaya div_left div_left.style.left = kiri ((panjang - tinggi) / 2) "px"; ((tinggi - lebar) / 2) "px"; div_left.style.width = tinggi "px"; div_left.style.height = lebar "px" div_left.style.webkitTransformOrigin = "50% 50% " ((-1) * panjang /2 ) "px"; //Tentukan gaya div_kanan div_kanan.style.left = div_left.style.left; atas = div_left.style.top; div_right.style.width = div_left.style.width; div_right.style.height = div_right.style.webkitTransformAri 50% " ((-1) * panjang /2 ) "px"; //Tentukan gaya div_top div_top.style.left = kiri "px"; div_top.style.top = atas ( (tinggi - lebar)/ 2) "px"; div_top.style.width = panjang "px"; div_top.style.height = lebar "px"; 50% 50% " ((-1) * ketinggian /2 ) "px"; //Tentukan gaya div_bottom div_bottom.style.left = div_top.style.left; div_bottom.style. top = div_top.style.top; div_bottom.style.width = div_top.style.width; div_bottom.style.height = div_top.style.height; % " ((-1) * ketinggian /2 ) "px"; this.rotate(rotateX,rotateY,rotateZ); }; //Putar kubus this.rotate = fungsi(x,y,z) { putarX = x; putarY = y;var rotateY_front = rotateY; var rotateZ_front = rotateZ; //判断各个面旋转角度 var rotateX_behind = rotateX_front 180; var rotateY_behind = rotateY_front * (-1); var rotateZ_behind = rotateZ_front * (-1); var rotateX_top = rotateX_front 90; var rotateY_top = rotateZ_front; var rotateZ_top = rotateY_front * (-1); var rotateX_bottom = rotateX_front-90; var rotateY_bottom = rotateZ_front * (-1); var rotateZ_bottom = rotateY_front; var rotateX_left = rotateX_front 90; var rotateY_left = rotateZ_front - 90; var rotateZ_left = rotateY_front * (-1); var rotateX_right = rotateX_front 90; var rotateY_right = rotateZ_front 90; var rotateZ_right = rotateY_front * (-1); //判断各个面的z轴显示顺序 var zIndex_front_default = -1; var zIndex_behind_default = -6; var zIndex_top_default = -5; var zIndex_bottom_default = -2; var zIndex_left_default = -4; var zIndex_right_default = -3; var xI = (putarX_depan / 90) % 4; var yI = (putarY_depan / 90) % 4; var zI = (putarZ_depan / 90) % 4; var zIndex_matrix = Array baharu(); untuk(var i = 0; i < 3;i ) { zIndex_matrix.push(New Array()); } zIndex_matrix = [["","zIndex_top",""], ["zIndex_left","zIndex_front","zIndex_right"], ["","zIndex_bottom", ""]]; var zIndex_matrix_behind = "zIndex_behind"; //计算zIndex jika((xI >= 0 && xI < 1) ||(xI >= -4 && xI < -3)) { } lain jika(( xI >= 1 && xI < 2) ||(xI >= -3 && xI < -2)) { var zIndex_matrix_tmp = zIndex_matrix[0][1]; zIndex_matrix[0][1] = zIndex_matrix[1][1]; zIndex_matrix[1][1] = zIndex_matrix[1][2]; zIndex_matrix[1][2] = zIndex_matrix_behind; zIndex_matrix_behind = zIndex_matrix_tmp; } lain jika((xI >= 2 && xI < 3) ||(xI >= -2 && xI < -1)) { var zIndex_matrix_tmp = zIndex_matrix[0][1] ; zIndex_matrix[0][1] = zIndex_matrix[2][1]; zIndex_matrix[2][1] = zIndex_matrix_tmp; zIndex_matrix_tmp = zIndex_matrix[1][1]; zIndex_matrix[1][1] = zIndex_matrix_behind; zIndex_matrix_behind = zIndex_matrix_tmp; } lain jika((xI >= 3 && xI < 4) ||(xI >= -1 && xI < 0)) { var zIndex_matrix_tmp = zIndex_matrix[0][1]; zIndex_matrix[0][1] = zIndex_matrix_behind; zIndex_matrix_behind = zIndex_matrix[2][1]; zIndex_matrix[2][1] = zIndex_matrix[1][1]; zIndex_matrix[1][1] = zIndex_matrix_tmp; } jika((yI > 0 && yI <= 1) ||(yI > -4 && yI <= -3)) { var zIndex_matrix_tmp = zIndex_matrix[1][ 0]; zIndex_matrix[1][0] = zIndex_matrix_behind; zIndex_matrix_behind = zIndex_matrix[1][2]; zIndex_matrix[1][2] = zIndex_matrix[1][1]; zIndex_matrix[1][1] = zIndex_matrix_tmp; } lain jika((yI > 1 && yI <= 2) ||(yI > -3 && yI <= -2)) { var zIndex_matrix_tmp = zIndex_matrix[1][0] ; zIndex_matrix[1][0] = zIndex_matrix[1][2]; zIndex_matrix[1][2] = zIndex_matrix_tmp; zIndex_matrix_tmp = zIndex_matrix[1][1]; zIndex_matrix[1][1] = zIndex_matrix_behind; zIndex_matrix_behind = zIndex_matrix_tmp; } lain jika((yI > 2 && yI <= 3) ||(yI > -2 && yI <= -1)) { var zIndex_matrix_tmp = zIndex_matrix[1][0] ; zIndex_matrix[1][0] = zIndex_matrix[1][1]; zIndex_matrix[1][1] = zIndex_matrix[1][2]; zIndex_matrix[1][2] = zIndex_matrix_behind; zIndex_matrix_behind = zIndex_matrix_tmp; } lain jika((yI > 3 && yI <= 4) ||(yI > -1 && yI <= 0)) { }
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn