designcoding
About Table of Contents Keywords Monthly Archive
Support designcoding!

Algorithms

263 posts

Vector Magnitude Method in Rhino Python

October 12, 2021

Today, I am going to make only one addition to the Vector class we recently started in Rhino Python. The magnitude of a vector can be easily calculated by assuming that the axes (2 or 3 axes) of it are perpendicular to each other. This gives us an opportunity to assume a right triangle visually, and calculate the magnitude (length) of a vector by using the Pythagorean Theorem. In short, if you square and add the components of a vector,…

Parametric Curve Equations

September 19, 2021

The parametric curve equations are good examples to demonstrate the bridge between computer-aided design and mathematics. Although useless and pointless, it is a good exercise to extract the curve equations. In this Rhino Python code, I present a generalized equation extractor for Rhino. Rhino curves are good examples de Casteljau and Bézier curves. You can see the mathematical underpinnings of Rhino curves with this exercise: This code asks the user the degree of the curve. By default, Rhino’s curves are…

More Vector Operations in Rhino Python

September 1, 2021

This is the continuation of my new project of re-creating the parametric curve and surface methods of Rhino via Python scripting. If you remember, I started with the building block of vector operations, here and here. Then, I defined vector addition and multiplication, before going deeper into the geometric calculations. In fact, they are using the previously defined addition and multiplication methods. New Vector Operations: Subtraction and Reversing In the future, we are going to need to reverse a vector,…

Vector Arithmetics in Rhino Python

August 20, 2021

Today, I am going to advance the Vector class a bit more. Firstly, I will improve the display method I introduced recently. Then, I will add two new methods which handle the fundamental vector arithmetics in Rhino Python. Improving the Display Method In the previous attempt, I displayed vectors on the origin of the Rhino viewport. The coordinates of the tail of a vector are not stored within the object attributes. Normally, I can store two coordinates, one for the…

Display Method for Vector Class

August 17, 2021

Let’s continue from the Vector class that started yesterday. Previously, I defined this class to store three numbers (coordinates), named as “components”. I defined a method named __init__ for this. Similarly, I am adding a display method to the Vector class today. Note that I am using Rhino 6 in this code, but it should also work in Rhino 5 or 7. The code Below is the line-by-line explanation of the method: Line Explanation 1-4 Already explained before. 5 Start…

Vector Class in Rhino Python

August 16, 2021

In this new series, I will be using Rhino Python to create some of the fundamental mathematical objects in Rhino. We will learn how to code in Python, and also try to get deeper into the intuition behind some of the fundamental concepts we use every day in Rhino and Grasshopper. The Vector class in Rhino Python is the starting point of this journey. Just like vectors, most of the topics are already built-in object classes in RhinoPython. But I…

Inverse Kinematics in Rhino Python

May 22, 2019

This is a simple inverse kinematics solution developed by Andreas Aristidou and Joan Lasenby in 2011. They call it Forwards and Backwards Reaching Inverse Kinematics (FABRIK in short). It was quite interesting the learn this technique because it is a fast and accurate approximation of a kinematic chain. There are very interesting potentials of this technique in terms of architectural simulations. I tried to develop a Rhino Python script in Rhino 6. It seems to be working properly. Here is…

The Golden Ratio in Grasshopper

April 12, 2019

I like to deal with possible small computational geometry problems. These fun games are taking 2-3 hours. In addition, these are also memorable exercises. I was reviewing the Anemone plugin last week. I noticed that the Golden Ratio in Grasshopper was not geometrically generated before. Some of the greatest mathematical minds of all ages, from Pythagoras and Euclid in ancient Greece, through the medieval Italian mathematician Leonardo of Pisa and the Renaissance astronomer Johannes Kepler, to present-day scientific figures such as Oxford physicist Roger Penrose, have spent endless hours…

Cubic Bézier Curve with Rhino Python

April 30, 2018

Below is the Python code you can run in Rhino, that draws a cubic Bézier curve (degree 3). As you can see, the Rhino Python code is very slow and inefficient because we calculate every point with lots of computations. Instead, we can use the spline formulae to make this quicker but I wanted to show that the mathematical construction is parallel to the geometric one. This is a nested set of linear interpolations. In fact, the linterp function in…

Rumi Improvizations

April 30, 2018

In this short study, I generated Rumi Improvizations. The rumi motif, prevalent in traditional Turkish decorative arts like tilings, window lattices, and fabrics, features a round shape with a comma-like body. Despite resembling stylized leaves, rumis have zoomorphic origins. Rumi compositions depicted stylized animal figures, including birds, lions, deer, fish, and mythical creatures like dragons and Simurg. They symbolized strength, fertility, and the eternal struggle between good and evil. The oldest rumî-like animal shapes were discovered on rugs found in…

« 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 … 25 26 27 »
  • Chapters

    • Algorithms
    • Discourses
    • Fabrications
    • Studios
  • Explore

    • All Keywords
    • Table of Contents
    • Monthly Archive
    • #space-syntax
    • #boolean
    • #cnc-milling
    • #lissajous
    • #workshop
    • #noise
    • #frege
    • #image-sampler
    • #packing
    • #hoopsnake
    • #tiling
    • #voronoi
    • #cube
    • #moebius
    • #cairo-pentagonal
    • #brick
    • #hexagon
    • #hotwire-cutting
    • #escher
    • #aluminium
  • Search

  • Support designcoding!

  • Enjoying designcoding? Support me on Patreon to keep it growing. Thank you!

  • copyright 2026 designcoding.net | about | privacy policy | end user license agreement