18+17+16+...+2+1 intersections which amounts to 190).
The most obvious performance improvement is to build a 3D tree of all the objects so you can ignore a lot of intersection tests from the get-go (won't help if the objects are wound around each other though). Then there's sometimes tricks you can use to simplify the geometry. Intersecting two Pipes as Breps is FAR more expensive than finding the the closest points between two center curves.
The main problem with these optimizations is that it's very hard to generalise them so that they can be implemented as a Grasshopper component.
However I suspect that even a slow algorithm would be a welcome addition, I'll mull it over and see if I can find some time to add some collision test components.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
1D when it comes to a location on a surface or a curve. If a 3D point shares a location on a surface we can represent it by means of the U and V co-ordinates of that surface.
In your example above the 4 surface corners are {2,2.5,0}, {17, 2.5, 0}, {17, 19, 0} and {2,19,0}. Unless you reparametrise the domains they will typically take the same domains as the curves that constructed them in this particular case the lengths (but these curves are only that length at the edges and only when you created the surface).
So the U domain is 0 to 15 (17-2) and the V domain is 0 to 16.5 (19-2.5). Even if you transformed the surface to another location or another shape these domains will not change and therefore the UV co-ordinate will not change. If you reparemterise the surface then the domains are set to 0 and 1 in both directions and this might be easier to work with. You can think of them as a percentage then, a UV location of {0.5, 0.5} of a reparameterised surface will always be in the middle of the 2D space.
All points on a surface in 2D have a 3D space co-ordinate as well, but not all 3D points have a 2D co-ordinate. This is why we need to use the Surface CP to get a UV value to evaluate a surface at a given point.
Incidently the 1D co-ordinate of a curve is represented by the parameter t
…
I am starting on a project where I want to create a scale texture on a 3 dimensional surface. Any ideas on how to get started ?
Each scale has to be a 3d object.
d the obvious, he he).
2. Either attempt to get planar modules (via Kangaroo1/2). For instance K2 can quite effectively achieve planarity on quads > then your modules are rather easy to "derive" on a per quad basis.
3. Or (more complex in manufacturing) compose your modules out of planar "trapezes" (8 per module = 16 per double combo). This gives you far more freedom at the cost of assembling them properly. If (theoretically) these are made via some "large" scale 3d printing that is not a big issue ... but you don't have this option anyway.
BTW: within a scale of 1 to 10 rate your experience with GH.…