Question: HTML: attribute vec 4 vPosition; attribute vec 4 vColor; attribute float vIndex; uniform float theta; uniform vec 4 cr; uniform vec 4 cg; uniform vec

HTML:
attribute vec4 vPosition;
attribute vec4 vColor;
attribute float vIndex;
uniform float theta;
uniform vec4 cr;
uniform vec4 cg;
uniform vec4 cb;
varying vec4 fColor;
void main()
{
float x, y;
float angle = radians(theta);
float c = cos(angle);
float s = sin(angle);
// determine the values of x and y based on vIndex
// the following lines need to be fixed - x and y
// should be the x- and y-coordinates of the
// corresponding centroid based on vIndex.
x = vIndex;
y = vIndex;
// translate to origin
mat4 t1= mat4(1.0,0.0,0.0,0.0,
0.0,1.0,0.0,0.0,
0.0,0.0,1.0,0.0,
-x,-y,0.0,1.0);
// rotate
mat4 rz = mat4(c, s,0.0,0.0,
-s, c,0.0,0.0,
0.0,0.0,1.0,0.0,
0.0,0.0,0.0,1.0);
// translate back
mat4 t2= mat4(1.0,0.0,0.0,0.0,
0.0,1.0,0.0,0.0,
0.0,0.0,1.0,0.0,
x, y,0.0,1.0);
fColor = vColor;
gl_PointSize =2.0;
// transform the vertex
gl_Position = vPosition; // this line needs to be modified
}
precision mediump float;
varying vec4 fColor;
void main()
{
gl_FragColor = fColor;
}
Oops ... your browser doesn't support the HTML5 canvas element
Javascript:
"use strict";
var canvas;
var gl;
var points;
var colors;
var indices;
var red =[1.0,0.0,0.0,1.0];
var green =[0.0,1.0,0.0,1.0];
var blue =[0.0,0.0,1.0,1.0];
var black =[0.0,0.0,0.0,1.0];
var white =[1.0,1.0,1.0,1.0];
var redTriangle;
var greenTriangle;
var blueTriangle;
var program;
var theta =0.0;
var thetaLoc;
var crLoc;
var cgLoc;
var cbLoc;
window.onload = function init()
{
canvas = document.getElementById("gl-canvas");
gl = WebGLUtils.setupWebGL(canvas);
if (!gl)
{
alert("WebGL isn't available");
}
program = initShaders(gl, "vertex-shader", "fragment-shader");
gl.useProgram(program);
gl.viewport(0,0, canvas.width, canvas.height);
gl.clearColor(0.8,0.8,0.8,1.0);
gl.enable(gl.DEPTH_TEST);
redTriangle = createTriangle();
greenTriangle = createTriangle();
blueTriangle = createTriangle();
points =[];
colors =[];
indices =[];
var cr = computeCentroid(redTriangle);
var cg = computeCentroid(greenTriangle);
var cb = computeCentroid(blueTriangle);
// draw filled triangles
points.push(redTriangle[0], redTriangle[1], redTriangle[2],
greenTriangle[0], greenTriangle[1], greenTriangle[2],
blueTriangle[0], blueTriangle[1], blueTriangle[2]);
colors.push(red, red, red, green, green, green, blue, blue, blue);
indices.push(0.0,0.0,0.0,1.0,1.0,1.0,2.0,2.0,2.0);
// draw triangle outlines
points.push(redTriangle[0], redTriangle[1],
redTriangle[1], redTriangle[2],
redTriangle[2], redTriangle[0],
greenTriangle[0], greenTriangle[1],
greenTriangle[1], greenTriangle[2],
greenTriangle[2], greenTriangle[0],
blueTriangle[0], blueTriangle[1],
blueTriangle[1], blueTriangle[2],
blueTriangle[2], blueTriangle[0]);
colors.push(black, black, black, black, black, black,
black, black, black, black, black, black,
black, black, black, black, black, black);
indices.push(0.0,0.0,0.0,0.0,0.0,0.0,
1.0,1.0,1.0,1.0,1.0,1.0,
2.0,2.0,2.0,2.0,2.0,2.0);
// draw centers
points.push(cr, cg, cb);
colors.push(white, white, white);
indices.push(0.0,1.0,2.0);
// setup uniforms
thetaLoc = gl.getUniformLocation(program, "thet

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!