Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

developer:scriptsamples:hotcoldcolor [2015/09/14] (current)
Line 1: Line 1:
 +====== Calculating Hot/Cold Color Values ======
 +> **Developer:​** //​[[developer:​rhinoscript|RhinoScript]]//​
 +> **Summary:​** //​Demonstrates how calculate colors for analysis using [[developer:​rhinoscript|RhinoScript]].//​
 +
 +=====Question=====
 +What I would like to do is to show the curvature of a curve with a color index. For example, I divide a curve into 500 points and measure the curvature at each point. Now, I would like to assign a "​curvature radius"​ color to each of the points. Any ideas?
 +
 +=====Answer=====
 +One solution you might consider is to determine the minimum and maximum curvature values for your samples. Then, you can use this function to calculate a color value for each point.
 +
 +
 +<code vb>
 + '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''​
 + '​ Return a RGB color given a scalar v in the range [vmin, vmax].
 + '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''​
 + ​Function GetHotColdColor(v,​ vmin, vmax)
 +
 +   Dim r, g, b, dv
 +   r = 1.0 : g = 1.0 : b = 1.0 'white
 +
 +   If (v < vmin) Then v = vmin
 +   If (v > vmax) Then v = vmax
 +   dv = vmax - vmin
 +
 +   If (v < (vmin + 0.25 * dv)) Then
 +     r = 0
 +     g = 4 * (v - vmin) / dv
 +   ​ElseIf (v < (vmin + 0.5 * dv)) Then
 +     r = 0
 +     b = 1 + 4 * (vmin + 0.25 * dv - v) / dv
 +   ​ElseIf (v < (vmin + 0.75 * dv)) Then
 +     r = 4 * (v - vmin - 0.5 * dv) / dv
 +     b = 0
 +   Else
 +     g = 1 + 4 * (vmin + 0.75 * dv - v) / dv
 +     b = 0
 +   End If
 +
 +   ​GetHotColdColor = RGB(Int(r*255),​ Int(g*255), Int(b*255))
 +
 + End Function
 +
 +</​code>​
 +Here is a sample script that you can use to test the above function.
 +
 +
 +<code vb>
 + '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''​
 + '​ Test procedure creates a "​hot-to-cold"​ color ramp mesh.
 + '​ To see the results, set a viewport to "​rendered"​ display.
 + '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''​
 + Sub TestGetHotColdColor()
 +
 +   '​ Mesh with 200 vertices and 100 faces
 +   Dim v(199), f(99), c(199), ub, i
 +
 +   '​ Fill in arrays
 +   ub = UBound(v)
 +   For i = 0 To UBound(v) Step 2
 +     v(i) = Array(i/​2,​0,​0)
 +     ​v(i+1) = Array(i/​2,​10,​0)
 +     c(i) = GetHotColdColor(i,​0,​ub)
 +     ​c(i+1) = c(i)
 +     ​f(i/​2) = Array(i,​i+2,​i+3,​i+1)
 +   Next
 +
 +   '​ Create the mesh object
 +   Call Rhino.AddMesh(v,​f,,,​c)
 +
 + End Sub
 +</​code>​
 +
 +
 +{{tag>​Developer RhinoScript}}
  
developer/scriptsamples/hotcoldcolor.txt ยท Last modified: 2015/09/14 (external edit)