File: spring.asy

package info (click to toggle)
asymptote 3.09%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 41,392 kB
  • sloc: cpp: 282,597; ansic: 69,697; python: 15,252; sh: 5,888; perl: 3,006; makefile: 1,719; lisp: 1,507; yacc: 614; lex: 449; xml: 182; javascript: 79; asm: 8
file content (33 lines) | stat: -rw-r--r-- 667 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
pair coilpoint(real lambda, real r, real t)
{
  return (2.0*lambda*t+r*cos(t),r*sin(t));
}

guide coil(guide g=nullpath, real lambda, real r, real a, real b, int n)
{
  real width=(b-a)/n;
  for(int i=0; i <= n; ++i) {
    real t=a+width*i;
    g=g..coilpoint(lambda,r,t);
  }
  return g;
}

void drawspring(real x, string label) {
  real r=8;
  real t1=-pi;
  real t2=10*pi;
  real lambda=(t2-t1+x)/(t2-t1);
  pair b=coilpoint(lambda,r,t1);
  pair c=coilpoint(lambda,r,t2);
  pair a=b-20;
  pair d=c+20;

  draw(a--b,BeginBar(2*barsize()));
  draw(c--d);
  draw(coil(lambda,r,t1,t2,100));
  dot(d);

  pair h=20*I;
  draw(label,a-h--d-h,red,Arrow,Bars,PenMargin);
}