Cats Welfare Space Generator

Haoyu Hu
Generative Design Course
6 min readMay 7, 2023

Haoyu Hu, Xu Cheng, Yaoze Yu | Generative Design | Spring 2023 | GSAPP | Columbia University

Animation

Figure 01. Qute Cat

Introduction

Having a kitten is a particularly common thing in New York and even around the world. But for the most part, they only live under the same roof: our apartment/room. They have their own emotional ups and downs: they can get bored or frustrated by the confines of space and the limitations of their activities — especially when we’re out and about at work and play.

Figure 02. Sad Cat
Figure 03. Items options based on Generative

We are trying to figure a way to improve the well-being of cats. Using design interventions and generative design simulations, object related to cats were placed in the bedroom/apartment correspondingly.

Methodology

The design starts with the room of one of the authors, the size of which is 4m*5m, and considers for the time being only the effect of the door and the bed on the arrangement of objects.

Figure 04. Room axonometric drawings and dimensions
  1. Design multiple function modules

According to the daily life and general conditions of cats, we mainly set up the space cats need to eat, sleep, excrete and play. Depending on their actual object size and using situation, we add the condition of influence range for them. To facilitate the calculation, we fixed this sphere of influence as a circle with a radius of 400mm.

Figure 05. Module Object Size
Figure 06. Module Object Influence Range

2. Variables for input values

As different cat owners have different needs, cats can have different sleeping, eating and playing spaces. We use A-eating, B-sleeping, C-playing and D-excreting.

In this demo, we use the following requirements as a reference: 2A+1B+3C(C1,C2,C3 represents items of the same function but of different types and sizes)+1D seven items.

Figure 07. Disorganized Items

3. Mutual Collision

To ensure that the areas of objects placed in the limited space of this room do not overlap and that each object has its own spere of influence, we have to move away from (repel) each object. We use the area of influence as the repulsion area.

Figure 08. Mutual Collision
Figure 09. Python Codes of Collision

The list of items’ data is then converted into randomly generated point positions using Discover.Continuous as input. The range of these parameters is affected by the distance between objects, i.e., the length in space is not greater than the diameter of the affected range, and these point positions are then output to determine their output positions for evaluation.

4. Constraints

a. External Constraints | fixed objects

Doors and bed, as non-moving assets, will have settings for their reminder size and sphere of influence: the established sphere of influence and size is shown below.

Figure 10. The size of the door and bed with the range of influence.

Based on the previous step, the current positions of the seven ranges are then made to repel the doors and beds so that they do not overlap each other.

Figure 11. External Constraints

The points currently generated are a series of outputs that are disjoint in a stable space and do not overlap with the range of beds and doors we have set. They currently satisfy the basic conditions, but we still need to place constraints on the spacing between the objects of ABCD.

b. Internal Constraints

In practice, we need put eating space and sleeping space closer, and let the excretion space far away from these spaces if possible. This is the internal constraint.

Figure 12. Internal Constraints

We can express the constraint of the condition with the expression: make l_AB as small as possible and l_AD, l_BD as large as possible by using lines. (l represents the length of the line segment between two points)

In this step, we obtain the arrangement of objects whose mutual influence ranges do not overlap under the intrinsic constraints. We use the weighting coefficients as coefficients for each of the two and add them together for calculation. The higher the value of the result, the more it matches the condition we set.

Figure 13. Distribution of objects not covered

5. Layout optimization

In reality, we are unlikely to place objects in the middle of an empty part of the room. So we also have to add the optimization condition: have a tendency to lean against the wall.

Figure 14. Grasshopper Optimization
Figure 15. Discover Optimization

Output

The output iterated with Discover has a tendency to favor the optimal solution according to the output points in the battery pack corresponding to the different ABCD items. And we can choose the favorite type of spatial arrangement from it.

Figure 16. Output

Conclusion

In generative design, it is important to control the number of variables and make them easily translatable into quantifiable numbers. This means that we need to set some fixed parameters, in this case we can guarantee the presence of ABD during the pre-input and change the number of C and other variables. The radius of influence is fixed for each object.

There are some things that we did not consider clearly, such as the actual situation the cat’s specific reaction to these objects is difficult to express from the actual data and pictures. The weighting coefficients between the objects were also not concretely expressed in corresponding articles or studies. Adding these aspects to the thinking as the study progresses can make the program more interesting, but of course it will also increase the workload and difficulty of the work.

Finally, we visualize the process. Users can select the required objects and number of objects in the room of their own set size, and the system will also produce several types that tend to be the best according to the input situation for the user’s reference, which greatly saves the user’s time and effort in arranging them by themselves.

Figure 17. Several suitable solution options

--

--