Skip to content

WWmore/DOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArchGeo Library

Basic Library Related Projects License Documentation
Numpy,SciPy,Mayavi,geometrylab Discrete Orthogonal Structures GitHub license doc

Discrete Orthogonal Structures

Felix Dellinger, Xinye Li, and Hui Wang* (corresponding author)
| Project Page | Full Paper | Publication Page | Documentation |
Teaser image

Abstract

To represent smooth geometric shapes by coarse polygonal meshes, visible edges often follow special families of curves on a surface to achieve visually pleasing results. Important examples of such families are principal curvature lines, asymptotic lines or geodesics. In a surprisingly big amount of use-cases, these curves form an orthogonal net. While the condition of orthogonality between smooth curves on a surface is straightforward, the discrete counterpart, namely orthogonal quad meshes, is not. In this paper, we study the definition of discrete orthogonality based on equal diagonal lengths in every quadrilateral. We embed this definition in the theory of discrete differential geometry and highlight its benefits for practical applications. We demonstrate the versatility of this approach by combining discrete orthogonality with other classical constraints known from discrete differential geometry. Orthogonal multi-nets, i.e. meshes where discrete orthogonality holds on any parameter rectangle, receive an in-depth analysis.


This repository contains the implementation associated with the paper "Discrete Orthogonal Structures". Please cite the paper if you use this code in your project.

BibTeX

@Article{DOS2023,
      author       = {Dellinger, Felix and Li, Xinye and Wang, Hui},
      title        = {Discrete Orthogonal Structures},
      journal      = {Computers & Graphics},
      volume       = {114},
      pages        = {126--137},
      month        = {June},
      year         = {2023},
      doi          = {10.1016/j.cag.2023.05.024},
      url          = {https://www.huiwang.me/projects/10_project/}
}

Set up a working environment in Windows / MacOS

Using Anaconda to install every package.

1. Download Anaconda

2. Open Anaconda Prompt
```
$ conda create -n geo 
$ conda activate geo
$ conda install mayavi traits traitsui qt pyqt vtk scipy spyder 
$ conda install -c haasad pypardiso
```
3. Open Anaconda, under "geo" environment open Spyder

Once above installation failed because of versions conflict, then try below installations:

step-by-step installation.
```
$ conda create -n geo python=3.6
$ conda activate geo
$ pip install numpy scipy
$ pip install python-vtk
$ pip install mayavi --no-cache
$ conda install -c haasad pypardiso
$ conda install pyface
```

Or use the exported files within ./conda/ to set your environment

```
$ conda env create -f environment.yml
```

File Relations

File tree.

File


File

File

File notice.
  • files in geometrylab folder are basic, nothing need to be changed.

  • archgeolab/archgeometry: meshpy.py --> quadrings.py --> gridshell_new.py --> gui_basic.py --> guidedprojection_orthonet.py --> opt_gui_orthonet.py --> readfile_orthonet.py

  • run readfile_orthonet.py to test how it works; a GUI window will be opened

  • The GUI settings are in opt_gui_orthonet.py

  • The constraints settings are in guidedprojection_orthonet.py

  • if you want to add a new optimization project, please refer to archgeolab; You can create a new folder similar to the folder 'archgeolab'. Then the mesh geometry, optimization and GUI will be based on the files in geometrylab folder.


Mesh Optimization

The optimizer uses Guided Projection Algorithm, a Gauss-Newton algorithm, as dissused in the paper Form-finding with polyhedral meshes made simple, in a Python environment to produce quadmesh models.

Abstract of the paper 'Form-finding with Polyhedral Meshes Made Simple'

We solve the form-finding problem for polyhedral meshes in a way which combines form, function and fabrication; taking care of user-specified constraints like boundary interpolation, planarity of faces, statics, panel size and shape, enclosed volume, and last, but not least, cost. Our main application is the interactive modeling of meshes for architectural and industrial design. Our approach can be described as guided exploration of the constraint space whose algebraic structure is simplified by introducing auxiliary variables and ensuring that constraints are at most quadratic. Computationally, we perform a projection onto the constraint space which is biased towards low values of an energy which expresses desirable "soft" properties like fairness. We have created a tool which elegantly handles difficult tasks, such as taking boundary-alignment of polyhedral meshes into account, planarization, fairing under planarity side conditions, handling hybrid meshes, and extending the treatment of static equilibrium to shapes which possess overhanging parts.


ArchGeo Visualization

Python programming visualization for optimization problems in the Architectural Geometry / Geometry Processing area. This implementation major works on quad meshes.

File

Implementation layout

layout

Implementation of a principal net optimized from an orthogonal PQ mesh

PQ

Implementation of a minimal net optimized from an orthogonal A-net

Anet

Implementation of a CMC net optimized from an orthogonal S-net with const. radius

CMC

Implementation of a principal stress net from an orthogonal equilibrium mesh

Funicular


Contributions

If you find this codebase and paper helpful in your research, welcome to cite the paper and give a ⭐ . This project was initially developed by Davide Pellis. It is still under development. Please feel free to push issues or submit requests to contribute to our codebase. Welcome to work together to make a Grasshopper plugin if you are interested. For any commercial uses, please contact us. Hoping this codebase is helpful for your research work.

Welcome to the research collaborations!