Last updated January 22, 2010 10:43, by raindrop
Class MDSphere.fx:
public function coordinate(radius:Number, angle:IMDVector):IMDVector{
var dim = angle.getDim();
if(dim == 0){ return MDVector{ dim: 1 elems: [radius] } }
var alpha = angle.getElem( dim - 1 );
MDVector{
dim: dim + 1
elems: [MDVector.getElems(coordinate(radius * Math.sin(alpha), angle.subVector(dim-1))), radius * Math.cos(alpha)]
}
}
public class MDSphere extends MDShape{
public var radius:Number;
override var fragmentation = 6;
public override function getSegments(): MDSegment[]{
var N = fragmentation;
def PI = Math.PI;
var delta = 2.0 * PI / (2 * N);
for(angle in MDSet.set(-PI, PI, N, dim -1)){
var center = MDPoint.createPoint(coordinate(radius, angle));
for(p in MDVector.getNeighborhood(delta, angle)){
MDSegment{
color: color
point1: center
point2: MDPoint.createPoint(coordinate(radius, p))
}
}
}
}
}
Main file:
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.transform.*;
import mathematics.multidimensional.shape.*;
var dim = 4;
Stage {
title: "Hyper Sphere"
scene: Scene {
width: 500
height: 500
content: MDUniversePlayer {
transforms: Transform.translate(250, 250);
dimension: dim
autoplay: true
shapes: [MDSphere {dim: dim radius: 200 fragmentation: 10 color: Color.DARKRED}]
}
}
}





