Digital Design Methods I

Assignment 02

Associated Lecture -- Grasshopper Introduction.

NameDate
Release2025-09-30
Submission2025-10-08 11:59

Submission(s) beyond the deadline will not be counted towards your final grade.

After the first class on Grasshopper Introduction, you should now have a basic understanding of the Rhino-Grasshopper platform and how Grasshopper works as a procedural programming language. This assignment aims to help you master the "procedural" idea and how data is managed/manipulated through the flows of operations. With a bit of effort, you can trust yourself to learn even more than you expected.

Set the Rhino model units to meters before you begin modeling.

Part A: Geometry Operation (3 pts)

In the provided Assignment_02.3dm file, you will find several titled Rhino commands. Your task for this assignment is to create the corresponding Grasshopper scripts that conduct the same tasks.

For the tasks in this part, you need to reference objects from Rhino into Grasshopper before working with the Grasshopper components.

Try to discover similar commands by typing the keywords (double-click and type). To get where a component is located in the panel, press Ctrl + Alt + Mouse-Left-click on the component.

Task 00: Rotation (Example)

In this task, we rotate an object lying on the ground until it is visible in both the Front and Right views. This serves as an example of how to properly complete a Grasshopper assignment.

  1. Input: Use a Brep component to register the Rhino object (letter T);
  2. Process:
    • P1: Rotate the object so that the letter is visible in the Front view.
    • P2: From the result of P1, further rotate the object so that it is visible in the Right view.
    • P3: Compare the two cases:
      • Rotating first around the Z-axis and then around the X-axis.
      • Rotating first around the X-axis and then around the Z-axis.

Task 01: Non-uniform Scale (1 pt)

  1. Input: Use a Brep component to reference the Rhino object (a box).
  2. Process: Find the appropriate Grasshopper component to scale the box so that its dimensions change from (10 m, 10 m, 10 m) to (15 m, 20 m, 30 m).

Task 02: Offset & Rebuild (1 pt)

  1. Input: Use a Curve component to reference the Rhino object (a curve).
  2. Process:
    • P1: Offset the curve on both sides with a distance of 1 m. (0.5 pt)
    • P2: Rebuild the two offset curves with the following parameters, respectively: (0.5 pt)
      • ptNum = 20; degree = 2
      • ptNum = 10; degree = 1
  3. Note: For both processes, you should not bake any objects into Rhino.

Task 03: Divide & Move (1 + 1 pt)

  1. Input: Use a Curve component to reference the Rhino object (a curve).
  2. Process:
    • P1: Divide the circle into 12 equally spaced points. (0.5 pt)
    • P2: Using the bottom point of the triangle as a reference, move the triangle object to each of the 12 points. (0.5 pt)
    • P3:(0.5 Bonus) Align the triangles so that all their tips point toward the center of the circle.
    • P4:(0.5 Bonus) Building on step 3, imagine the circle and its 12 points as a clock. Scale the triangles at the 3, 6, 9, and 12 positions by a factor of 1.5.

Divide Move

Part B: Math Basics (4 pts)

For the tasks in this part, you don't need to reference any objects from Rhino. Everything has been predefined/internalized in Grasshopper.

Task 01: Arithmetic Operation (2 pt)

  1. Input: A pre-defined number nn in the .gh file;
  2. Process:
    • P1: Raise the predefined number nn (in the GH file) to the power of 2, i.e. n2n^2.
    • P2: Divide the result from P1 by 2, i.e. n22\frac{n^2}{2}.
    • P3: Construct a vector v1={n,  n2,  n22}\vec{v}_{1} = \{n,\; n^2,\; \frac{n^2}{2}\} (0.5 pt)
    • P4: Construct another vector v2\vec{v}_{2} by reversing the coordinates order of v1\vec{v}_{1}: v2={n22,  n2,  n}\vec{v}_{2} = \{\frac{n^2}{2},\; n^2,\; n\} (0.5 pt)
    • P5: Compute the dot product between v1\vec{v}_{1} and v2\vec{v}_{2}, and name the result s3s_{3}.
    • P6: Compute the cross product between v1\vec{v}_{1} and v2\vec{v}_{2}, unitize the result, and name the vector v3\vec{v}_{3}. (0.5 pt)
    • P7: Scale v3\vec{v}_{3} by s3s_{3} to obtain v4\vec{v}_{4}. (0.5 pt)

