2
js lib에서 도움을 받아, 더 작은 직육면체를 내부에 포함하는 직육면체 컨테이너를 만들려고합니다.pre3d를 사용하여 중첩 된 큐 보이드
이제 제대로 이해하지 못하는 것은 내부 직육면체를 미리 정의 된 좌표에 배치하는 방법입니다. transform2.translate
에 대한 일반 공식은 무엇입니까? 이 수식은 내가 안에 넣고 싶은 모든 직육면체에 적용됩니다.
다음은 지금까지 내가 한 것입니다. 이 두 파일을 demos 디렉토리에 넣으면 즉시 작동해야합니다.
// experiment.js
window.addEventListener('load', function() {
var screen_canvas = document.getElementById('canvas');
var renderer = new Pre3d.Renderer(screen_canvas);
var transform1 = new Pre3d.Transform();
transform1.translate(-0.5, -0.5, -0.5);
var transform2 = new Pre3d.Transform();
// **** This is where i need your help ****//
transform2.translate(10 - 10/2, 10 - 10/2 - 2, 10 - 10/2);
// **** **** **** ****//
var cubes = [
{ //container
shape: Pre3d.ShapeUtils.makeBox(10, 10, 10),
color: new Pre3d.RGBA(9/10, 9/10, 9/10, 0.3),
trans: transform1
},
{ //axis
shape: Pre3d.ShapeUtils.makeBox(10, 0.01, 0.01),
color: new Pre3d.RGBA(0, 0, 0, 0.3),
trans: transform1
},
{//axis
shape: Pre3d.ShapeUtils.makeBox(0.01, 10, 0.01),
color: new Pre3d.RGBA(0, 0, 0, 0.3),
trans: transform1
},
{//axis
shape: Pre3d.ShapeUtils.makeBox(0.01, 0.01, 10),
color: new Pre3d.RGBA(0, 0, 0, 0.3),
trans: transform1
},
{
shape: Pre3d.ShapeUtils.makeBox(10.0, 2, 2),
color: new Pre3d.RGBA(1.2, 0, 0, 0.3),
trans: transform2
}
];
var num_cubes = cubes.length;
var cur_white = false; // Default to black background.
function draw() {
for (var i = 0; i < num_cubes; ++i) {
cube = cubes[i];
renderer.fill_rgba = cube.color;
renderer.transform = cube.trans;
renderer.bufferShape(cube.shape);
}
renderer.ctx.setFillColor(1, 1, 1, 1);
renderer.drawBackground();
renderer.drawBuffer();
renderer.emptyBuffer();
}
renderer.camera.focal_length = 1.5;
DemoUtils.autoCamera(renderer, 0, 0, -30, 0, 0, 0, draw);
draw();
}, false);
샘플 HTML은 간다 :
// experiment.html
<html>
<head>
<title>experiment Front end</title>
<style>
body * {
font-family: sans-serif;
font-size: 14px;
}
body.white {
background-color: white;
color: black;
}
body.black {
background-color: black;
color: white;
}
span.spaceyspan { margin-right: 20px; }
div.centeredDiv { text-align: center; }
li { list-style: none; }
td { padding-right: 10px; }
</style>
<script src="../pre3d.js"></script>
<script src="../pre3d_shape_utils.js"></script>
<script src="demo_utils.js"></script>
<script src="experiment.js"></script>
</head>
<body>
<div class="centeredDiv">
<canvas id="canvas" width="800" height="600">
Sorry, this demo requires a web browser which supports HTML5 canvas!
</canvas>
</div>
</body>
</html>