MoI discussion forum
MoI discussion forum

Full Version: Surprizing things about MOI3D that you learn by teaching it.

Show messages:  1-9  10-29  30-49  50-51

From: MO (MO_TE)
17 Mar 2023   [#30]
"PlaneCenter" node




address:
Solids/PlaneCenter

============================
"CurveMorph" node
This is the node version of "CurveMorph" script by Max Smirnov.
Morph between two curves



Inputs:
two curves
curves number

address:
Curves2/CurveMorph

Attachments:
CurveMorph.js
PlaneCenter.js


From: Frenchy Pilou (PILOU)
18 Mar 2023   [#31] In reply to [#30]
Cool!
From: MO (MO_TE)
19 Mar 2023   [#32]
"Array3D" node
Based on "Array3D" script by Max Smirnov.




Address:
Objects2/Array3D

Attachments:
Array3D.js


From: Frenchy Pilou (PILOU)
19 Mar 2023   [#33]
Excellent!

I will must add all these nodes on my repository!
https://moiscript.weebly.com/biblio-elephant.html
From: TMeeks
20 Mar 2023   [#34] In reply to [#32]
That's wonderful! I am constantly amazed by the work of other MOI3D users!

Thanks!
From: MO (MO_TE)
20 Mar 2023   [#35]
Thank you guys
And thanks to max for his scripts.
I just realized that it's missing randomization, So updated my last post with the new node.
Have fun :)
From: MO (MO_TE)
24 Mar 2023   [#36]
"ConnectPoints" node



Address:
Curves2/ConnectPoints

"FatLines" node
Based on "FatLines" script by Max Smirnov


Address:
Curves2/FatLines

Attachments:
ConnectPoints.js
FatLines.js


From: Frenchy Pilou (PILOU)
24 Mar 2023   [#37]
Fat lines is a very cool function!
From: MO (MO_TE)
26 Mar 2023   [#38]
"Sum", "Average" and "RandInRange" nodes




Address:
Basic/Sum
Basic/Average
Basic/RandInRange
//////////////////////////

"RadialPattern" node
Based on Max Smirnov's "RadialPattern" script



Address:
Objects2/RadialPattern

Attachments:
Average.js
RadialPattern.js
RandInRange.js
Sum.js


From: Frenchy Pilou (PILOU)
26 Mar 2023   [#39]
Perfect!
From: James (JFH)
28 Mar 2023   [#40] In reply to [#38]
MO,

Thank you for all your recent node contributions. It is gratifying to have the functionality of NE extended, however I think it is important to resist redundancy where at all possible.

You were perhaps unaware that there was a "Fatlines" node in existence contributed by Wayne. I see that you have added 2 speed modes, which may offer performance / fidelity improvements. Wayne installed his node under Construct2 directory which I think is the appropriate address.

As well, determining the average of a numArray is already provided by Max's "Extract" node. Could "Sum" be added to the "Extract" drop down menu?

As for your "planeCenter" node; this is essentially a replica of Kirsten's "SubD/SelCenterPlane" which is counterintuitively located in SubD directory; Solids is the appropriate directory. However, Wayne made a small modification to Curves/Rectangle node to output surfaces as well as outlines. I have found that in doing so, "SubD/SelCenterPlane" was already redundant. I am not sure if Wayne released Curves2/Rectangle2 to the forum, I believe he did, but anyway it is an elegant & coherent method to generating a plane. This is the perfect example of adding functionality to NE without adding bloat.

Your "RandInRange" has all the functionality of the original "Random" node, yet with the facility to operate within a chosen range and in so it is a worthy replacement.

I made some minor changes to the node's defaults so that it operates similarly to "Random" without connecting inputs. There are many application where only a single floating point number between 0 - 1 is required on running the node, as a consequence I have also made "digital" the default mode. I have attached revised code below, for your consideration.

I hope this post does not read as being critical of your contributions, quite the opposite; I am very happy that you have picked up the mantle, but only that it would be a better time investment to not be reinventing the wheel.

Keep up the good work,
James
https://www.instagram.com/nodeology/



Attachments:
RandInRange.js

Image Attachments:
MO_nodes.jpg  random.jpg 


From: MO (MO_TE)
28 Mar 2023   [#41] In reply to [#40]
Hi James
Thank you for your time and for these helpful suggestions. :)

About "FatLines" node you are right. I didn't know this node already exists.
Fast mode works just like the Max's "FatLines" script.
Slow mode gives different results on closed curves.

I agree with you, but sometimes it's more convenient to write a node than to finding it. :)
And sometimes redoing is because of having different NE versions.
Like this one:
My "Extract" node is a completely different node. :)


Generating a plane with "rectangle" node is nice, but I couldn't find "rectangle2" node.
Also in my NE version, "SelCenterPlane" node works just for one point.
Here is a timing comparison.

From: James (JFH)
28 Mar 2023   [#42] In reply to [#41]
Mo,

quote:
sometimes it's more convenient to write a node than to finding it.
That made me laugh:)
quote:
My "Extract" node is a completely different node. :)
You have the correct Basic/Extract node, however it is a multi-function node. The numArray operations may be accessed by Right Button Clicking on the title bar. See below


There are a number of these multi-function nodes: Basic/Lenght for example.

quote:
I couldn't find "rectangle2" node.
I have attached below. Also attached are Circle2, Polygon2 & Star2

James
https://www.instagram.com/nodeology/

Attachments:
circle2.js
polygon2.js
rectangle2.js
star2.js

Image Attachments:
ExtractRMB.jpg 


From: MO (MO_TE)
29 Mar 2023   [#43] In reply to [#42]
You are right. I had not noticed that.
I've changed the extract node to add "sum" function.

Also thanks for attached nodes. :)

Attachments:
Extract.js


From: James (JFH)
29 Mar 2023   [#44] In reply to [#43]
Thanks Mo,
quote:
I've changed the extract node to add "sum" function.

I installed "Extract.js", quit & reopened Moi then NE & numArray Options on Extract node, but "Sum" option did not appear.
This is despite that function Extract() within Extract.js should overwrite previous version in Basic.js
Nevertheless I tried commenting out function Extract() in basic.js, but still no "Sum" option.

Thinking that it may be a caching issue, I restarted the computer, but no luck.
Any idea what could be the issue?

James
https://www.instagram.com/nodeology/
From: MO (MO_TE)
29 Mar 2023   [#45] In reply to [#44]
"extract" function exists in "basic.js" and "basic2.js" files
"basic.js" line : 448
"basic2.js" line 149
They overwrite "extract" node.
Try commenting out "extract" function in "basic2.js" file as well.
Or just manually modify them.
I've changed this line:
code:
this.local = {pointarray:["X", "X", "Y", "Z", "rX", "rY", "rZ", "Scale"], numarray:["Min", "Min", "Max", "Average"]};

To this:
code:
this.local = {pointarray:["X", "X", "Y", "Z", "rX", "rY", "rZ", "Scale"], numarray:["Min", "Min", "Max", "Average", "Sum"]};

and added this line:
code:
case 4:	o = 0; for ( i = 0; i<inp.length; i++) o += inp[i]; break;

after this line:
code:
case 3:	o = 0; for ( i = 0; i<inp.length; i++) o += inp[i];	o /= inp.length; break;

From: James (JFH)
29 Mar 2023   [#46] In reply to [#45]
quote:
Try commenting out "extract" function in "basic2.js" file as well.

Of course this was the solution.
It hadn't occurred to me that there was a second version of function Extract() in basic2.js as well.
Thanks MO

James
https://www.instagram.com/nodeology/

PS I had a go at adding a couple more option for deriving numerical results from a numArray: Median and Mode.
unfortunately this was beyond me. Anyway I don't know how useful these would be, but if you are interested (& only if you are) maybe you could have a crack at it.

Image Attachments:
MedianMode.jpg 


From: MO (MO_TE)
30 Mar 2023   [#47] In reply to [#46]
Hi James
I'm not good at math, and I've never used "median" and "Mode".
but I did some research.
I added the "median" and "Mode" option.
take a look.

Attachments:
Extract.js


From: James (JFH)
31 Mar 2023   [#48] In reply to [#47]
Thanks Mo,
quote:
I added the "median" and "Mode" option. take a look.

Yes that works brilliantly. On small thing: Mode only works for unimodal arrays, ie it only outputs first occurring mode if there are multiple similar occurrence of numbers within an array. Also it outputs the first number if no mode is found. Solving this is likely more effort than is warranted for an application that will be rarely required. Maybe it would be all-round easier to just remove the "Mode" option.


I have been having a play with your other recent node contributions. I wonder if you could post a demonstration of your Points/CoordinateFrames node in use. I was unable to work out how it functions, and how it might be applied.

In the course of this experimentation I was reminded of a much needed, yet missing functionality for NE. The arrayExt/idxSelect node is supremely useful, but it could be made even more so by having the option to invert the selection. See above.

Say you have an numArray : 6,7,8,9,10 and an index input: 0,2,4 with "Invert Selection" option the output would be: 7,9
And it would operate similarly for points and objects.

Certainly this is a need that arises often, whereas the finding the mode of an array is a rather arcane requirement.

Have a great weekend
James
https://www.instagram.com/nodeology/

Image Attachments:
indexSelect.jpg 


From: MO (MO_TE)
31 Mar 2023   [#49] In reply to [#48]
Hi James
About "mode" option: Yes, I see it works for first mode number.
I'll find a better way to solve this later.
Actually, I decided that "mode" option would return the first input number if there is no mode number.
(having no output causes "Display" node to error)
But if you don't need that, it is as easy as changing this line:
code:
var item = array[0];

to this:
code:
var item ;


I think changing "idxSelect" node to have an inverse mode is possible, But I need to study the code more.

Although I was working on a new node to kinda solve this problem. I called it "FilterArray" node!
I was going to post it, But you were quicker. :)
It searches through an array of numbers and outputs filtered/unfiltered numbers and their indices.

Show messages:  1-9  10-29  30-49  50-51