Clock Maker

3D render of clock
Creating a program that makes geartrains for mechanical clocks
Java, JavaGUI, JUnit Testing, Fusion 360
Horology, 3D Modeling, Object Oriented Programming, GUI


Can I create a unique mechanical clock?
During my brief obsession with clocks and watches, I was committed to creating my own. Iven my limited knowledge of mechanical engineering, I dove into books on horology and realized much of the math could be done easily in Java.


Understanding the basics of gear trains and horology


Creating      and app that returns gear trains given specifications.


Designing the clock in Fusion 360

Final product

Cutting the model with laser cutting and acrylic


When delving into the intricacies of clock design, I embarked on thorough research, relying primarily on reputable websites specializing in horology and an invaluable resource, "A Practical Course in Horology" by Harold C. Kelly. These references proved instrumental in comprehending the fundamental principles and components of a clock, guiding me through the process of breaking down the mechanism into its core elements.

Drawing from this knowledge, I meticulously examined and identified the essential components of the clock, including the Center Wheel, Third Wheel, Fourth Wheel, Escape Wheel, and Barrel Wheel, along with their corresponding pinions. This systematic breakdown allowed for a comprehensive understanding of the gear train configurations and the interplay between various gears. In certain instances, to expedite the design process and ensure accuracy, I incorporated prefabricated designs for complex parts like the anchor and escapement wheel. By leveraging existing designs, I ensured the proper functioning of these critical components while limiting the design's flexibility to the number of teeth on the escapement wheel.

Software Development

To begin with, I designed the Java program to efficiently explore and identify all feasible gear train combinations. Leveraging suitable algorithms, the program generates combinations by considering the available gears, their respective teeth counts, and other relevant parameters.

To ensure the accuracy and reliability of the program, I implemented a comprehensive suite of JUnit tests. These tests cover a wide range of scenarios, examining both normal and edge cases to validate the correctness of the gear train combinations generated by the program. By executing the JUnit tests, the program automatically verifies the expected outcomes against the actual results, helping to identify any potential issues or errors.
Furthermore, to enhance user experience and provide a user-friendly interface, I integrated a graphical user interface (GUI) into the Java program. The GUI offers an intuitive and visually appealing platform for users to interact with the program. It includes various input fields where users can enter gear specifications, such as the number of gears, and the teeth counts for each gear.

Overall, the Java program I developed incorporates an elaborate approach to finding gear train combinations, ensuring accuracy through comprehensive JUnit testing, and enhances user interaction through the integration of a graphical user interface. This comprehensive solution facilitates efficient exploration and analysis of gear train configurations, catering to a wide range of user requirements and scenarios.


In addition to the previous components, I further expanded the project by leveraging the powerful capabilities of Fusion 360. With Fusion 360, I was able to bring the selected gear train combinations to life by creating detailed and realistic 3D models. Using Fusion 360's   I created a new project and began constructing the 3D model of the gear train. I started by designing custom gear components within the software itself. This ensured that the modeled gears accurately matched the specifications obtained from the gear train combinations generated by the Java program. Next, I meticulously positioned and assembled the gears based on their designated locations and orientations within the gear train configuration. In addition to the gear components, I also incorporated other relevant parts into the 3D model, such as shafts, bearings, and housings. This ensured a more comprehensive representation of the complete gear assembly.

Final Product

The final product showcased the integration of various components, including the intricate gear train configurations and other essential clock mechanisms. Careful consideration was given to manufacturing constraints, aiming to optimize the clock model for the cutting process. I paid close attention to tolerances, clearances, and connection points, facilitating seamless assembly and precise functionality of the clock. This attention to detail ensured that the final product met high-quality standards.

Moreover, I created photorealistic renderings and animations of the clock model, offering an aesthetically pleasing and realistic preview of the final product. These visual representations served as promotional materials, showcasing the intricate In conclusion, the final output of the project was an intricate 3D model of a mechanical clock, meticulously designed and optimized for manufacturing. The integration of various clock mechanisms, including the gear train configurations, ensured accurate timekeeping and smooth operation.


This clock design project was a valuable learning experience, deepening my understanding of horology. Balancing design flexibility with practical constraints proved essential. Adapting the design to meet manufacturing requirements, like material thickness and laser cutter capabilities, ensured a seamless transition from digital to physical. Overall, this project enhanced my knowledge of horology, emphasized the integration of research and practical application, and underscored the importance of optimizing my code. I look forward to applying these insights to future projects in the captivating realm of clock design.