British Museum Great Court
Roof Surface Geometry
ChrisDeakin2001.pdf
11MB
PDF
THE ANALYTIC AND NUMERICAL DEFINITION OF THE GEOMETRY OF THE BRITISH MUSEUM GREAT COURT ROOF
BritishMuseumGreatCourtRoof-1.zip
2KB
Binary
Dynamo 2.9
1
def z (x:var[]..[], y:var[]..[])
2
{
3
a = 22.245;
4
b = 36.625;
5
c = 46.025;
6
d = 51.125;
7
8
//λ
9
lm = 0.5;
10
11
//μ
12
mu = 14.0;
13
14
hcen = 20.955;
15
hedg = 19.71;
16
r = Math.Sqrt(Math.Pow(x,2)+Math.Pow(y,2));
17
18
//θ
19
the = Math.Asin(y/r);
20
21
//η
22
eta = (1-(x/b)) * (1+(x/b)) * (1-(y/c)) * (1+(y/d))/
23
(1-((a*x)/(r*b))) * (1+((a*x)/(r*b))) * (1-((a*y)/(r*c))) * (1+((a*y)/(r*d)));
24
25
//Ψ
26
psi = (1-(x/b)) * (1+(x/b)) * (1-(y/c)) * (1+(y/d));
27
28
//α
29
alp = ((r/a)-1) * psi;
30
31
//β
32
bet = (1-(a/r))/
33
(((Math.Sqrt(Math.Pow(b-x,2) + Math.Pow(c-y,2))) / ((b-x)*(c-y))) +
34
((Math.Sqrt(Math.Pow(b-x,2) + Math.Pow(d+y,2))) / ((b-x) * (d+y))) +
35
((Math.Sqrt(Math.Pow(b+x,2) + Math.Pow(c-y,2))) / ((b+x) * (c-y))) +
36
((Math.Sqrt(Math.Pow(b+x,2) + Math.Pow(d+y,2))) / ((b+x)*(d+y))));
37
38
z1 = ((hcen - hedg)*eta) + hedg;
39
z2 = alp * (((1-lm)*(((35.0+(10.0*psi))*0.5*(1+Math.Cos(2*the)))+(12.0*(0.5*(1-Math.Cos(2*the))+Math.Sin(the)))+((7.5+(12.0*psi))*(0.5*(1-Math.Cos(2*the))-Math.Sin(the)))-1.6))
40
- ((5.0*(1+Math.Cos(2*the)))+(10.0*(Math.Pow((0.5*(0.5*(1-Math.Cos(2*the))+Math.Sin(the))),2))*(1.0-(3.0*alp))))
41
+ (2.5*(Math.Pow((0.5*(0.5*(1-Math.Cos(2*the)-Math.Sin(the)))),2))*(Math.Pow(((r/a)-1),2))));
42
z3 = bet * ((lm*((1.75*(1+Math.Cos(2*the)))+(1.5*(1-Math.Cos(2*the)))+(0.3*Math.Sin(the))))
43
+ (1.05*(Math.Pow(Math.E,-mu*(1-(x/b)))+Math.Pow(Math.E,-mu*(1+(x/b))))*(Math.Pow(Math.E,-mu*(1-(y/c)))+Math.Pow(Math.E,-mu*(1+(y/d))))));
44
return = z1 + z2 +z3;
45
};
46
47
x =-36.6..36.6..#30;
48
y = -51.125..46.025..#30;
49
p = NurbsSurface.ByPoints(Point.ByCoordinates(x<1>,y<2>).Translate(Vector.ByCoordinates(0,0,z(x<1>,y<2>)))).Trim(Plane.ByOriginNormal(Point.ByCoordinates(0,0,19.71),Vector.ZAxis()),Point.Origin());
Copied!
BritishMuseumGreatCourtRoof-2.zip
2KB
Binary
Dynamo 2.7
1
cen1 = Circle.ByCenterPointRadius(Point.Origin(),15);
2
edg1 = Rectangle.ByWidthLength(73,97).Translate(Vector.YAxis(),3);
3
pnt1 = (edg1.Explode())<1>.PointAtParameter((0..1..#10)<2>);
4
pnt2 = cen1.ClosestPointTo(pnt1);
5
pnt3 = Line.ByStartPointEndPoint(pnt1,pnt2).PointAtParameter(0.5).Translate(Vector.ZAxis(),6);
6
pnt4 = List.Transpose(Arc.ByThreePoints(pnt1,pnt3,pnt2))<1>.PointAtParameter((0..1..#10)<2>);
7
pnt5 = Point.PruneDuplicates(List.Flatten(pnt4<1>,-1),0.001);
8
srf1 = Surface.ByLoft(List.AddItemToFront(edg1,List.RestOfItems(NurbsCurve.ByControlPoints(pnt5,3,true))));
Copied!
Last modified 1yr ago
Copy link