summaryrefslogtreecommitdiffstats
path: root/src/math/old/math3d.h
blob: 0a3ddc177748b09bd6e5430cf8ecd1dfc82ad3e1 (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// * This file is part of the COLOBOT source code
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
// *
// * This program is free software: you can redistribute it and/or modify
// * it under the terms of the GNU General Public License as published by
// * the Free Software Foundation, either version 3 of the License, or
// * (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have received a copy of the GNU General Public License
// * along with this program. If not, see  http://www.gnu.org/licenses/.

// math3d.h

#pragma once


#include <math.h>

#include "common/struct.h"


//>>> geometry.h SegmentPoint()
D3DVECTOR	SegmentDist(const D3DVECTOR &p1, const D3DVECTOR &p2, float dist);

//>>> geometry.h Intersect()
bool			Intersect(D3DVECTOR a, D3DVECTOR b, D3DVECTOR c, D3DVECTOR d, D3DVECTOR e, D3DVECTOR &i);

//>>> geometry.h IntersectY()
bool			IntersectY(D3DVECTOR a, D3DVECTOR b, D3DVECTOR c, D3DVECTOR &p);

//>>> geometry.h RotatePoint()
void			RotatePoint(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p);

//>>> geometry.h RotatePoint2()
void			RotatePoint2(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p);

//>>> geometry.h RotateView()
// TODO test & verify
D3DVECTOR	RotateView(D3DVECTOR center, float angleH, float angleV, float dist);

//>>> geometry.h LookatPoint()
// TODO test & verify
D3DVECTOR	LookatPoint( D3DVECTOR eye, float angleH, float angleV, float length );

//>>> vector.h Vector::Length()
float		Length(const D3DVECTOR &u);

//>>> vector.h Distance()
float		Length(const D3DVECTOR &a, const D3DVECTOR &b);

//>>> geometry.h DistanceProjected()
float		Length2d(const D3DVECTOR &a, const D3DVECTOR &b);

//>>> vector.h Angle()
// TODO test & verify
float		Angle( D3DVECTOR u, D3DVECTOR v );

//>>> vector.h CrossProduct()
D3DVECTOR	Cross( D3DVECTOR u, D3DVECTOR v );

//>>> geometry.h NormalToPlane()
D3DVECTOR	ComputeNormal( D3DVECTOR p1, D3DVECTOR p2, D3DVECTOR p3 );

//>>> geometry.h Transform()
// TODO test & verify
D3DVECTOR	Transform(const D3DMATRIX &m, D3DVECTOR p);

//>>> geometry.h Projection()
// TODO test & verify
D3DVECTOR	Projection(const D3DVECTOR &a, const D3DVECTOR &b, const D3DVECTOR &p);

// TODO
void			MappingObject( D3DVERTEX2* pVertices, int nb, float scale );

// TODO
void			SmoothObject( D3DVERTEX2* pVertices, int nb );

//>>> geometry.h DistanceToPlane()
float		DistancePlanPoint(const D3DVECTOR &a, const D3DVECTOR &b, const D3DVECTOR &c, const D3DVECTOR &p);

//>>> geometry.h IsSamePlane()
bool			IsSamePlane(D3DVECTOR *plan1, D3DVECTOR *plan2);

//>>> geometry.h LoadRotationXZYMatrix()
// TODO test & verify
void			MatRotateXZY(D3DMATRIX &mat, D3DVECTOR angle);

//>>> geometry.h LoadRotationZXYMatrix()
// TODO test & verify
void			MatRotateZXY(D3DMATRIX &mat, D3DVECTOR angle);


// TODO
D3DCOLOR		RetColor(float intensity);

// TODO
D3DCOLOR		RetColor(D3DCOLORVALUE intensity);

// TODO
D3DCOLORVALUE RetColor(D3DCOLOR intensity);

// TODO
void			RGB2HSV(D3DCOLORVALUE src, ColorHSV &dest);

// TODO
void			HSV2RGB(ColorHSV src, D3DCOLORVALUE &dest);