1
我有生成div的這段代碼。 通過應用使用矩陣的CSS變換屬性,我會得到一個立方體的三個面,正確對齊div。 問題出在左邊的div。設置數組leftArr縮放(d *縮放),我不能正確地垂直正確div div頂部div的左側。 任何人都可以告訴我一個模擬立方體的最佳方法。帶軸座標的JS/CSS矩陣立方體
謝謝。
CSS:
.face {
height: 50px;
overflow: hidden;
position: absolute;
width: 50px;
}
JS:
var angle = 45,
r = parseFloat(angle) * (Math.PI/180),
cos_theta = Math.cos(r),
sin_theta = Math.sin(r);
var a = cos_theta,
b = sin_theta,
c = -sin_theta,
d = cos_theta;
var face = 50, //reference to .face class
k = 0,
j = 100; //constant
var scale = 3;
var dX = face * Math.SQRT2 * scale;
var dY = face * Math.SQRT2;
for(var i = 0; i < 3; i++){
var tx = j + k;
var ty = j;
var lx = j + k - dX/4;
var ly = ty;
var topArr = [a * scale, b, c * scale, d, tx, ty];
var leftArr = [a * scale, b, 0, d * scale, lx, ly];
var top = 'matrix(' + topArr.join(',') + ')';
var left = 'matrix(' + leftArr.join(',') + ')';
k += dX;
$('<div/>', {
id : 'top_'+i,
'class' : 'face',
css : {
'background' : 'hsla(' + parseInt(Math.random() * 90) + ', 100%, 50%, 0.5)',
'transform' : top
}
}).appendTo('body');
$('<div/>', {
id : 'left_'+i,
'class' : 'face',
css : {
'background' : 'hsla(' + parseInt(Math.random() * 90) + ', 100%, 50%, 0.5)',
'transform' : left
}
}).appendTo('body');
}
實施例:
量表= 1
量表= 2
量表= 3
UPDATE:
一些測試與後:
var ly = ty + dY/2 + (((dY/2)*(scale-1))/2);
代碼很有意義,但是如果有更好的解決方案,任何幫助都會很感激。
好的,我知道3d矩陣。這將是一個測試,僅使用3個面(頂部,左側,右側)製作一個「僞」3D立方體,並使其透視變換爲「視覺效果」,例如x軸(拉伸x)或z軸平移軸。我僅使用3個面,因爲我必須多次複製「立方體」,並且瀏覽器在渲染許多「立方體」的許多面時會遇到一些問題。順便說一下,如果您添加右臉簡單副本並翻譯左臉,上述測試工作(不好,但工作)。問題是當你改變角度值...感謝幫助! –