TorusKnotGetPos function
Parametric representation of a TorusKnot u varies from 0 - 2 PI q == 0 and p == 1 results in a torus
Implementation
void TorusKnotGetPos(
double u, int q, int p, double radius, double heightScale, VM.Vector3 vec) {
final double cq = Math.cos(q * u);
final double sq = Math.sin(q * u);
final double cp = Math.cos(p * u);
final double sp = Math.sin(p * u);
vec.x = radius * (2.0 + cq) * 0.5 * cp;
vec.y = radius * (2.0 + cq) * 0.5 * sp;
vec.z = heightScale * radius * 0.5 * sq;
}