davebollinger
triaxial hexatorus
more playing with geometry...
wrt method described here
// uv given on [0..1), remap to [-pi,pi) to simplify equations below
u = u * 2.0*Math.PI - Math.PI;
v = v * 2.0*Math.PI - Math.PI;
// evaluate
double sqrtTwo = Math.sqrt(2.0);
double twoThirdsPi = Math.PI * 2.0 / 3.0;
double x = Math.sin(u) / (sqrtTwo + Math.cos(v));
double y = Math.sin(u+twoThirdsPi) / (sqrtTwo + Math.cos(v+twoThirdsPi));
double z = Math.cos(u-twoThirdsPi) / (sqrtTwo + Math.cos(v-twoThirdsPi));
return new WB_Point(x,y,z);
triaxial hexatorus
more playing with geometry...
wrt method described here
// uv given on [0..1), remap to [-pi,pi) to simplify equations below
u = u * 2.0*Math.PI - Math.PI;
v = v * 2.0*Math.PI - Math.PI;
// evaluate
double sqrtTwo = Math.sqrt(2.0);
double twoThirdsPi = Math.PI * 2.0 / 3.0;
double x = Math.sin(u) / (sqrtTwo + Math.cos(v));
double y = Math.sin(u+twoThirdsPi) / (sqrtTwo + Math.cos(v+twoThirdsPi));
double z = Math.cos(u-twoThirdsPi) / (sqrtTwo + Math.cos(v-twoThirdsPi));
return new WB_Point(x,y,z);