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 >
0 commit comments