(twice the amount of lines, it'll take twice as long).
If you nest two loops you're iterating over each line, and then you iterate again over each line. So when you now have twice as many lines, it takes four times as long O(N*N) or O(N²)
With an octree you can reduce the second iteration from O(N) to O(log N). The reason octrees are fast is because they allow you to quickly reject large amounts of lines in your set. Lines are no longer stored in a list, but rather in recursive spatial buckets. If we determine that a certain bucket is too far away to possibly yield any valid results, we can instantly skip all the lines in that buckets and any sub-buckets. If you're lucky, you can reject ~85% of the local data in every iteration, which means even large collections of lines are reduced to only a few potential candidates very quickly.
Thinking about this I'm actually not sure now whether lookup in my Tree3d class is O(log N) or O(sqrt N), but the basic principle holds. The reason the resulting algorithm is O(N * log N) is because the outer loop is still O(N) but the inner loop is now replaced with an O(log N) searcher, so you end up with O(N) * O(log N) = O(N log N)
At least that's how I think it works, computational theory has never been my strong suit.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 4:55pm on November 29, 2012
s\pycco-script.py", line 10, in <module> load_entry_point('Pycco==0.3.0', 'console_scripts', 'pycco')() File "C:\Python34\lib\site-packages\pkg_resources.py", line 353, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "C:\Python34\lib\site-packages\pkg_resources.py", line 2302, in load_entry_point return ep.load() File "C:\Python34\lib\site-packages\pkg_resources.py", line 2029, in load entry = __import__(self.module_name, globals(),globals(), ['__name__']) File "<frozen importlib._bootstrap>", line 2237, in _find_and_load File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible File "C:\Python34\lib\site-packages\pycco-0.3.0-py3.4.egg\pycco\__init__.py",line 1, in <module> File "<frozen importlib._bootstrap>", line 2237, in _find_and_load File "<frozen importlib._bootstrap>", line 2222, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 2164, in _find_spec File "<frozen importlib._bootstrap>", line 1940, in find_spec File "<frozen importlib._bootstrap>", line 1916, in _get_spec File "<frozen importlib._bootstrap>", line 1897, in _legacy_get_spec File "<frozen importlib._bootstrap>", line 863, in spec_from_loader File "<frozen importlib._bootstrap>", line 904, in spec_from_file_location File "C:\Python34\lib\site-packages\pycco-0.3.0-py3.4.egg\pycco\main.py", line 484 print "pycco = %s -> %s" % (s, dest) ^SyntaxError: invalid syntax…
Added by Lionel to Plankton at 4:07am on November 7, 2014
r-workshop programme will focus on the design and 1:1 fabrication of an interactive pavilion for the 2012 International Festival of Electronic Language (FILE). Located on Avenida Paulista, the pavilion will react to light sensors and human activity, so as to transform and create a range of different lighting and spatial effects, triggering further movement and producing an interactive feedback loop of behaviour and response. To accommodate this responsiveness, the design should be developed using recursive scripting, associative modelling and digital fabrication.
Each workshop will focus on a different phase of the pavilion’s design and construction. Instruction will be led by Rob Stuart-Smith of Kokuggia and Tristan Simmonds of Simmonds Studio, with Lawrence Friesen of Generative Geometry, Anne Save de Beaurecueil and Franklin Lee of SUBdV, together withand other AA tutors, as well as local structural engineers and set-designers. Each workshop will offer introductory instruction in computational design - Grasshopper, (GECO, Firefly) and Arduino, and digital fabrication, while advanced instruction will be offered to participants undertaking multiple workshops.
Workshop 1 will develop design variations in small models, as well as material and structural scale modeling, testing and initial 1:1 prototyping, following computational and digital fabrication instruction. Workshop 2 will produce 1:1 prototyping. Following computational and digital fabrication instruction, it will explore the mechanics and electronics of the light-sensors and motors that generate the transformations of the pavilion. Workshop 3 will fabricate the final elements, working directly with manufacturers, testing partial assemblies. Advanced development of all circuits and Arduino scripts will take place following computational and digital fabrication instruction. Workshop 4 will focus on the final assemblage of the pavilion on site.
www.aaschool.ac.uk/saopaulo.
OTHER WORKSHOPS
Workshop 2: 4–13 January 2012
Workshop 3: 3–12 April 2012
Workshop 4: 3–12 July 2012
…
I would to convert then to meshes: when I connect the triangular surfaces to mesh, they are divided into two smaller triangles.
I would like the triangle AEa, instead there is an other segment that connects point E with the midpoint of Aa!
Any ideas?
Can you help me, please? Thanks in advance
…
ce issue with Rhino and shouldn't make an issue with EnergyPlus but just to have cleaner geometries, I untrimmed base surfaces so zones are closed brep now.
I also noticed that when you are adding multiple openings to a surface, the surface doesn't show-up in the output of createHBZoneFromHBSurfaces. The surfaces are there though and show up once you explode the zone! Again should be a tolerance issue for join. I need to take a closer look to both of these.
Also, in a number of the zones you had wall surfaces connected to createZoneFromHBSurfaces both before and after adding glazing. I removed parent surfaces so you don't end up having duplicate surfaces.
Back to adjacency which was your question, the issue happens since you have couple of zones with the same name so component was assuming them to be the same zone so it wouldn't solve the adjacency (Yes! it shouldn't. That was a bug which is fixed now). I changed the names and now it should find the surfaces that you are looking for.
Moreover, once you solve the adjacency, next solveAdjacency won't overwrite the BC unless you set remCurrentAdj to True.
Mostapha…
oCommonSDK, I modified a working C# component that does something similar (ReduceMesh, written by Andrew Heumann). Both scripts are attached.
Aside from changing the component name and eliminating the P parameter, I made two modifications to the script:1) changed line 87 from private void RunScript(Mesh M, double P, ref object A) to: private void RunScript(Mesh M, ref object A)2) changed line 93 from: Rhino.RhinoApp.RunScript("_-ReduceMesh _ReductionPercentage " + Convert.ToString(P) + " _Enter", false); to: Rhino.RhinoApp.RunScript("_-MatchMeshEdge " + " _Enter", false);When I run the ReduceMesh component, the mesh object I feed it gets baked, the ReduceMesh command is run, the temporary object is deleted, and the reduced mesh result is returned. (Thanks, Andrew).When I run the MatchMeshEdge component, the mesh object I feed it is baked, the MatchMeshEdge command is run, but the temporary object is not deleted and no result is returned. The runtime error reads: "Sequence contains no elements (line 0)". I have a feeling that the command line string I am handing to RunScript is incomplete. When I enter it manually on the Rhino command line I see that it wants a mesh and three parameters. Of course I can hit Enter to accept the default values, but when you invoke a command through RunScript do you have to supply all parameters regardless? Also, where would I find details on the argument types that the command wants? For example, the last parameter reads "RatchetMode=On" or "RatchetMode=Off". How do I know if the type is Bool or the literal string "On" or "Off"?I am a complete novice at this so any help you can provide would be greatly appreciated! …