|
| 1 | +<!-- |
| 2 | + 11-March-22 ! Bhupendra Singh ! CG Illustration for Standard Rotation. |
| 3 | +--> |
1 | 4 | <!DOCTYPE html>
|
2 | 5 | <html>
|
3 | 6 | <head>
|
|
10 | 13 | </head>
|
11 | 14 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
12 | 15 | <body>
|
13 |
| -<div id="Original" class="p-20 w-25 bg-primary"></div> |
14 |
| -<div id="Result"></div> |
| 16 | + <div class="body"> |
| 17 | + <div id="header"> |
| 18 | + <!-- <nav class="navbar navbar-expand-lg navbar-light bg-light"> |
| 19 | + <a class="navbar-brand h1" href="#">Computer Graphics Fundamentals Illustrations</a> |
| 20 | + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> |
| 21 | + <span class="navbar-toggler-icon"></span> |
| 22 | + </button> |
| 23 | + <div class="collapse navbar-collapse" id="navbarNavAltMarkup"> |
| 24 | + <div class="navbar-nav"> |
| 25 | + <a class="nav-item nav-link active" href="#">To be added <span class="sr-only">(current)</span></a> |
| 26 | + <a class="nav-item nav-link" href="#">To be added</a> |
| 27 | + <a class="nav-item nav-link disabled" href="#">Disabled</a> |
| 28 | + </div> |
| 29 | + </div> |
| 30 | + </nav> --> |
| 31 | + </div> |
| 32 | + <div id="WebGL_output" class="container"> |
| 33 | + <div class="row col-lg-12 h1 text-center font-weight-bold text-info"> |
| 34 | + <b>Standard Rotations in Computer Graphics Fundamentals</b> |
| 35 | + </div> |
| 36 | + <div class="row"> |
| 37 | + <div id="Original" class="col-lg-6 h1 text-primary text-center font-weight-bold">Original Geometry.</div> |
| 38 | + <div id="Result1" class="col-lg-6 h1 text-success text-center font-weight-bold">After Rotation around X.</div> |
| 39 | + </div> |
| 40 | + <div class="row"> |
| 41 | + <div id="Result2" class="col-lg-6 h1 text-success text-center font-weight-bold">After Rotation around Y.</div> |
| 42 | + <div id="Result3" class="col-lg-6 h1 text-success text-center font-weight-bold">After Rotation around Z.</div> |
| 43 | + </div> |
| 44 | + </div> |
| 45 | + </div> |
15 | 46 | <script>
|
16 | 47 | function init() {
|
17 | 48 | var scene = new THREE.Scene();
|
18 |
| - var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); |
| 49 | + //var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); |
| 50 | + const camera = new THREE.OrthographicCamera( window.innerHeight / - 20, window.innerHeight / 20, window.innerHeight / 20, window.innerHeight / - 20, 1, 100 ); |
19 | 51 |
|
20 | 52 | var renderer = new THREE.WebGLRenderer();
|
21 |
| - renderer.setClearColor(new THREE.Color(0xEEEEEE)); |
22 |
| - renderer.setSize(window.innerWidth, window.innerHeight); |
| 53 | + renderer.setClearColor(new THREE.Color(0x000000)); |
| 54 | + renderer.setSize(window.innerWidth*0.4, window.innerHeight*0.6); |
| 55 | + |
| 56 | + var renderer2 = new THREE.WebGLRenderer(); |
| 57 | + renderer2.setClearColor(new THREE.Color(0x000000)); |
| 58 | + renderer2.setSize(window.innerWidth*0.4, window.innerHeight*0.6); |
| 59 | + |
| 60 | + var renderer3 = new THREE.WebGLRenderer(); |
| 61 | + renderer3.setClearColor(new THREE.Color(0x000000)); |
| 62 | + renderer3.setSize(window.innerWidth*0.4, window.innerHeight*0.6); |
| 63 | + |
| 64 | + var renderer4 = new THREE.WebGLRenderer(); |
| 65 | + renderer4.setClearColor(new THREE.Color(0x000000)); |
| 66 | + renderer4.setSize(window.innerWidth*0.4, window.innerHeight*0.6); |
23 | 67 |
|
24 | 68 | var controls = new THREE.OrbitControls(camera, renderer.domElement);
|
25 | 69 | controls.enableDamping = true;
|
26 | 70 | controls.dampingFactor = 0.25;
|
27 | 71 | controls.enableZoom = true;
|
28 | 72 |
|
29 |
| - // show axes in the screen |
30 |
| - var axes = new THREE.AxesHelper(40); |
| 73 | + var axes = new THREE.AxesHelper(60); |
31 | 74 | scene.add(axes);
|
32 | 75 |
|
33 |
| - const geometry = new THREE.BoxGeometry( 15, 10, 10 ); |
| 76 | + const geometry = new THREE.BoxGeometry( 20, 5, 15 ); |
34 | 77 | const material = new THREE.MeshBasicMaterial( {color: 0x00FFFF} );
|
35 | 78 | const cube = new THREE.Mesh( geometry, material );
|
36 |
| - cube.position.x = 15; |
37 |
| - cube.position.y = 15; |
38 |
| - cube.position.z = 15; |
| 79 | + cube.position.x = 0; |
| 80 | + cube.position.y = 0; |
| 81 | + cube.position.z = 0; |
39 | 82 | scene.add( cube );
|
40 | 83 |
|
41 | 84 | camera.position.x = 30;
|
42 | 85 | camera.position.y = 40;
|
43 |
| - camera.position.z = 100; |
| 86 | + camera.position.z = 80; |
44 | 87 | camera.lookAt(scene.position);
|
45 | 88 |
|
46 | 89 | document.getElementById("Original").appendChild(renderer.domElement);
|
47 |
| - document.getElementById("Result").appendChild(renderer.domElement); |
48 |
| - renderer.render(scene, camera); |
| 90 | + document.getElementById("Result1").appendChild(renderer2.domElement); |
| 91 | + document.getElementById("Result2").appendChild(renderer3.domElement); |
| 92 | + document.getElementById("Result3").appendChild(renderer4.domElement); |
| 93 | + |
49 | 94 | animate();
|
50 |
| - |
| 95 | + var angle = 0; |
| 96 | + var xRotation, yRotation, zRotation; |
51 | 97 | function animate()
|
52 | 98 | {
|
| 99 | + angle += 0.1; |
53 | 100 | controls.update();
|
54 | 101 | requestAnimationFrame ( animate );
|
55 | 102 | renderer.render (scene, camera);
|
| 103 | + |
| 104 | + cube.rotation.x = angle; |
| 105 | + renderer2.render (scene, camera); |
| 106 | + |
| 107 | + cube.rotation.x = 0; |
| 108 | + cube.rotation.y = angle; |
| 109 | + renderer3.render (scene, camera); |
| 110 | + |
| 111 | + cube.rotation.y = 0; |
| 112 | + cube.rotation.z = angle; |
| 113 | + renderer4.render (scene, camera); |
| 114 | + |
| 115 | + cube.rotation.z = 0; |
56 | 116 | }
|
57 | 117 | }
|
58 | 118 | window.onload = init;
|
|
0 commit comments