# Offset Array with defined rotation transforms

I’m trying to create a tool to build to create drawings of speaker line arrays. each element has a known rotation from one unit to another. I can do this manually for each arrangement but I thought it might be interesting to create a grasshopper workflow to automate part of the process, but I’m clueless as to where to start, so if anyone can point me in the right direction that would be appreciated.

.

Colin

A simple way to do this is by drawing a curve and create horizontal planes. Orient the speaker from let’s say XY plane to the frames on the curve.

Start by posting a file with some data and./or geometry.

P.S. I’m still not sure exactly what you want but on reflection, I realized that the code I posted earlier doesn’t really let you control the angles between rectangles. (NOTE: closer inspection of your image shows that those are not rectangles?)

So I modified it as follows:

• Two different ways of generating the list of angles, Random and Series. Or you could create the list manually or by some other means.

• An effort to limit the number of “rectangles” when rotation causes overlap (more than 360 degrees).

rotate_2023Jan12b.gh (24.7 KB)

Hi Joseph, thanks for looking at this. The bit I’m struggling with is the rotation of the elements relative to each other, not to a fixed point. In reality the elements are speaker cabinets which are linked together. I was thinking a lookup table that the array index indicated the angle that element was transformed by.

In real life this seems to be assembled with fixed length plates between the speakers.

You can use Kangaroo to simulate this.

Below is an example in 2D where you can set the segment length of the connectors. You could set individual lengths by providing a list of lengths, one for each connector plate.

speakers.gh (35.9 KB)

No code or geometry again… This problem description is terrible and useless. Sorry I bothered.

Thanks Martin this looks promising, I’ll need to spend a bit of time looking at how this works.

1 Like