10.014 CTD
  • Overview
  • Schedule
  • Administrative
    • Accessing Rhino remotely
    • Rhino for Mac
  • ASSIGNMENTS
    • Dates and rubrics
    • Generative design
      • Generative design
    • Parametric design
      • Parametric design
    • Simulated design
      • Simulated design
      • Simulated design
  • SESSION 1B
    • Computer Aided Design
    • Ranges and expressions 1
      • Ranges and expressions 2
      • Ranges and expressions 3
      • Ranges and expressions 4
      • Ranges and expressions 5
      • Ranges and expressions 6
  • SESSION 2A
    • Visual programming 1
      • Visual programming 2
      • Visual programming 3
      • Visual programming 4
    • Associative modelling 1
      • Associative modelling 2
      • Associative modelling 3
  • SESSION 2B
    • Logical Patterns 1
      • Logical patterns 2
      • Logical patterns 3
  • SESSION 3A
    • Spatial geometry 1
      • Spatial geometry 2
      • Spatial geometry 3
      • Spatial geometry 4
      • Spatial geometry 5
      • Spatial geometry 6
      • Spatial geometry 7
    • Curve geometry 1
      • Curve geometry 2
      • Curve geometry 3
      • Curve geometry 4
  • SESSION 3B
    • Surface geometry
    • Parametric modelling 1
      • Parametric modelling 2
      • Parametric modelling 3
      • Parametric modelling 4
  • SESSION 4A
    • Information nesting 1
      • Information nesting 2
      • Information nesting 3
    • Data landscapes 1
      • Data landscapes 2
      • Data Landscapes 3
      • Data landscapes 4
  • SESSION 4B
    • Mesh geometry 1
      • Mesh geometry 2
      • Mesh geometry 3
  • SESSION 5A
    • Space and time 1
      • Space and time 2
    • Modelling entities 1
      • Modelling entities 2
      • Modelling entities 3
  • SESSION 5B
    • Multibody dynamics 1
      • Multibody dynamics 2
    • Material elasticity 1
      • Material elasticity 2
      • Material elasticity 3
  • SESSION 6A
    • Form-finding 1
      • Form-finding 2
      • Form-finding 3
      • Form-finding 4
  • SESSION 6B
    • AI Image generation 1
      • AI Image generation 2
      • AI Image generation 3
  • APPENDIX
    • Spirograph 1
      • Spirograph 2
    • Curves
    • Swarm Intelligence 1
      • Swarm Intelligence 2
    • Hybrid programming 1
      • Hybrid programming 2
Powered by GitBook
On this page
  • Procedural Geometry
  • Conclusions
  1. SESSION 2A
  2. Associative modelling 1

Associative modelling 3

Symbolic expressions to epicycles

PreviousAssociative modelling 2NextLogical Patterns 1

Last updated 9 months ago

Procedural Geometry

With the basic visual programming mechanics out of the way, let’s experiment with generating geometry via composite expressions. We will develop a family of curves by composing cyclic motions; often known as epicycles []. The aim this section is to create functionality beyond what is offered by standard CAD drawing commands; to explore concepts pertaining ranges and expressions visualized as point sequences; and to practice on both computing as well as geometry.

Generalized Circles

The equation [ x, y ] = r * [ cos( 2π * c * t + p ), sin( 2π * c * t + p ) ] represents the generalized form of a circle, where “r” is the radius, “c” is the angle spanned, and “p” is the start angle. This form is also used for expressing sinusoidal waveforms []; so it may be familiar from physics, but using the names “amplitude”, “period” and “phase”. Geometrically, this allows us to control the circle’s size as well as generating circular arcs instead of complete circles.

Epicyclic Curves

Beyond Epicycles

We may consider also using the “z” coordinate of the points to create beautiful three dimensional curves. At this point we no longer follow a known formula of a classic mathematical curve but begin to discover or invent our own. By just multiplying the coordinates of two different cycles we can produce enormously complex but always consistent and smooth curves. Of course we may apply any other expression for the “z” coordinate independent of the already computer values.

Shape Replication

We may also use the sequence of generated points to replicate, in the sense of copy and paste, geometries that require a centre or pivot point. In the figure below we use a sphere centred about each point and create a “thickened” version of the curve.

Cross Linking

An alternative strategy is to produce pairs of points such that we can connect them across using lines, or any geometry that requires two points as inputs. This produces a twisting surface-like geometry instead of single smooth curve. In the demo below we create a second point and use addition to produce a similar sequence of points such that the end results is somewhat regular.

Visual Attributes

The “custom display” component allow us to override the default red colour used for automatically displaying geometric components’ output parameters. We can supply any geometry as well as a colour for each, to produce a customized colour visualization in the viewport.

In the example below we replicate a hexagonal shape per point generated and link its radius to the normalized range. This causes the polygon’s radius increase along the curve progression. The reason the component is orange is because the first value of the normalized range is zero, which is an invalid radius value.

Conclusions

In this session we practiced with generating and transforming ranges using visual programming expressions. The objective was to build some familiarity with the way component and wire graphs work. We skipped several fine details about how certain operations are performed. Those will be constructively developed over the next few weeks. The import point is to experience hands-on first some of the interesting facets of design computation.

What is to appreciate about this mode of work is the ability to expand computation to potentially incredibly large number of iterations transparently and with ease. There is nothing preventing us from expanding a series to millions of operations by just increasing a “count” parameter. The computer may just slow down a bit as it runs out of resources. The point is that we don’t need to care about “how many” any longer. We are free from the burden of manual calculation.

While the geometric modelling experiments begun with conventional well-known shapes, namely trigonometric functions expressing themselves as regular polygons and circles, we begun departing towards more interesting and unforeseen results by just experimenting with linking parameters; perhaps they were not meant to be linked. The point here is unique outcomes, as opposed to generic or undifferentiated ones, often come through curiosity and experimentation.

Students interested in further exploring a family of curves—roulettes—that are related to epicycles may try out the following optional Spirograph exercise [>]

Replicating the equations once more and adding the output “x” and “y” coordinates produces an amazing variety of epicyclic shapes resembling planetary motion or the familiar spirograph curves []. You can consider this result as progressively rotating about two different size circles simultaneously. It is also possible replicate the same strategy more than two times. Notice how quickly we run out of resolution requiring additional points for the curve to keep being smooth as we increase the number of turns around the secondary cycle.

The final example demonstrates how to apply visual attributes using the “HSL” colour and “custom display” components. Hue, saturation and lightness [] is a useful colour representations. It is similar to “RGB” but rather more intuitive because a colour’s tint is controlled by one parameter instead of three. All “h”, “s” and “l” colour components take values in the “[0, 1]” range. Therefore to span the entire range of all colour tints, we can just use the normalized range.

>
>
>
>
22KB
1_3_GeneralisedCircle.gh
29KB
2_Epicycle.gh
28KB
3_1_BeyondEpicycles.gh
24KB
3_2_ShapeReplication.gh
28KB
3_3_CrossLinking.gh
27KB
3_4_VisualAttributes.gh