As the design of free-form architectural surfaces becomes easier, questioning and foreseeing the feasibility of the construction of these surfaces becomes important. Such an inquiry requires sufficient knowledge of architectural geometry besides the knowledge of materials and structural systems. In this article, we present a preliminary example of a guide. It supports the design and production process of building surfaces with different geometric properties is presented. This guide aims to […]
Posts categorized under Computational Geometry
This Rhino Python code calculates the cross-product determinant used to determine the orientation of three points (current, next_point, and point) to see if they form a left turn or a right turn. This is a well-known technique in computational geometry to check the relative orientation of points. In this script, the direction is the cross-product determinant that determines the relative orientation of the points. If the result is negative, the […]
Boris Nikolayevich Delaunay was a Russian mathematician and mountain climber. He developed the Delaunay triangulation, which is a method in computational geometry. It is a triangulation of a set of points such that no point is inside the circumcircle of any triangle formed by the points. It’s widely used in computer graphics and mesh generation. In 2013, I made the brute force code in Rhino Python which is a slow […]
This is a simple trick that shows the utilization of the “surface split” component in Grasshopper. It is used for detecting the inner regions of any given two-dimensional linework. Thus, it resembles the hatch boundary detection of AutoCAD and similar software. There is no built-in hatch component in Grasshopper. But maybe you can use this as a starting point if you want to develop it. The definition starts with drawing […]
Today’s tip is about two-dimensional curve-point calculations. It is very handy to use “closest point” components in Grasshopper. You can calculate distances and directions between curves, surfaces, and points. Then, place point objects in relation to the proximity of another object. However, there is no “farthest point” implemented yet. I tried to calculate the farthest point from a curve. First, I tried to translate the curve in a fashion that […]
After becoming a ready-made component in Grasshopper, the Delaunay triangulation lost its popularity quickly. It used to be a nice problem of computational geometry for designers obsessed with scripting. Last month, Benay reminded me of the method of circle checking. She showed her Rhinoscript that creates circles from point triplets and checks if a point is inside or not. Today I studied this in Grasshopper to see if I can […]
I’ve been searching for a method to study the Voronoi subdivision in order to manipulate it. There are well-known algorithms for that. But I thought it would be better if I use a projective approach just as I did in studying hyperbolic space (here). This is the metaphor of inflating balloons. However, I inflated cones instead of spheres. This way, it became possible to modify the algorithm. So I was […]
The Möbius strip is a famous mathematical object. Although being in three-dimensional space, it is a closed-loop of only one surface and only one edge. This quality alone makes the object an interesting study for computational design. I aimed to create an object to test our new CNC machine. I wanted to test the egg-crate interlocking fabrication method. This is why the study became a Möbius strip fabrication. Apart from […]
Yesterday, Kağan asked me about the isovist component in Grasshopper and how it works. In fact, it is a long story, I said because once upon a time, I was curious about Space Syntax theory as my old friend Ela Çil introduced it. So, here is an original definition of Michael Benedikt; “The environment is defined as a collection of visible actual surfaces in space. An isovist is the set […]
Playing with the 2D Metaball component in Grasshopper. I was curious about why there are no Metaballs in 3D in Grasshopper. Then, I realized that in fact, the 2D Metaball component is creating a section of a 3D Metaball computation. I think it is a topic worth studying even 10 years after this original post to develop an easy way to create the metaball surfaces. In 2012, thanks to the […]
This is the continuation of my scripting experiment within Grasshopper. Like the minimum spanning tree algorithm, this is also a famous problem of computational geometry; the shortest path problem. I’m now coding faster and understanding the namespace more easily in Grasshopper. This time, the challenge was implementing Dijkstra’s algorithm for the Shortest Path Generator. Again, it’s a quite powerful algorithm, I even plan to use it in my current project. Although […]
This is the updated version of my MST code from 2012. After over a hundred hours of Rhinocommon and Grasshopper SDK studies, and lots of dead ends, I was finally able to calculate the minimum spanning tree of any given curve network in Grasshopper. Problems like these are interesting to me because of their clear logic and diverse areas of applications in design. I tried to simulate Dijkstra’s, Kruskal’s, and […]
That was about six months ago, our study for a design competition required a spatial allocation algorithm. An office building with a rectangular plot and a strict functional requirement forced me to the good old Voronoi diagrams, subdividing a surface. Here is the definition file: [GHX: 0.8.0066]. However, there were other design parameters such as the sunlight and orientations of each functional cell. Combining a couple of graph components helped me […]