Task 02: Math-based Geometry Manipulation (2 pt)

  1. Input: Pre-defined vectors (V1V4, independent of those in Task 01) in the .gh file;
  2. Process:
    • P1: Create a point Pt0 at the origin. Move it sequentially with the four vectors in order (V1V4) to obtain Pt1, Pt2, Pt3, and Pt4.
      • For example: move Pt0 by V1 to get Pt1, then move Pt1 by V2 to get Pt2, and so on.
    • P2: Create a curve passing through the points in order: Pt1Pt2Pt3Pt4. (0.5 pt)
    • P3: Connect the two ends of the curve and find the midpoint between them, denoted as Pt-mid. (0.5 pt)
    • P4: Divide the curve into 9 segments, and on each segment, identify the point at parameter t = 0.3. (0.5 pt)
    • P5: Move each point from last process toward Pt-mid by a distance equal to 34\frac{3}{4} of the distance between that point and Pt-mid. (0.5 pt)

Part C: List Basics (3 + 1 pts)

  1. Input: Pre-defined points (Series1\mathrm{Series}_1 and Series2\mathrm{Series}_2) in the .gh file
  2. Process:
    • P1: For points in Series1\mathrm{Series}_1, select points with indices 3 to 14 (inclusive), yielding 12 points as Series3\mathrm{Series}_3. (1 pt)
    • P2: For points in Series2\mathrm{Series}_2, remove the first point (index 0) and the last point (index -1), yielding 12 points as Series4\mathrm{Series}_4. (1 pt)
    • P3: Create a line segment connecting each point in Series3\mathrm{Series}_3 to the corresponding point in Series4\mathrm{Series}_4 with an offset of +2. Specifically:
      • Point at index 0 in Series3\mathrm{Series}_3 connects to point at index 2 in Series4\mathrm{Series}_4
      • Point at index 1 in Series3\mathrm{Series}_3 connects to point at index 3 in Series4\mathrm{Series}_4
      • Continue this pattern. (1 pt)
    • P4:(1 Bonus) Construct triangles from the points using a two-layer approach:
      • First layer: Build triangles from point pairs in Series3\mathrm{Series}_3 to single points in Series4\mathrm{Series}_4:
        • Points 0 and 1 in Series3\mathrm{Series}_3 → Point 0 in Series4\mathrm{Series}_4
        • Points 1 and 2 in Series3\mathrm{Series}_3 → Point 1 in Series4\mathrm{Series}_4
        • Points 2 and 3 in Series3\mathrm{Series}_3 → Point 2 in Series4\mathrm{Series}_4
        • Continue until: Points 11 and 12(first point) in Series1\mathrm{Series}_1 → Point 11 in Series4\mathrm{Series}_4
      • Second layer: Build triangles from single points in Series3\mathrm{Series}_3 to consecutive point pairs in Series4\mathrm{Series}_4:
        • Point 1 in Series3\mathrm{Series}_3 → Points 0 and 1 in Series4\mathrm{Series}_4
        • Point 2 in Series3\mathrm{Series}_3 → Points 1 and 2 in Series4\mathrm{Series}_4
        • Continue until: Point 12(first point) in Series3\mathrm{Series}_3 → Points 11 and 12(first point) in Series4\mathrm{Series}_4

List Basics

Input File

Please copy the files to your local computer before editing.

The corresponding input files are provided on the MscLA server.

  • Assignment_02.zip

Submission

Please submit both the .3dm and the .gh files.

Name the submission file(s) with the following format: LastName_FirstName_TimeForCompletion_AS02.xxx

Please submit the corresponding file(s) to the submission folder submissionAS02 on the server:

10_HS_25\02_First Semester\02_Digital.Design.Methods\01_Assignment\Submission_AS02

Please note the required FILENAME CHANGE of the submission file.