This is how the result looks:
The input includes:
- Two curves and the attraction point.
STEPS
In order to solve the problem, we will need the following steps:
1- Create tween curves between the two input curves
2- Divide the curves to create a first grid
3- Offset the grid in the normal direction and variable distance.
4- Populate a unit pattern between the two grids
SOLUTION
1- We will use the "TweenCrv" component to define the list of curves.
- Inputs "A" and "B" represent the two input curves.
- Input "F" represents the distance factor between 0.0 ( which create a tween curves that overlaps curve A) and 1.0 (overlaps curve B).
- We will need to generate a list of factors between 0.0 and 1.0 and we will use the "Range" component for it. Keep the default domain "D" (0-1):
2- For the grid, we can use GH standard divide curve, or use one the curve divide components in the PanelingTools for Grasshopper add-on as in the following.
3- We will need a surface to help us evaluate the normal offset directions of the grid points. We will use a PanelingTools component (ptGridSurface) to create a surface that goes through the grid of points. Make sure to set input "T" to "True".
Now that we have the normals, we need to decide the offset distance for each point using the point attractor. For that, we need to create the grid that represents the degree of attraction. We will do that using the PanelingTools "ptPointAtt" component. Note that the result "W" is always between 0-1.
We need to map the domain of values from 0-1 to 2-5. We will use and "Expression" component for that. Notice how the domain of values changed to 2-5.
The final step is to change the amplitude of the normal vectors based on the attraction and use to offset grid points. Make sure that the input to the GH "Move" component is compatible. In our example, we have two tree structure inputs. The first is for the geometry "G" and the second is for the vectors "T". We need to "Simplify" the "G" input to match the "T" input. We do that by "right-mouse click" the "G" input and select the "Simplify" option.
4- The final step involves creating the unit pattern and morph it between the two bounding grids. We will use the PanelingTools "ptMPanel3D" component. It takes two bounding grids "Gd1" and "Gd2", the unit shift in the "i" and "j" directions, and a list of strings representing unit connections: