Optimizing for specified edgelengths - Grasshopper2024-03-29T12:36:16Zhttps://www.grasshopper3d.com/forum/topics/optimizing-for-specified-edgelengths?groupUrl=kangaroo&commentId=2985220%3AComment%3A1119763&groupId=2985220%3AGroup%3A120977&feed=yes&xn_auth=noHello Daniel,
This is exactly…tag:www.grasshopper3d.com,2020-04-08:2985220:Comment:20573672020-04-08T17:23:49.918ZBart Hhttps://www.grasshopper3d.com/profile/RobinCoussens
<p><span>Hello Daniel,</span></p>
<p><span>This is exactly what i’m trying to do. However, it uses some old Kangaroo 0.098 which I can’t use with Kangaroo2. Is there an alternative approach I could use?</span></p>
<p><span>Thanks</span></p>
<p><span>Hello Daniel,</span></p>
<p><span>This is exactly what i’m trying to do. However, it uses some old Kangaroo 0.098 which I can’t use with Kangaroo2. Is there an alternative approach I could use?</span></p>
<p><span>Thanks</span></p> Oh, and Spiderweb has cluster…tag:www.grasshopper3d.com,2014-08-22:2985220:Comment:11197742014-08-22T00:14:32.325Ztazhttps://www.grasshopper3d.com/profile/taz
<p>Oh, and Spiderweb has clustering capabilities. I keep meaning to play with it too.</p>
<p><a href="http://www.grasshopper3d.com/photo/clustering2" target="_blank">http://www.grasshopper3d.com/photo/clustering2</a></p>
<p></p>
<p>Oh, and Spiderweb has clustering capabilities. I keep meaning to play with it too.</p>
<p><a href="http://www.grasshopper3d.com/photo/clustering2" target="_blank">http://www.grasshopper3d.com/photo/clustering2</a></p>
<p></p> Haha, link is slow or not wor…tag:www.grasshopper3d.com,2014-08-21:2985220:Comment:11195002014-08-21T23:55:38.323Ztazhttps://www.grasshopper3d.com/profile/taz
<p>Haha, link is slow or not working, but I'm 90% sure I've got that paper too!</p>
<p>Cheers,</p>
<p>taz</p>
<p>Haha, link is slow or not working, but I'm 90% sure I've got that paper too!</p>
<p>Cheers,</p>
<p>taz</p> Here's the actual paper
Trian…tag:www.grasshopper3d.com,2014-08-21:2985220:Comment:11197732014-08-21T23:35:06.513ZDaniel Pikerhttps://www.grasshopper3d.com/profile/DanielPiker
<p>Here's the actual paper</p>
<p><a href="ftp://cg7.ice.cycu.edu.tw/%E5%9C%96%E5%AD%B8%E7%B5%84%E5%82%99%E4%BB%BD%E8%B3%87%E6%96%99/%E5%9C%96%E5%AD%B8%E7%B5%84/%E4%B8%81%E7%90%A8%E6%A1%93/meeting/7/Triangle%20Surfaces%20with%20Discrete%20Equivalence%20Classes.pdf" target="_blank">Triangle Surfaces with Discrete Equivalence Classes</a></p>
<p>Here's the actual paper</p>
<p><a href="ftp://cg7.ice.cycu.edu.tw/%E5%9C%96%E5%AD%B8%E7%B5%84%E5%82%99%E4%BB%BD%E8%B3%87%E6%96%99/%E5%9C%96%E5%AD%B8%E7%B5%84/%E4%B8%81%E7%90%A8%E6%A1%93/meeting/7/Triangle%20Surfaces%20with%20Discrete%20Equivalence%20Classes.pdf" target="_blank">Triangle Surfaces with Discrete Equivalence Classes</a></p> Oh yeah, Daniel, this is exac…tag:www.grasshopper3d.com,2014-08-21:2985220:Comment:11197632014-08-21T23:07:28.157Ztazhttps://www.grasshopper3d.com/profile/taz
<p>Oh yeah, Daniel, this is exactly the same presentation you linked to but it includes presentation notes. Not sure if you've seen this version.</p>
<p></p>
<p></p>
<p>Oh yeah, Daniel, this is exactly the same presentation you linked to but it includes presentation notes. Not sure if you've seen this version.</p>
<p></p>
<p></p> The next level of clustering…tag:www.grasshopper3d.com,2014-08-21:2985220:Comment:11197592014-08-21T22:59:29.967Ztazhttps://www.grasshopper3d.com/profile/taz
<p>The next level of clustering is, of course, surface paneling (after a structural member offset). Grouping surface panels types can get even more complicated when you allow joint widths to vary.</p>
<p><a href="http://www.grasshopper3d.com/forum/topics/kmeans-1" target="_blank">http://www.grasshopper3d.com/forum/topics/kmeans-1</a></p>
<p></p>
<p>The next level of clustering is, of course, surface paneling (after a structural member offset). Grouping surface panels types can get even more complicated when you allow joint widths to vary.</p>
<p><a href="http://www.grasshopper3d.com/forum/topics/kmeans-1" target="_blank">http://www.grasshopper3d.com/forum/topics/kmeans-1</a></p>
<p></p> I upload my definition, but i…tag:www.grasshopper3d.com,2014-08-02:2985220:Comment:11095832014-08-02T16:28:15.259Zsas somhttps://www.grasshopper3d.com/profile/sassom
<p>I upload my definition, but it's a bit more primitive to what Daniel just uploaded.</p>
<p>The main difference is that I apply the sets of groups and the lenghts manually, which is definitely not the way of finding a solution. :/</p>
<p></p>
<p>I don't really have a method of how to choose the groups. Daniel's script averages the original mesh's edgelenghts which is definitely better than my solution.</p>
<p>An iterative method would be a good way to go. I think the solution would be an…</p>
<p>I upload my definition, but it's a bit more primitive to what Daniel just uploaded.</p>
<p>The main difference is that I apply the sets of groups and the lenghts manually, which is definitely not the way of finding a solution. :/</p>
<p></p>
<p>I don't really have a method of how to choose the groups. Daniel's script averages the original mesh's edgelenghts which is definitely better than my solution.</p>
<p>An iterative method would be a good way to go. I think the solution would be an optimization algorghythm, which does somehow recreate the groups, and the goal lenghts after every step.</p>
<p></p>
<p></p>
<p></p> Dear Daniel,
Thank you for y…tag:www.grasshopper3d.com,2014-08-02:2985220:Comment:11095812014-08-02T15:16:36.501Zsas somhttps://www.grasshopper3d.com/profile/sassom
<p>Dear Daniel,</p>
<p></p>
<p>Thank you for your script, this is something I was looking for!</p>
<p></p>
<p>Although I will definitely have to work on a method with the iterations.</p>
<p>The key is definitely an automatized method how we group the edges and what lenght do we apply to them.</p>
<p>This is a good starting point though, thank you!</p>
<p></p>
<p></p>
<p>Dear Daniel,</p>
<p></p>
<p>Thank you for your script, this is something I was looking for!</p>
<p></p>
<p>Although I will definitely have to work on a method with the iterations.</p>
<p>The key is definitely an automatized method how we group the edges and what lenght do we apply to them.</p>
<p>This is a good starting point though, thank you!</p>
<p></p>
<p></p> It's a very interesting quest…tag:www.grasshopper3d.com,2014-08-01:2985220:Comment:11094282014-08-01T13:16:03.181ZDaniel Pikerhttps://www.grasshopper3d.com/profile/DanielPiker
<p>It's a very interesting question, and a difficult one to solve well.</p>
<p>Here's a starting point - which sorts and divides the initial edge lengths into a number of groups, then makes each edge a spring with its rest length the average of its group.</p>
<p>The bar graph component shows how the edge lengths go from 460 different values to 10 clusters of near identical lengths:…</p>
<p></p>
<p>It's a very interesting question, and a difficult one to solve well.</p>
<p>Here's a starting point - which sorts and divides the initial edge lengths into a number of groups, then makes each edge a spring with its rest length the average of its group.</p>
<p>The bar graph component shows how the edge lengths go from 460 different values to 10 clusters of near identical lengths:</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2768906013?profile=original" target="_self"><img width="721" src="http://storage.ning.com/topology/rest/1.0/file/get/2768906013?profile=RESIZE_1024x1024" width="721" class="align-full"/></a>The more different edge lengths you allow, the less the geometry has to change from the original.</p>
<p>When the mesh is triangulated, all the edge lengths affect each other, and prescribing the edge lengths exactly is not always possible.</p>
<p>The simple approach presented here is just a start though - there are other more complex strategies that could give closer approximations.</p>
<p>For instance, instead of just sorting, dividing and averaging the edge lengths once at the start, you can do this iteratively to find the best set of edge lengths to minimize the error.</p>
<p>Here's a presentation of one approach to this:</p>
<p><a rel="nofollow" href="http://faculty.cs.tamu.edu/schaefer/research/slides/equivalence.pdf" target="_blank">http://faculty.cs.tamu.edu/schaefer/research/slides/equivalence.pdf</a></p>
<p>I've been thinking for a while about trying to implement something closer to that - maybe it is possible even with just Grasshopper components and Hoopsnake for iteration...</p>
<p></p>
<p>and if such a tile clustering tool needs an animal name - I think it would have to be the <em><strong>ClusterDuck</strong></em> ;)</p> Thank you for your answer!…tag:www.grasshopper3d.com,2014-07-30:2985220:Comment:11086802014-07-30T23:31:53.787Zsas somhttps://www.grasshopper3d.com/profile/sassom
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2768903789?profile=original" target="_self"></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2768903789?profile=original" target="_self"></a></p>
<p>Thank you for your answer!</p>
<p>In case of a surface, where the curvature is different in every point, the edgelenghts must have some transitions between them.<br></br>I could say, if the mesh has 100 edges, the optimized mesh would result maybe in 100 different…</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2768903789?profile=original" target="_self"></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2768903789?profile=original" target="_self"></a></p>
<p>Thank you for your answer!</p>
<p>In case of a surface, where the curvature is different in every point, the edgelenghts must have some transitions between them.<br/>I could say, if the mesh has 100 edges, the optimized mesh would result maybe in 100 different edgelenths.</p>
<p>When I start to determine different groups and apply lenghts to them, I restrain the freedom of the transition between.<br/>I mean, of course this would be the manual solution, but it would take forever to find a good combination, because the number of solutions could really be minimal. Especially, if the surface has restrictions, like fixed contours.<br/>I think applying the edgelenths manually would take forever to get a solution.</p>
<p>But there should be a minimal number of edgelenths, by which the surface can be solved. <br/>I'd like to create a script where I only input the edgelenghts, and the program only applies these values to the edges, so it tries to determine the optimal length of the specified ones for every edge.<br/>I could also say, that the transition between the edgelenthts would be optimized to certain numbers.</p>
<p>Any suggestions would be appreciated!</p>
<p>I'm attaching some pictures for illustration. It shows analysis of the edgelenghts. The first one is what an optimized mesh looks like, and the second one is something what I'd like to achieve.</p>
<p><br/><a href="http://storage.ning.com/topology/rest/1.0/file/get/2768903789?profile=original" target="_self"><img width="686" src="http://storage.ning.com/topology/rest/1.0/file/get/2768903789?profile=RESIZE_1024x1024" width="272" class="align-left" height="159"/></a></p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2768903918?profile=original" target="_self"><img width="263" src="http://storage.ning.com/topology/rest/1.0/file/get/2768903918?profile=RESIZE_320x320" width="263" class="align-left"/></a></p>