A python package to fill N-sided holes using combined subdivision schemes, based on Catmull-Clark subdivison.
Project description
Filler for N-sided holes
A python package to fill N-sided holes using combined subdivision schemes, based on Catmull-Clark subdivison.
See Levin, Adi. “Filling N-sided Holes Using Combined Subdivision Schemes.” (2000).
Install
Use PyPI to install subdivision-hole-filler:
pip install subdivision-hole-filler
Usage
Run the following script to fill a hole.
import numpy as np
from subdivision_hole_filler import Boundary, NsidedHoleFiller
r = 1
R = 1
boundaries = [None, None, None, None, None, None]
for d in range(3):
def coord(u: float, d=d):
phi = (1.0 - u / 2.0) * np.pi / 2.0
x = r * np.cos(phi)
y = r * np.sin(phi)
z = r + R
c = np.zeros(3)
c[d] = z
c[(d + 1) % 3] = x
c[(d + 2) % 3] = y
return c
def deriv(u: float, d=d):
vec = np.zeros(3)
vec[d] = -1
return np.array(vec)
bd = Boundary()
bd.coord = coord # A function of parametric coord `u` in [0.0, 2.0], which defines the coordinate of a point on the boundary
bd.deriv = deriv # A function of parametric coord `u` in [0.0, 2.0], which defines the cross boundary derivative of a point on the boundary, poining to the inside
boundaries[d*2] = bd
for d in range(3):
bd = Boundary()
def coord(u: float, d=d):
phi = (1.0 - u / 2.0) * np.pi / 2.0
x = R + r - R * np.cos(phi)
y = R + r - R * np.sin(phi)
z = 0
c = np.zeros(3)
c[d] = z
c[(d + 1) % 3] = x
c[(d + 2) % 3] = y
return c
bd.coord = coord
def deriv(u: float, d=d):
vec = np.zeros(3)
vec[d] = 1
return np.array(vec)
bd.deriv = deriv
boundaries[(d + 1) % 3 * 2 + 1] = bd
filler = NsidedHoleFiller(boundaries)
center_point = np.array([r, r, r])
filler.gen_initial_mesh(center_point)
for iteration in range(3):
filler.cmc_subdiv_for_1step(iteration=iteration)
Here is the ouput.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
subdivision_hole_filler-1.0.0.tar.gz
(284.3 kB
view hashes)
Built Distribution
Close
Hashes for subdivision_hole_filler-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1450958ae8567e8b59054b3d8b30f2b3c096dc956d6a0e47e1b5217f877ca955 |
|
MD5 | 20a696375bdd1b12612fe638e16c492f |
|
BLAKE2b-256 | 9f7d937696340d0d191bde57085cdcb02b970250607089dbb6058a4b0f7a8290 |
Close
Hashes for subdivision_hole_filler-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 517ee26204cefe3d9cfd6c33228896423f885eed1df1ce9c6b788ca0427a745e |
|
MD5 | d6aca4868d5e74c627a3325a418e97d5 |
|
BLAKE2b-256 | e04043107213049384758e5d4fa0325870fc8e943242ccf640570e474451808c |