Subject | Hash | Author | Date (UTC) |
---|---|---|---|
wireframe: add Qframe class | cf52d85dd1663537cd8c52a98514c7d041913979 | I am | 2022-11-09 21:34:12 |
qt_gui.qt_pairwise: add auto arnge and auto levels controls | 9bc2cf10a9a1695c2c1a5f6a9959f375d3808a71 | I am | 2022-11-09 18:16:47 |
qt_gui.qt_pairwise: set blue -1 by default. Add force_update option in Contact widget | 7371575784df7fd41bd76ad29caf38f474a06a26 | I am | 2022-11-09 15:39:03 |
qt_gui.qt_pairwise: prepare Contact widget | bfa78d7493f5eb04b6bd3a4ad26dd1a92d17a895 | I am | 2022-11-09 03:36:05 |
qt_gui.qt_pairwise: prepare more mouse event signals | c60e613508480c68483b3d0d6ad6c876b27f539c | I am | 2022-11-08 01:55:14 |
qt_gui: introduce reworked matrix view window | e28b95c5f418a7a3cea0cb84ca82b40275a71061 | I am | 2022-11-07 02:20:45 |
introduce wireframe module for the contacts finding functionality | b6068dd92663699859ea7cbf3aac00178d120e0f | I am | 2022-10-25 14:24:37 |
voronoi.TwoPoints: atleast_2d() one line fix | 9f8bd9e5370ccf30887b6218331ee664788a3b91 | I am | 2022-10-25 07:09:57 |
voronoi: implement faster TwoPoints class. | c0af78f64bc78a6b8cf06e3ea244339549318b66 | I am | 2022-10-24 13:03:26 |
voronoi: implement TwoHorses class. Třída je, bohužel, bezcenná :( | 4f6fe186f3f344fa7ee9e518798499099615b466 | I am | 2022-10-23 10:00:43 |
voronoi: WIP | 23c63ede5bc2ec51d25aed850dc59299db438e34 | I am | 2022-10-21 12:27:01 |
IS_stat.sample_alike: use any possible fallback options to sample | 80fb6d086e9f17350a1725a319e40bf29591869e | I am | 2022-10-20 08:56:42 |
voronoi: WIP | ba912d406de12142f2e15a73090118184a0166a4 | I am | 2022-10-20 02:43:12 |
IS_stat: add sample_alike() function | 2e5394d264b7aaaf5f2486c736ed8cc37afbd030 | I am | 2022-10-19 13:00:17 |
voronoi: WIP | c3bfa60b6db2042df11528fe95a51d7cc88d3c6b | I am | 2022-10-19 11:18:13 |
voronoi: WIP | baff3c5ccaf857f60194917fe5d6e33c40b01265 | I am | 2022-10-19 09:28:33 |
voronoi.ConvexSpline: little fix of np.sign() for better sleep | 968f649e54d97abd596cd60749872fa3ef788c06 | I am | 2022-10-19 06:28:46 |
implement even more optimized Convex.. now ConvexSpline class | c08511aecb32b880e73c9f10d07feff4dc588e8b | I am | 2022-10-19 04:11:13 |
voronoi: WIP | cbb61d4544367a67c9a5c3fe6d64a9dc284eb364 | I am | 2022-10-18 05:05:44 |
voronoi: WIP | e9c247fef30cfb678bad9b955d6f6a94a0ff61e7 | I am | 2022-10-18 01:02:30 |
File | Lines added | Lines deleted |
---|---|---|
wellmet/wireframe.py | 41 | 0 |
File wellmet/wireframe.py changed (mode: 100644) (index af7cd96..84fac7a) | |||
... | ... | from . import sball | |
24 | 24 | ||
25 | 25 | ||
26 | 26 | ||
27 | class Qframe(Delaunay): | ||
28 | def is_couple(self, couple_indices): | ||
29 | i, j = couple_indices | ||
30 | ii = self.simplices | ||
31 | return np.any(np.sum((ii == i) | (ii == j), axis=1) == 2) | ||
32 | |||
33 | def generate_wireframe(self, callback=lambda:True): | ||
34 | n = self.npoints | ||
35 | size = n * (n - 1) // 2 | ||
36 | self.condensed_contacts = np.zeros(size, dtype=bool) | ||
37 | |||
38 | for simplex in self.simplices: | ||
39 | self._handle_simplex(simplex) | ||
40 | if callback(): | ||
41 | break | ||
42 | |||
43 | |||
44 | def _handle_simplex(self, simplex): | ||
45 | if len(simplex) > 3: | ||
46 | i = simplex[0] | ||
47 | jj = simplex[1:] | ||
48 | self._handle_simplex(jj) | ||
49 | for j in jj: | ||
50 | self._set_contact(i, j) | ||
51 | else: | ||
52 | i, j, k = simplex | ||
53 | self._set_contact(i, j) | ||
54 | self._set_contact(j, k) | ||
55 | self._set_contact(k, i) | ||
56 | |||
57 | |||
58 | |||
59 | def _set_contact(self, x, y): | ||
60 | i, j = min(x, y), max(x, y) | ||
61 | m = self.npoints | ||
62 | entry = m * i + j - ((i + 2) * (i + 1)) // 2 | ||
63 | self.condensed_contacts[entry] = True | ||
64 | |||
65 | |||
66 | |||
67 | |||
27 | 68 | def convex_solver_test(points, tries_to_fix=1, tol=1e-7): | def convex_solver_test(points, tries_to_fix=1, tol=1e-7): |
28 | 69 | tri = Delaunay(points) | tri = Delaunay(points) |
29 | 70 | CS = ConvexSpline(points) | CS = ConvexSpline(points) |