Visualizing all vectors for test point and klems patches it "sees"

I have a sphere covered in test points (testPts) that are used for radiation analysis with the “radiation analysis” component.

I can color and “weight” each test vector (testVec) using the vector display Ex component to show the magnitude of solar radiation on each point, as demonstrated in the attached images.

This is already cool, but the vector information i am looking for relates to the more complex relationship between a given test point, and the multiple number of sky patches it “sees.” For each patch, there should be a corresponding vector, and some radiation contribution.

I would like to color and scale each of these vectors to illustrate the direction and contribution of the sky patches on each test point. This would result in a more cactus-like outcome, with each test point sprouting a collection of “spikes,” with each spike oriented directly at a particular sky patch in view.

Hope this makes sense, any suggestions if (A: this is possible or not) and (B: how to do it) would be appreciated.

Hi, You can generate skyPatches, and correspondent vectors and radiation values from the sky dome. Sky density of 0 generates 145 patches while sky density of 1 generates 580 patches. (64.2 KB)

Hi ,

You can gather the vectors to each skypatch by drawing a vector from (0,0,0) to the centerpoint of each skypatch (output by the ladybug skydome module). Measure the incident angle between each skypatch and the normal of your target surface. You can then use the equation I*cos(@) (I = skypatch radiance, @ = incident angle) or the dot product between the two unit vectors * the skypatch intensity to gather the irradiation on the surface expected from each skypatch. These are the values you use to scale and color your vectors.

To visualize your cactus try the SDL line component. Use the patch center point as the start input, the skypatch vectors as the direction input, and a length scaled by the calculated irradiance value. These lines can be colored with the script you already have set up and previewed using the custom preview module. The “Human” plugin has a great module that will allow you to change the color and thickness of the lines.

You could also make a cone or some other shape based on the start point, vector direction and calculated value but using Breps may slow it down too much. These could be colored using the custom preview component. Good luck.

Thanks Leland and Mostapha,

I have created one spikey vector thing, which has a basepoint of 0,0,0 and displays the direction and intensity of solar irradiation.

What i really want to do now, is create the entire cactus, which represents a building geometry and corresponding point grid, where the spikey vector thing is applied to each point over the grid.

This may be what Leland is suggesting, however i found it difficult to feed the SDL line component with the proper information to simply map the spikey thing to each point on a grid covering (say) a box or some arbitrary geometry. Assuming that gets working, i could then tweek the vectors to display the irradiation properly based on law of cosine.

Have a look (97.7 KB)

one more image here

Here’s a visualization of what i am going for …

spikey things over a geometry, now the task is to adjust the graphics a bit to make it readable, and scale the vectors in response to surface orientation (for example, the vectors displayed on the horizontal roof plane should be valid, but those on the vertical surfaces should be modified as suggested by Leland). file attached (99.6 KB)

I think you are on the right track. Be sure to size each “cactus” based on the incident angle measurements generated from each point. I would cull all negative data to ensure you aren’t using vectors that are fully blocked by the facade. You can do this using the cull pattern component and test each cos to see if it is negative. Use the resultant Boolean argument as the cull pattern mask. If your data tree structure is correct, you should be able to scale the cactus on each point based on the values calculated at each point. All surfaces, even the horizontal ones, should weight the incoming values based on the incident angle.

here are a few examples, with weighting and culling based on surface view…

lots of graphic edits to be done here next,

thanks for the tips! (112 KB)