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) 2012-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 {
32  {
33  private:
47  inline static Vec3f calculateNormal(float xyAngle, float xzAngle, float n1, float n2, float scale);
48 
62  inline static Vec3f sample(float xyAngle, float xzAngle, float n1, float n2, float scale);
63 
77  inline static void storeVertexAndNormalVectorInArray(const Vec3f& vertex, const Vec3f& normalVector, int& vertexIndex, int& normalVectorIndex, float* roundedCubeCoordinates, float* roundedCubeNormalVectors);
78 
79  public:
102  static void create(int samples, float n1, float n2, float scale, float** roundedCubeCoordinates, float** roundedCubeNormalVectors, int* numberOfVertices, int* numberOfCoordinates, int* numberOfNormals);
103  };
104 }
105 #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.
Functions for generating super ellipsoid shapes.
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
float * roundedCubeNormalVectors
Definition: Native.cpp:94
float * roundedCubeCoordinates
Definition: Native.cpp:91