aboutsummaryrefslogtreecommitdiff
path: root/source/Vertice.cpp
blob: 022c477367ba992f2b8120407cfede748aa469c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "Vertice.h"

Vertice::Vertice() : Vector4f() {}

Vertice::Vertice(float x_, float y_, float z_, float u_, float v_) : Vector4f (x_, y_, z_, 1)
{
	u = u_;
	v = v_;
}

Vertice::Vertice(float x_, float y_, float z_, float w_, float u_, float v_) : Vector4f(x_, y_, z_, w_)
{
	u = u_;
	v = v_;
}

void Vertice::screenspace(int screenWidth, int screenHeight)
{
	x = round(((x + 1.0f) / 2.0f) * screenWidth);
	y = round(((-y + 1.0f) / 2.0f) * screenHeight);
}

Vertice Vertice::multiplyMatrix(const Matrix4f& a)
{
	float x1, y1, z1, w1;
	x1 = ((x * a.m[0][0]) + (y * a.m[0][1]) + (z * a.m[0][2]) + (w * a.m[0][3]));
	y1 = ((x * a.m[1][0]) + (y * a.m[1][1]) + (z * a.m[1][2]) + (w * a.m[1][3]));
	z1 = ((x * a.m[2][0]) + (y * a.m[2][1]) + (z * a.m[2][2]) + (w * a.m[2][3]));
	w1 = ((x * a.m[3][0]) + (y * a.m[3][1]) + (z * a.m[3][2]) + (w * a.m[3][3]));
	return Vertice(x1, y1, z1, w1, u, v);
}

Vertice& Vertice::operator=(const Vector4f& a) 
{
	x = a.x;
	y = a.y;
	z = a.z;
	w = a.w;
	return *this;
}

Vertice Vertice::divideW() 
{
	float rw = 1.0f / w;
	return Vertice(x * rw, y * rw, (z * rw), rw, u * rw, v * rw);
}