# Hypotrochoid

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-LdGHERPs5OcNUhq_vvk%2F-LdGLmLrfOBWqt8Q2mIo%2FHypotrochoid-3.png?alt=media\&token=a4bef83e-8537-4d5b-8a0b-76d21ba211b8)

```d
R = 10;
r = 4;
d = 10;
a = 750;

x = (R-r)*Math.Cos(0..a)+d*Math.Cos(((R-r)/r)*(0..a));
y = (R-r)*Math.Sin(0..a)-d*Math.Sin(((R-r)/r)*(0..a));

p = Point.ByCoordinates(x,y);
s = NurbsCurve.ByPoints(p);
```

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-LfT-gaWC3M6518JXr5a%2F-LfT-lL2xIwf8CkLJfAx%2FHypotrochoid.gif?alt=media\&token=456a19ff-bbf8-4e16-8180-0ae188bfc622)

```d
//Hypotrochoid
R = 5;
r = 3;
d = 5;
a = 0..n..1;
x = (R-r)*Math.Cos(a)+d*Math.Cos(((R-r)/r)*a);
y = (R-r)*Math.Sin(a)-d*Math.Sin(((R-r)/r)*a);
p1 = Point.ByCoordinates(x,y);

//Graphics for animation
p2 = (Point.Origin().Translate(Vector.XAxis(),R-r))
.Rotate(Point.Origin(),Vector.ZAxis(),a);
l1 = Line.ByStartPointEndPoint(p1,p2);
c1 = Circle.ByCenterPointRadius(Point.Origin(),R);
c2 = Circle.ByCenterPointRadius(p2,r);
[p1,c1,List.LastItem(l1),List.LastItem(c2)];
```

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-Lh99J-YcJHuKlvtKxFp%2F-Lh99MSgVxg92X_9mruQ%2FHypotrochoid-2a.png?alt=media\&token=b02ee6f7-79d6-48c4-a293-dcf3ae2bef85)
