# Weave

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-M55Ju2J1xeTDEnDfAHo%2F-M55MlvlOyoYeEj3MdXu%2Fweave1_2020-04-17_09-51-34.png?alt=media\&token=c6405f60-1dde-4c8e-9630-92fce21002af)

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-M55Ju2J1xeTDEnDfAHo%2F-M55MHhfsnFsaStxRpkw%2Fweave1_2020-04-17_09-48-29.png?alt=media\&token=9c1aa88a-9357-49fc-87cf-1231b9f43b03)

{% file src="<https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-M55Ju2J1xeTDEnDfAHo%2F-M55Kukz_wHwsxr3_WyS%2Fweave1.zip?alt=media&token=2025df03-1b17-4e1d-8442-c01c8cba04be>" %}
ver 2.7
{% endfile %}

```d

//Sample Surface
sr = Surface.ByLoft([NurbsCurve.ByPoints(Point.ByCoordinates
(-50,[0,12,1,3],[0,25,50,75])),NurbsCurve.ByPoints
(Point.ByCoordinates(50,[0,-8,1,4],[0,30,62,75]))]);

//Image repetition
n = 7;

//Replicating brightness data
b1 = Math.Floor(Color.Brightness(Image.Pixels(img,8,8)));
b2 = List.Flatten(List.OfRepeatedItem(List.Flatten
(List.OfRepeatedItem(b1<1>,n)<1>,-1),n),1);

// Parameters on surface
c = 0..1..# (8*n);

//Shifting points by brightness normal to surface
p1 = Surface.PointAtParameter(sr,c<1>,c<2>);
v1 = Surface.NormalAtPoint(sr,p1);
v2 = v1.Scale(b2==0?-1:b2);
v3 = List.Transpose(v1).Scale(b2==0?1:-1);
p2 = p1.Add(v2);
p3 = List.Transpose(p1).Add(v3);

//Loft based on curve connecting points
n1 = List.Flatten(NurbsCurve.ByPoints([p2,p3]),-1);
n2 = Circle.ByPlaneRadius(n1<1>.PlaneAtParameter(0..1..#60)<2>,0.25);
n3 = Solid.ByLoft(n2,n1);
```

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-M588kPknHCmShr2XK53%2F-M588x0HU1JGKXsQl-KA%2Fweave2_2020-04-17_10-38-01.png?alt=media\&token=25d52933-ab21-4ed6-8e7a-6d9a11002535)

{% file src="<https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-M588kPknHCmShr2XK53%2F-M589I5oVQTHX6KtjOQ5%2Fweave2.zip?alt=media&token=412b8e82-084e-495f-b629-1511684db8b3>" %}
ver 2.7
{% endfile %}

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-M55Ju2J1xeTDEnDfAHo%2F-M55KJFcim5AN1DWszqy%2Fweave_2020-04-17_05-51-17.png?alt=media\&token=371cf541-0e32-4379-b0b2-6b920f69bcf6)

{% file src="<https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-M55Ju2J1xeTDEnDfAHo%2F-M55L144wx8TrUUUOTUR%2Fweave.zip?alt=media&token=e6bd9602-f2fc-4471-a009-def03f145624>" %}
ver 2.7
{% endfile %}

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-M55Ju2J1xeTDEnDfAHo%2F-M55KWbE--HQtXYnkDqI%2Fweave.jpeg?alt=media\&token=d7b297c6-97f7-467e-8555-cbaa76743a30)
