diff --git a/resources/transbeam.asy b/resources/transbeam.asy new file mode 100644 index 0000000..8e0b935 --- /dev/null +++ b/resources/transbeam.asy @@ -0,0 +1,43 @@ +real triangleRadius = 100; +real borderInset = 6; + +real circleRadius = 12; +real bigBeamRadius = 36; +real smallBeamRadius = 25; +real beamCount = 12; +real beamAngle = 7; +real starterBeamAngle = 16; + +pen transBlue = rgb("55cdfc"); +pen transPink = rgb("f7a8b8"); + +pen bigBeamColor = transPink; +pen smallBeamColor = transBlue; + +path borderTriangle = dir(90)--dir(210)--dir(330)--cycle; +path outerBorder = scale(triangleRadius)*borderTriangle; +fill(outerBorder, white); + +path beam(real angle, real innerRadius, real outerRadius) { + return arc((0,0), outerRadius, angle/2, -angle/2)--arc((0,0), innerRadius, -angle/2, angle/2)--cycle; +} + +path bigBeam = beam(beamAngle, circleRadius, bigBeamRadius); +path smallBeam = beam(beamAngle, circleRadius, smallBeamRadius); + +for (int i = 0; i < beamCount; ++i) { + if (i > 0) { + fill(rotate(360*i/beamCount)*bigBeam, bigBeamColor); + } + fill(rotate(360*(i+0.5)/beamCount)*smallBeam, smallBeamColor); +} + +pair starterBeamTrianglePoint(real angle) { + pair circlePoint = circleRadius*dir(angle); + return intersectionpoint(circlePoint--(circlePoint+(triangleRadius,0)), outerBorder); +} + +fill(starterBeamTrianglePoint(-starterBeamAngle/2)--arc((0,0), circleRadius, -starterBeamAngle/2, starterBeamAngle/2)--starterBeamTrianglePoint(starterBeamAngle/2)--cycle, bigBeamColor); + +draw(outerBorder, transPink+(2*borderInset)); +draw(scale(triangleRadius-borderInset)*borderTriangle, transBlue+borderInset); diff --git a/static/transbeam.svg b/static/transbeam.svg new file mode 100644 index 0000000..59d517c --- /dev/null +++ b/static/transbeam.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file