Skip to content

Commit 8cd6f10

Browse files
committed
WIP-ADD more color maps
1 parent ce3ae67 commit 8cd6f10

File tree

4 files changed

+1095
-1031
lines changed

4 files changed

+1095
-1031
lines changed

src/gh/components/DF_cloud_to_cloud_distance/code.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from Grasshopper.Kernel import GH_RuntimeMessageLevel as RML
1212

1313
import diffCheck
14-
from diffCheck import diffcheck_bindings
1514
from diffCheck import df_cvt_bindings
1615
from diffCheck import df_error_estimation
1716

src/gh/components/DF_vizualization/code.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,16 @@ def RunScript(self,
4242
o_source = [df_cvt_bindings.cvt_dfcloud_2_rhcloud(src) for src in i_results.source]
4343

4444
# color geometry
45-
o_colored_geo = [df_vizualization.color_pcd(src, dist, min_value, max_value) for src, dist in zip(o_source, i_results.distances)]
45+
o_colored_geo = [df_vizualization.color_pcd(src, dist, min_value, max_value, i_viz_settings.palette) for src, dist in zip(o_source, i_results.distances)]
4646

4747
elif type(i_results.source[0]) is rg.Mesh:
4848
# convert to Rhino Mesh
4949
o_source = i_results.source
5050

5151
# color geometry
52-
o_colored_geo = [df_vizualization.color_mesh(src, dist, min_value, max_value) for src, dist in zip(o_source, i_results.distances)]
52+
o_colored_geo = [df_vizualization.color_mesh(src, dist, min_value, max_value, i_viz_settings.palette) for src, dist in zip(o_source, i_results.distances)]
5353

54-
o_legend = df_vizualization.create_legend(min_value, max_value)
54+
o_legend = df_vizualization.create_legend(min_value, max_value, i_viz_settings.palette)
5555

5656
o_histogram = df_vizualization.create_histogram(distances_flattened, min_value, max_value)
5757

src/gh/diffCheck/diffCheck/df_vizualization.py

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import Rhino.Geometry as rg
77
from System.Drawing import Color
8-
8+
from diffCheck import df_vizualization
99

1010
class DFVizSettings:
1111
"""
@@ -18,8 +18,40 @@ def __init__(self, valueType, upper_threshold, lower_threshold, palette):
1818

1919
self.upper_threshold = upper_threshold
2020
self.lower_threshold = lower_threshold
21-
self.palette = palette
21+
self.palette = df_vizualization.DFColorMap(palette)
22+
23+
24+
class DFColorMap:
25+
"""
26+
This class compiles the settings for the vizualization into one object
27+
"""
2228

29+
def __init__(self, name):
30+
self.names = name
31+
if name == "Jet":
32+
self.colors = [
33+
Color.FromArgb(0, 0, 255), # Blue
34+
Color.FromArgb(0, 255, 255), # Cyan
35+
Color.FromArgb(0, 255, 0), # Green
36+
Color.FromArgb(255, 255, 0), # Yellow
37+
Color.FromArgb(255, 0, 0), # Red
38+
]
39+
elif name == "Rainbow":
40+
self.colors = [
41+
Color.FromArgb(127, 0, 255),
42+
Color.FromArgb(0, 180, 235),
43+
Color.FromArgb(128, 254, 179),
44+
Color.FromArgb(255, 178, 96),
45+
Color.FromArgb(125, 3, 254)
46+
]
47+
elif name == "RdPu":
48+
self.colors = [
49+
Color.FromArgb(254, 246, 242),
50+
Color.FromArgb(251, 196, 191),
51+
Color.FromArgb(246, 103, 160),
52+
Color.FromArgb(172, 1, 125),
53+
Color.FromArgb(254, 246, 242)
54+
]
2355

2456
def interpolate_color(color1, color2, t):
2557
"""Interpolate between two colors."""
@@ -30,7 +62,7 @@ def interpolate_color(color1, color2, t):
3062
return Color.FromArgb(r, g, b)
3163

3264

33-
def value_to_color(value, min_value, max_value):
65+
def value_to_color(value, min_value, max_value, palette):
3466
"""Map a value to a color based on a spectral colormap."""
3567

3668
if value < min_value:
@@ -39,13 +71,7 @@ def value_to_color(value, min_value, max_value):
3971
value = max_value
4072

4173
# Define the spectral colormap (simplified)
42-
colormap = [
43-
Color.FromArgb(0, 0, 255), # Blue
44-
Color.FromArgb(0, 255, 255), # Cyan
45-
Color.FromArgb(0, 255, 0), # Green
46-
Color.FromArgb(255, 255, 0), # Yellow
47-
Color.FromArgb(255, 0, 0), # Red
48-
]
74+
colormap = palette.colors
4975

5076
# Normalize the value within the range
5177
if min_value == max_value:
@@ -67,25 +93,25 @@ def value_to_color(value, min_value, max_value):
6793
return interpolate_color(color1, color2, t)
6894

6995

70-
def color_pcd(pcd, values, min_value, max_value):
96+
def color_pcd(pcd, values, min_value, max_value, palette):
7197

7298
for i, p in enumerate(pcd):
73-
mapped_color = value_to_color(values[i], min_value, max_value)
99+
mapped_color = value_to_color(values[i], min_value, max_value, palette)
74100
p.Color = mapped_color
75101
return pcd
76102

77103

78-
def color_mesh(mesh, values, min_value, max_value):
104+
def color_mesh(mesh, values, min_value, max_value, palette):
79105
mesh.VertexColors.Clear()
80106
for i, vertex in enumerate(mesh.Vertices):
81107

82-
mapped_color = value_to_color(values[i], min_value, max_value)
108+
mapped_color = value_to_color(values[i], min_value, max_value, palette)
83109
mesh.VertexColors.Add(mapped_color.R, mapped_color.G, mapped_color.B)
84110

85111
return mesh
86112

87113

88-
def create_legend(min_value, max_value, steps=10, base_point=rg.Point3d(0, 0, 0),
114+
def create_legend(min_value, max_value, palette, steps=10, base_point=rg.Point3d(0, 0, 0),
89115
width=0.5, height=1, spacing=0):
90116
"""
91117
Create a legend in Rhino with colored hatches and text labels.
@@ -106,7 +132,7 @@ def create_legend(min_value, max_value, steps=10, base_point=rg.Point3d(0, 0, 0)
106132
for i in range(steps+1):
107133

108134
value = min_value + (max_value - min_value) * i / steps
109-
color = value_to_color(value, min_value, max_value)
135+
color = value_to_color(value, min_value, max_value, palette)
110136

111137
if i > 0:
112138
mesh = rg.Mesh()

0 commit comments

Comments
 (0)