Skip to content

Commit 2a800c9

Browse files
added standard reflection through THREE JS
1 parent 11ab6ea commit 2a800c9

File tree

3 files changed

+120
-1
lines changed

3 files changed

+120
-1
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
<!--
2+
11-March-22 ! Bhupendra Singh ! CG Illustration for Standard Rotation.
3+
-->
4+
<!DOCTYPE html>
5+
<html>
6+
<head>
7+
<title>3D CG Fundamentals Illustrations</title>
8+
<script src="three_min.js"></script>
9+
<script src="OrbitControls.js"></script>
10+
<style>
11+
12+
</style>
13+
</head>
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">
15+
<body>
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 Reflection 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 Reflection around XY</div>
39+
</div>
40+
<div class="row">
41+
<div id="Result2" class="col-lg-6 h1 text-success text-center font-weight-bold">After Reflection around YZ</div>
42+
<div id="Result3" class="col-lg-6 h1 text-success text-center font-weight-bold">After Reflection around XZ</div>
43+
</div>
44+
</div>
45+
</div>
46+
<script>
47+
function init() {
48+
var scene = new THREE.Scene();
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, 0.1, 100 );
51+
52+
var renderer = new THREE.WebGLRenderer();
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);
67+
68+
var controls = new THREE.OrbitControls(camera, renderer.domElement);
69+
controls.enableDamping = true;
70+
controls.dampingFactor = 0.25;
71+
controls.enableZoom = true;
72+
73+
var axes = new THREE.AxesHelper(60);
74+
scene.add(axes);
75+
76+
const geometry = new THREE.BoxGeometry( 15, 3, 10 );
77+
const material = new THREE.MeshBasicMaterial( {color: 0x00FFFF} );
78+
const cube = new THREE.Mesh( geometry, material );
79+
cube.position.x = 10;
80+
cube.position.y = 10;
81+
cube.position.z = 10;
82+
scene.add( cube );
83+
84+
camera.position.x = 30;
85+
camera.position.y = 40;
86+
camera.position.z = 80;
87+
camera.lookAt(scene.position);
88+
89+
document.getElementById("Original").appendChild(renderer.domElement);
90+
document.getElementById("Result1").appendChild(renderer2.domElement);
91+
document.getElementById("Result2").appendChild(renderer3.domElement);
92+
document.getElementById("Result3").appendChild(renderer4.domElement);
93+
94+
renderer.render (scene, camera);
95+
96+
cube.position.z *= -1; //Reflection about XY plane
97+
renderer2.render (scene, camera);
98+
99+
cube.position.z *= -1; //Discarding the previous reflection
100+
cube.position.x *= -1; //Reflection about YZ plane
101+
renderer3.render (scene, camera);
102+
103+
cube.position.x *= -1; //Discarding the previous reflection
104+
cube.position.y *= -1; //Reflection about XZ plane
105+
renderer4.render (scene, camera);
106+
107+
cube.position.y *= -1; //Discarding the previous reflection
108+
109+
animate();
110+
function animate()
111+
{
112+
controls.update();
113+
requestAnimationFrame ( animate );
114+
renderer.render (scene, camera);
115+
}
116+
}
117+
window.onload = init;
118+
</script>
119+
</body>
120+
</html>

Computer Graphics/3D_standard_rotation.HTML

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
testing;;;;
21
<html>
32
<head>
43
<title>WebGL - Rotating Cuboid in 3D virtual world</title>

0 commit comments

Comments
 (0)