Sphere with radius and a number of faces set by n_meridians and n_parallels

Introduced properties

init defaultinit(radius: Float, n_meridians: Int, n_parallels: Int)

gamnit :: UVSphere :: defaultinit

fun n_meridians: Int

gamnit :: UVSphere :: n_meridians

Number of vertices on a full circle around the Z axis
protected fun n_meridians=(n_meridians: Int)

gamnit :: UVSphere :: n_meridians=

Number of vertices on a full circle around the Z axis
fun n_parallels: Int

gamnit :: UVSphere :: n_parallels

Number of vertices on an arc between both poles
protected fun n_parallels=(n_parallels: Int)

gamnit :: UVSphere :: n_parallels=

Number of vertices on an arc between both poles
fun radius: Float

gamnit :: UVSphere :: radius

Distance between the center and the vertices
protected fun radius=(radius: Float)

gamnit :: UVSphere :: radius=

Distance between the center and the vertices

Redefined properties

redef type SELF: UVSphere

gamnit $ UVSphere :: SELF

Type of this instance, automatically specialized in every class
redef init init

gamnit $ UVSphere :: init

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun center: Point3d[Float]

gamnit :: Mesh :: center

Center coordinates of all the vertices
fun center=(center: Point3d[Float])

gamnit :: Mesh :: center=

Center coordinates of all the vertices
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
init defaultinit(radius: Float, n_meridians: Int, n_parallels: Int)

gamnit :: UVSphere :: defaultinit

fun dimensions: Point3d[Float]

gamnit :: Mesh :: dimensions

Dimensions of the bounding box containing all vertices
fun dimensions=(dimensions: Point3d[Float])

gamnit :: Mesh :: dimensions=

Dimensions of the bounding box containing all vertices
fun draw_mode: GLDrawMode

gamnit :: Mesh :: draw_mode

GLDrawMode used to display this mesh, defaults to gl_TRIANGLES
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
fun indices: Array[Int]

gamnit :: Mesh :: indices

Indices to draw triangles with glDrawElements
fun indices=(indices: Array[Int])

gamnit :: Mesh :: indices=

Indices to draw triangles with glDrawElements
fun indices_c=(indices_c: CUInt16Array)

gamnit :: Mesh :: indices_c=

init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun max: Point3d[Float]

gamnit :: Mesh :: max

Maximum coordinates of all vertices on each axes
protected fun max=(max: Point3d[Float])

gamnit :: Mesh :: max=

Maximum coordinates of all vertices on each axes
fun min: Point3d[Float]

gamnit :: Mesh :: min

Minimum coordinates of all vertices on each axes
protected fun min=(min: Point3d[Float])

gamnit :: Mesh :: min=

Minimum coordinates of all vertices on each axes
fun n_meridians: Int

gamnit :: UVSphere :: n_meridians

Number of vertices on a full circle around the Z axis
protected fun n_meridians=(n_meridians: Int)

gamnit :: UVSphere :: n_meridians=

Number of vertices on a full circle around the Z axis
fun n_parallels: Int

gamnit :: UVSphere :: n_parallels

Number of vertices on an arc between both poles
protected fun n_parallels=(n_parallels: Int)

gamnit :: UVSphere :: n_parallels=

Number of vertices on an arc between both poles
fun n_vertices: Int

gamnit :: Mesh :: n_vertices

Number for vertices
fun normals: Array[Float]

gamnit :: Mesh :: normals

Normals, 3 floats per vertex
fun normals=(normals: Array[Float])

gamnit :: Mesh :: normals=

Normals, 3 floats per vertex
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun radius: Float

gamnit :: UVSphere :: radius

Distance between the center and the vertices
protected fun radius=(radius: Float)

gamnit :: UVSphere :: radius=

Distance between the center and the vertices
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
fun texture_coords: Array[Float]

gamnit :: Mesh :: texture_coords

Coordinates on the texture, 2 floats per vertex
fun texture_coords=(texture_coords: Array[Float])

gamnit :: Mesh :: texture_coords=

Coordinates on the texture, 2 floats per vertex
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun vertices: Array[Float]

gamnit :: Mesh :: vertices

Vertices relative coordinates, 3 floats per vertex
fun vertices=(vertices: Array[Float])

gamnit :: Mesh :: vertices=

Vertices relative coordinates, 3 floats per vertex
package_diagram gamnit::UVSphere UVSphere gamnit::Mesh Mesh gamnit::UVSphere->gamnit::Mesh core::Object Object gamnit::Mesh->core::Object ...core::Object ... ...core::Object->core::Object

Ancestors

interface Object

core :: Object

The root of the class hierarchy.

Parents

class Mesh

gamnit :: Mesh

Mesh with all geometry data

Class definitions

gamnit $ UVSphere
# Sphere with `radius` and a number of faces set by `n_meridians` and `n_parallels`
class UVSphere
	super Mesh

	# Distance between the center and the vertices
	var radius: Float

	# Number of vertices on a full circle around the Z axis
	var n_meridians: Int

	# Number of vertices on an arc between both poles
	var n_parallels: Int

	init
	do
		var w = n_meridians
		var h = n_parallels

		var vertices = new Array[Float].with_capacity(w*h*3)
		self.vertices = vertices

		var texture_coords = new Array[Float].with_capacity(w*h*2)
		self.texture_coords = texture_coords

		var normals = new Array[Float].with_capacity(w*h*3)
		self.normals = normals

		# Build vertices
		for m in [0..w[ do
			for p in [0..h[ do
				var u = m.to_f * 2.0 * pi / (w-1).to_f
				var v = p.to_f * pi / (h-1).to_f

				vertices.add radius * u.cos * v.sin
				vertices.add radius * v.cos
				vertices.add radius * u.sin * v.sin

				texture_coords.add (1.0 - m.to_f/(w-1).to_f)
				texture_coords.add(p.to_f/(h-1).to_f)

				normals.add u.cos * v.sin
				normals.add v.cos
				normals.add u.sin * v.sin
			end
		end

		# Build faces
		var indices = new Array[Int].with_capacity((w-1)*(h-1)*6)
		self.indices = indices
		for m in [0..w-1[ do
			for p in [0..h-1[ do
				var a = m*h + p

				indices.add a
				indices.add a+h
				indices.add a+1

				indices.add a+h
				indices.add a+h+1
				indices.add a+1
			end
		end
	end
end
lib/gamnit/depth/more_meshes.nit:176,1--239,3