summaryrefslogtreecommitdiff
path: root/graphics/asymptote/examples/NURBScurve.asy
blob: 9ad121ecc65256e707fb6e6cbcb0367672d18741 (plain)
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
34
import three;

size(10cm);

currentprojection=perspective(50,80,50);

// Nonrational curve:
// udegree=3, nu=6;
real[] knot={0,0,0,0,0.4,0.6,1,1,1,1};

triple[] P=
  {
   (-31.2061,12.001,6.45082),
   (-31.3952,14.7353,6.53707),
   (-31.5909,21.277,6.70051),
   (-31.4284,25.4933,6.76745),
   (-31.5413,30.3485,6.68777),
   (-31.4896,32.2839,6.58385)
  };

draw(P,knot,green);

// Rational Bezier curve:
// udegree=3, nu=4;
real[] knot={0,0,0,0,1,1,1,1};
path3 g=scale3(20)*(X{Y}..{-X}Y);
triple[] P={point(g,0),postcontrol(g,0),precontrol(g,1),point(g,1)};

// Optional weights:
real[] weights=array(P.length,1.0);
weights[2]=5;

draw(P,knot,weights,red);