OpenGL ES SDK for Android ARM Developer Center
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SuperEllipsoidModel.h
Go to the documentation of this file.
1 /* Copyright (c) 2014-2017, ARM Limited and Contributors
2  *
3  * SPDX-License-Identifier: MIT
4  *
5  * Permission is hereby granted, free of charge,
6  * to any person obtaining a copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
9  * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14  * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19  */
20 
21 #ifndef SUPER_ELLIPSOID_MODEL_H
22 #define SUPER_ELLIPSOID_MODEL_H
23 
24 #include "VectorTypes.h"
25 
26 namespace MaliSDK
27 {
31  class SuperEllipsoidModel
32  {
33  private:
35  static const int numberOfPointCoordinates = 4;
36 
50  inline static Vec3f calculateNormal(float xyAngle,
51  float xzAngle,
52  float n1,
53  float n2,
54  float scale);
55 
69  inline static Vec3f sample(float xyAngle,
70  float xzAngle,
71  float n1,
72  float n2,
73  float scale);
74 
88  inline static void storeVertexAndNormalVectorInArray(const Vec3f& vertex,
89  const Vec3f& normalVector,
90  int& vertexIndex,
91  int& normalVectorIndex,
94 
95  public:
120  static void create(int samples,
121  float n1,
122  float n2,
123  float scale,
124  float** roundedCubeCoordinates,
125  float** roundedCubeNormalVectors,
126  int* numberOfVertices,
127  int* numberOfCoordinates,
128  int* numberOfNormals);
129  };
130 }
131 #endif /* SUPER_ELLIPSOID_MODEL_H */
static void storeVertexAndNormalVectorInArray(const Vec3f &vertex, const Vec3f &normalVector, int &vertexIndex, int &normalVectorIndex, float *roundedCubeCoordinates, float *roundedCubeNormalVectors)
Put vertex and normal vector values into vertex array and normal vector array.
static Vec3f calculateNormal(float xyAngle, float xzAngle, float n1, float n2, float scale)
Compute normal vector of a super ellipsoid.
static Vec3f sample(float xyAngle, float xzAngle, float n1, float n2, float scale)
Compute vertex of a super ellipsoid.
A 3D floating point vector.
Definition: VectorTypes.h:83
GLsizei samples
Definition: gl2ext.h:707
static void create(int samples, float n1, float n2, float scale, float **roundedCubeCoordinates, float **roundedCubeNormalVectors, int *numberOfVertices, int *numberOfCoordinates, int *numberOfNormals)
Function that generates vertices and normal vectors of rounded cube.
Matrix scale
Definition: RotoZoom.cpp:64
static const int numberOfPointCoordinates
Number of coordinates for a point in 3D space.
float * roundedCubeNormalVectors
Definition: Native.cpp:94
float * roundedCubeCoordinates
Definition: Native.cpp:91