ClanLib
2.3.7
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
Sources
API
Core
Math
triangle_math.h
Go to the documentation of this file.
1
/*
2
** ClanLib SDK
3
** Copyright (c) 1997-2011 The ClanLib Team
4
**
5
** This software is provided 'as-is', without any express or implied
6
** warranty. In no event will the authors be held liable for any damages
7
** arising from the use of this software.
8
**
9
** Permission is granted to anyone to use this software for any purpose,
10
** including commercial applications, and to alter it and redistribute it
11
** freely, subject to the following restrictions:
12
**
13
** 1. The origin of this software must not be misrepresented; you must not
14
** claim that you wrote the original software. If you use this software
15
** in a product, an acknowledgment in the product documentation would be
16
** appreciated but is not required.
17
** 2. Altered source versions must be plainly marked as such, and must not be
18
** misrepresented as being the original software.
19
** 3. This notice may not be removed or altered from any source distribution.
20
**
21
** Note: Some of the libraries ClanLib may link to may have additional
22
** requirements or restrictions.
23
**
24
** File Author(s):
25
**
26
** Harry Storbacka
27
** Mark Page
28
*/
29
32
33
#pragma once
34
35
#include "../api_core.h"
36
#include "
vec3.h
"
37
42
template
<
typename
Type>
43
class
CL_Trianglex
44
{
45
public
:
47
CL_Vec2<Type>
p
;
48
49
// \brief Second triangle point
50
CL_Vec2<Type>
q
;
51
52
// \brief Third triangle point
53
CL_Vec2<Type>
r
;
54
55
CL_Trianglex
() { }
56
CL_Trianglex
(
const
CL_Trianglex<Type>
©) {
p
= copy.
p
;
q
= copy.
q
;
r
= copy.
r
;}
57
CL_Trianglex
(
const
CL_Vec2<Type>
&point_p,
const
CL_Vec2<Type>
&point_q,
const
CL_Vec2<Type>
&point_r) {
p
= point_p;
q
= point_q;
r
= point_r;}
58
61
62
public
:
63
68
bool
point_inside
(
const
CL_Vec2<Type>
&point)
const
;
69
73
74
public
:
75
77
CL_Trianglex<Type>
&
operator =
(
const
CL_Trianglex<Type>
& copy) {
p
= copy.
p
;
q
= copy.
q
;
r
= copy.
r
;
return
*
this
; }
78
80
bool
operator ==
(
const
CL_Trianglex<Type>
& triangle)
const
{
return
((
p
== triangle.
p
) && (
q
== triangle.
q
) && (
r
== triangle.
r
));}
81
83
bool
operator !=
(
const
CL_Trianglex<Type>
& triangle)
const
{
return
((
p
!= triangle.
p
) || (
q
!= triangle.
q
) || (
r
!= triangle.
r
));}
85
};
86
90
class
CL_Triangle
:
public
CL_Trianglex
<int>
91
{
92
public
:
93
CL_Triangle
() { }
94
CL_Triangle
(
const
CL_Trianglex<int>
©) :
CL_Trianglex
<int>(copy) {}
95
CL_Triangle
(
const
CL_Vec2<int>
&point_p,
const
CL_Vec2<int>
&point_q,
const
CL_Vec2<int>
&point_r) :
CL_Trianglex
<int>(point_p, point_q, point_r) {}
96
};
97
101
class
CL_Trianglef
:
public
CL_Trianglex
<float>
102
{
103
public
:
104
CL_Trianglef
() { }
105
CL_Trianglef
(
const
CL_Trianglex<float>
©) :
CL_Trianglex
<float>(copy) {}
106
CL_Trianglef
(
const
CL_Vec2<float>
&point_p,
const
CL_Vec2<float>
&point_q,
const
CL_Vec2<float>
&point_r) :
CL_Trianglex
<float>(point_p, point_q, point_r) {}
107
};
108
112
class
CL_Triangled
:
public
CL_Trianglex
<double>
113
{
114
public
:
115
CL_Triangled
() { }
116
CL_Triangled
(
const
CL_Trianglex<double>
©) :
CL_Trianglex
<double>(copy) {}
117
CL_Triangled
(
const
CL_Vec2<double>
&point_p,
const
CL_Vec2<double>
&point_q,
const
CL_Vec2<double>
&point_r) :
CL_Trianglex
<double>(point_p, point_q, point_r) {}
118
};
119
121
Generated on Fri Jun 14 2013 13:05:47 for ClanLib by
1.8.4