The construction is: take the mass center, move it lower, create 3 wires (forming a tetrahedron), then truncate the tetrahedron with the mirror plane (or better, the plane at which the joint will be, behind the mirror frame), the intersections are the anchor points…
It works! Kangaroo confirm it.
It is easier than I expected.
Still, this require precise placement of the 3 joints in the backside of the mirror (different for each mirror and depending on the structure above), and there there are no means to correct any error later.

My previous solution “just” needs the bracket to be decently aligned with the mass center and being “uphill” , but after that with the 2 main wires you can always correct the position. You can prepare the mirrors without even knowing the final structure layout…
It still have a problem, if the top structure beams are aligned with the “uphill plane”, you won’t be able to find proper anchor points…

in case the third point risks to be difficult to attach because there’s no anchor point in the roof, you might split the third vector/wire into two, but attached to the mirror at the same point. This would give you a precise solution, like Riccardo calculated, but leaves you more flexibility for adapting to the given roof.

your script is great, the inclusion of the gravity force with kangaroo is amazing. I’m still new to this plugin and I learned so much already.

In your solution, the attachment points on the mirror are given by the mass center. However, in the case of my mirrors, these points are already predetermined ( I can’t change their position, the product is manufactured this way).

I worked with your script and tried to find a solution with these points being given. The vectors for the ropes are given by the vector attachment point → mass centre. The outcome is not very far from the initial position though is not perfect. I wonder if this comes from the fact that the beams are also predefined and the position of the mirror will never be exactly as intended… But I’m wrong… I’ll keep trying, here’s my modified script hanging mirrors 3_alek.gh (51.1 KB)

This information should have come on your first, opening post …
I think this “constraint” will mess up almost everything, every other thing that was discussed here.

… maybe we can workaround it by adding wires that connect from wire to wire… maybe.

I grant you that for the items you generated the middle wire is in tension, but my point was that for a slightly different configuration it may not be.

I think you have a mistaken expectation of how the weight of the mirror is supported by the three wires. I took one of your examples and calculated the tensions in the wires:

Wire 1 takes approx. 81% of the weight, wire 2 takes 6.8%, wire 3 takes 12.1%. So in this configuration wire 3 is actually taking nearly twice as much weight as wire 2. This is necessary for the mirror to be in equilibrium.

M (and also A) need to fall inside BC base. That’s required. Absolutely. My script work this way.
While M and A fall inside BC base, all three wires will always be in a stretched state/stress.

This is the geometrical construction with a pre-made set of 3 generic anchors on the mirror:
you need to use a 4th wire to “wrap up” the 3 main wires to offset the balancing.

hanging mirrors 3_alek 2.gh (37.5 KB)
Kangaroo still confirm it all, so I believe it should work.
(I didn’t even check, kangaroo “Length” goal object even works for compression, but I believe there are only stretching with this definition…)
Still, this method needs a lot of correct positioning, wire lengths, etc etc…
I have never worked with steel wires and such things, I have no idea how hard/easy is to set specific lengths, how big are the joints (0 in kangaroo) … good luck with this!

we make 2 truncated tetrahedrons (with the vertex on the vertical of mass center) that have a common base (or that have a congruent intersection in a specific plane).

We move the mass center M low, into a virtual point “L” and cast rays through the 3 pre-determined anchors on the mirror, finding intersection with the top structure plane. Created 1st set of 3 lines.
Ideally the 3 points found this way would be good, if we had a full/continuous concrete roof.
Then, as we want to still use wires and not sticks (like tensegrity), we know we want the upper base larger than this. So we cast the planar rays until we find an intersection with the top frame lines, new 3 points, final anchors to the structure.
Then, we connect those 3 points to another virtual point that is higher than “L”, and make 3 lines going to the roof anchors. Created 2nd set of 3 lines.
We intersect the first set with the second set to find out the “truncating base” of the 2 tetrahedrons.

Oh right, we can check how much wire lengths errors would affect the positioning by doing this:

Thanks yet again for your great script and explication, I understand much better what we are dealing with in terms of forces and geometry. Am I correct to assume that there is no possible solution (other than using the triangle) to find such 3 anchor points on the beams to achieve the desired mirror position because the ceiling structure is not a continous plane?

I’ll start thinking about a possible way to include the internal triangle. I guess it could be possible to integrate some wire rope clamps with holes for the second rope. The wire rope, especially the thinner one, gives some flexibility, so it should be feasible, though, as you said it generates a more complex structure.

I wonder what would the best approximation without using the internal triangle. I tried the following approxiamation, but the final result is nothing like in the project.

I think there are no possible approximations.
Go with a method that theoretically grants you correct positioning and then your errors in the placement (there will always be some error…) will be the “approximations” …

I would go with something like the bracket one, where you can prepare the mirror before getting in the location/stand.
Or the first one i mentioned.