Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
OpenFlipper-Free
OpenFlipper
Commits
b07910ed
Commit
b07910ed
authored
Feb 19, 2019
by
Martin Heistermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move Plane type to ACG
parent
3c3f2507
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
206 additions
and
0 deletions
+206
-0
libs_required/ACG/Geometry/Types/PlaneType.cc
libs_required/ACG/Geometry/Types/PlaneType.cc
+108
-0
libs_required/ACG/Geometry/Types/PlaneType.hh
libs_required/ACG/Geometry/Types/PlaneType.hh
+98
-0
No files found.
libs_required/ACG/Geometry/Types/PlaneType.cc
0 → 100644
View file @
b07910ed
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
#include "PlaneType.hh"
namespace
ACG
{
namespace
Geometry
{
void
Plane
::
setPlane
(
const
ACG
::
Vec3d
&
_position
,
const
ACG
::
Vec3d
&
_xDirection
,
const
ACG
::
Vec3d
&
_yDirection
)
{
position
=
_position
;
xDirection
=
_xDirection
;
yDirection
=
_yDirection
;
normal
=
(
_xDirection
%
_yDirection
).
normalize
();
}
//----------------------------------------------------------------
void
Plane
::
setPlane
(
const
ACG
::
Vec3d
&
_position
,
const
ACG
::
Vec3d
&
_normal
)
{
//find a non zero component
int
comp
=
-
1
;
for
(
int
i
=
0
;
i
<
3
;
i
++
)
if
(
_normal
[
i
]
!=
0.0
){
comp
=
i
;
break
;
}
if
(
comp
==
-
1
){
std
::
cerr
<<
"PlaneNode: normal is invalid!"
<<
std
::
endl
;
return
;
}
//compute orthogonal vectors in the plane
xDirection
[
comp
]
=
(
-
_normal
[
(
comp
+
1
)
%
3
]
-
_normal
[(
comp
+
2
)
%
3
])
/
_normal
[
comp
];
xDirection
[
(
comp
+
1
)
%
3
]
=
1
;
xDirection
[
(
comp
+
2
)
%
3
]
=
1
;
xDirection
=
xDirection
.
normalize
();
yDirection
=
_normal
%
xDirection
;
yDirection
=
yDirection
.
normalize
();
position
=
_position
;
normal
=
_normal
;
}
//----------------------------------------------------------------
void
Plane
::
transform
(
const
ACG
::
Matrix4x4d
&
_mat
)
{
position
=
_mat
.
transform_point
(
position
);
xDirection
=
_mat
.
transform_vector
(
xDirection
);
yDirection
=
_mat
.
transform_vector
(
yDirection
);
normal
=
(
xDirection
%
yDirection
).
normalize
();
}
//----------------------------------------------------------------
void
Plane
::
setSize
(
double
_xDirection
,
double
_yDirection
)
{
xDirection
=
xDirection
.
normalize
()
*
_xDirection
;
yDirection
=
yDirection
.
normalize
()
*
_yDirection
;
}
}}
// namespaces
//=============================================================================
libs_required/ACG/Geometry/Types/PlaneType.hh
0 → 100644
View file @
b07910ed
#pragma once
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
#include <ACG/Math/Matrix4x4T.hh>
#include <ACG/Math/VectorT.hh>
#include <ACG/Config/ACGDefines.hh>
namespace
ACG
{
namespace
Geometry
{
class
ACGDLLEXPORT
Plane
{
public:
Plane
()
{}
Plane
(
const
ACG
::
Vec3d
&
_p
,
const
ACG
::
Vec3d
&
_n
,
const
ACG
::
Vec3d
&
_x
,
const
ACG
::
Vec3d
&
_y
)
:
position
(
_p
),
normal
(
_n
),
xDirection
(
_x
),
yDirection
(
_y
)
{
}
/** \brief Set plane
*
* @param _position One point on the plane. Will be used as corner point point for rendering in the PlaneNode
* @param _xDirection Vector pointing in planes x direction
* @param _yDirection Vector pointing in planes y direction
*/
void
setPlane
(
const
ACG
::
Vec3d
&
_position
,
const
ACG
::
Vec3d
&
_xDirection
,
const
ACG
::
Vec3d
&
);
/** \brief Set plane with given normal and one point
*
* @param _position One point on the plane. Will be used as corner point for rendering in the PlaneNode
* @param _normal Plane normal
*/
void
setPlane
(
const
ACG
::
Vec3d
&
_position
,
const
ACG
::
Vec3d
&
_normal
);
/** \brief Set plane size
*
* Scales the plane such that the x and y direction vectors have the given lengths
*
* @param _xDirection Size in x direction
* @param _yDirection Size in y direction
*/
void
setSize
(
double
_xDirection
,
double
_yDirection
);
/** \brief Transform the plane with given matrix
*
*
* @param _mat Transformation matrix.
*/
void
transform
(
const
ACG
::
Matrix4x4d
&
_mat
);
public:
ACG
::
Vec3d
position
;
ACG
::
Vec3d
normal
;
ACG
::
Vec3d
xDirection
;
ACG
::
Vec3d
yDirection
;
};
}}
// namespaces
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment