Hi Aaron ~

Thanks for your quick reply and encouragement. I definitely understand we 
may be running into a time crunch. And I understand that you want to drive 
the development of Sympy. 

Perhaps we could come up with a small, straightforward project that gets 
the ball rolling on making Sympy the foundation for a Geogebra style app 
for building geometric models.

My next step for GEOMETOR Explorer is to consolidate the construction logic 
into a Model class, which could easily become a part of sympy.geometry. The 
Model can extend from List - so it is just a container of elements. But it 
would also handle:

   - deduplicating elements
   determine if an new element is already in the list.
   - finding intersections 
   test new elements against previous elements for new points.
   - maintaining ancestral relationships
   points contain references to all parent structures.
   structures contain references to all the points on them.
   the ancestral trail of an element is its proof.
   - applying classes to elements
   like css, associate a list of class names to an element.
   classes could be used in rendering and analysis.
   classes could also be used to exclude a structure from testing 
   intersections.
   - querying subsets
   provide filtered lists for specific element types or classes
   
In the work I have done so far, I have come to think of elements in 3 
categories:

   - points 
   the data of the model.
   all points are derived except the given starting points.
   points are the food for structs.
   - structs
   the relationships of the model (lines and circles so far).
   structs are not a thing in the field, just a projection of a 
   relationship of two points.
   intersecting structs create points.
   - graphics
   the highlights of the model (segments, polygons, wedges).
   like structs, but are used for highlighting a relationship of 2 or more 
   points 
   and extracting details (length, area, etc).
   graphics are not tested for intersections by default.
   
I am heading towards subclassing the sympy.geometry elements (Point, Line 
and Circle) to create attributes for classes and ancestral info that would 
be managed by the Model. But I can also see a path for maintaining this 
info outside of the elements in the Model.

One of the key considerations I have had from the beginning is to keep the 
Model separate from the rendering and analysis processes. While I am using 
Matplotlib today for rendering, I see the opportunity to do really cool 
things with Blender and FreeCad as well. And for analysis, I have 
implemented golden section identification so far, but I can see modules for 
cross ratios, harmonic ranges, etc.

Regardless of the decision on the grant, I am committed to developing these 
concepts. And now that I have opened the door, I hope to share my progress 
with the community here and hopefully gain insight and knowledge to make 
the project successful. And I believe that independent work on the Model 
class could be integrated with Sympy at a later time, once the ideas have 
matured. The whole concept is pretty straightforward. 

Thanks again for your attention.

~ φ (phi)

On Monday, August 29, 2022 at 12:57:40 PM UTC-7 asme...@gmail.com wrote:

> Hi.
>
> Thanks for sharing. This looks like a great use of SymPy and other tools 
> in the Python ecosystem. I'd love to see more geogebra-like tools that make 
> use of SymPy and sympy.geometry to get exact algebraic expressions 
> surrounding geometric constructions.
>
> On Mon, Aug 29, 2022 at 8:47 AM phi ARCHITECT <illu...@gmail.com> wrote:
>
>> Hi Aaron and the Sympy team ~
>>
>> I hope I am not too late to propose the *GEOMETOR Explorer* project for 
>> a NumFOCUS development grant.
>
>
> The deadline is this Friday, so it's possibly too late. Can you go into 
> detail on what you'd like to propose to do? I'd prefer for these small 
> development grants to go towards making improvements to SymPy itself, 
> rather than to projects that make use of SymPy. But perhaps there are some 
> improvements that you've seen that could be made to sympy.geometry while 
> working on this. 
>
> Also, generally speaking, I'd like to use the small development grants to 
> fund people who have already contributed to SymPy before, so that there is 
> a clear track record that they are able to complete the work.
>
> Aaron Meurer 
>  
>
>>
>>
>> *GEOMETOR Explorer* is a Python library for modelling, analyzing and 
>> rendering complex geometric constructions using symbolic algebra. Of 
>> course, Sympy is at the heart of it.  
>>
>> But first, an introduction. My friends call me *phi*, as in φ, the Greek 
>> letter, for reasons that will be obvious. I am not a mathematician, but I 
>> have had a career as an architect beginning with buildings and later in 
>> developing software and enterprise systems. But my true love has always 
>> been drafting - making beautiful drawings.
>>
>> A few years ago, I decided to indulge my interest in the golden ratio, 
>> particularly making geometric constructions that demonstrate golden 
>> sections. I started with hand drawings, reteaching myself geometry and 
>> algebra. I noticed that constructing one golden section often led to other 
>> sections in the field. It seemed to be everywhere. But the challenge of 
>> demonstrating that was daunting. I first turned to Geogebra, which greatly 
>> expanded my knowledge allowing me to create large geometric constructions 
>> and confirm the golden sections, but it required a lot of manual 
>> intervention and the results were numeric values. I felt if we were to 
>> really discover patterns, we would need to build the model symbolically.
>>
>> I set out to develop an scriptable system to generate the constructions, 
>> find all intersection points, and then find all the golden sections. After 
>> a false start with a browser-based solution, last January I found Sympy and 
>> Matplotlib. I had never worked with Python before so it was a big step, but 
>> the capabilities I have been able to pull together in less than a year are 
>> amazing to me. 
>>
>> The most recent video on my YouTube channel demonstrates a series of 
>> constructions generated with GEOMETOR Explorer resulting in an incredible 
>> numbers of golden sections uncovered.
>> 22.187 • finding golden sections with the new GEOMETOR Explorer 
>> <https://youtu.be/IOKgXb6Kce0>
>>
>> GEOMETOR on Github <https://github.com/geometor>
>> I have established a Github organization (https://github.com/geometor) 
>> to be the center of all of the development and interaction around the 
>> projects, including hosting websites and documentation.
>>
>> Shifting GEOMETOR Explorer to Python has led me to shift all my content 
>> development and publishing tools to Python, as well. This will allow me to 
>> standardize on ReST for everything. So, the websites are in a state of flux 
>> but I have most the infrastructure in place. 
>>
>> There is a lot to further develop. At the core are the GEOMETOR Explorer 
>> <https://github.com/geometor/geometor-explorer> libraries. The current 
>> version in the main branch is very "scripty" - grown organically as I was 
>> learning. In the develop branch, I have started refactoring the library 
>> into a simpler and more functional interface and adding documentation. I 
>> also want to add more analysis capabilities to identify harmonic ranges / 
>> symmetries. And ultimately, publish a reliable version for anyone to use on 
>> PyPI.
>>
>> Context for further development:
>>
>>    - Deep Field project
>>    how many elements can we add to a geometric model?
>>    how many more golden sections in the field?
>>    generating large models is compute intensive -
>>    will it push Sympy to limits?
>>    - Euclid project
>>    create a functional hierarchy of all the constructions of Euclid's 
>>    Elements
>>    development on parsing the heath edition
>>    - Phyllotaxis project
>>    study golden ratio and fibonacci patterns in plant formation
>>    3d modeling
>>    - Polynumbers project
>>    based on the lectures of Norman Wildberger
>>    introduces polynomials into the Explorer capabilities
>>    crazy cool renderings
>>    - Pappus project
>>    demonstrate Pappus Theorem with analysis
>>    leading to Hexagrammum Mysticum.
>>    - Heptadecagon project
>>    create a symbolic construction of a regular 17-sided figure
>>    
>> I hope this is enough to start a conversation. I have been wanting to 
>> step into the Sympy community for some time. Consider it done.
>>
>> I have two YouTube channels if you want to see more:
>>
>>    - phi ARCHITECT 
>>    <https://www.youtube.com/channel/UCYzRQS16EBmsbKuyKMFHSFQ> channel
>>    where I talk about what I am working on
>>    - GEOMETOR <https://www.youtube.com/channel/UCHw7yqZJDQ0A6WkAlxGKLeg> 
>>    channel
>>    generated content from the research. The most recent videos were 
>>    generated, orchestrated, accompanied and assembled with Python.
>>
>> Let's see if any of this is a good fit for a grant!
>>
>> ~ φ
>> On Friday, August 5, 2022 at 1:10:13 PM UTC-7 asme...@gmail.com wrote:
>>
>>> NumFOCUS has opened 2022 round 3 of their small development grants. 
>>>
>>> NumFOCUS small development grants allow funding NumFOCUS projects, such 
>>> as SymPy for work. Each project may submit at most one grant proposal.
>>>
>>> If anyone is interested in applying for this grant to do some work on 
>>> SymPy, please reach out to me. In the past, we have used these grants to 
>>> pay people to do maintenance work and to pay people to develop some 
>>> features.
>>>
>>> I have included the details below. If you are interested in applying, 
>>> please reach out to me about it by August 26 so that we will have time to 
>>> create and submit a proposal to NumFOCUS.
>>>
>>> Timeline:
>>>
>>>    - 
>>>    
>>>    Deadline for Proposal Submission: Sep 02, 2022
>>>    - 
>>>    
>>>    Projects will be Notified: Oct 14, 2022 (or sooner)
>>>    
>>>
>>> Available Funding:
>>>
>>>    - 
>>>    
>>>    Approx. $90,000 available to be awarded
>>>    - 
>>>    
>>>    Up to $10,000 per proposal
>>>    
>>>
>>> Eligibility:
>>>
>>>    - 
>>>    
>>>    Any NumFOCUS Fiscally Sponsored or Affiliated project may submit 
>>>    *one* proposal on behalf of the project *per grant cycle*.
>>>    - 
>>>       
>>>       If you wish to solicit proposal ideas from your project 
>>>       community, the project leaders must organize their own review process 
>>> to 
>>>       select the proposal that the leadership will put forward to NumFOCUS.
>>>       - 
>>>    
>>>    Funding can be used for: code development, documentation work; 
>>>    website updates; workshops and sprints; educational, sustainability, and 
>>>    diversity initiatives, travel to meetings & events, or other types of 
>>>    projects.
>>>    - 
>>>    
>>>    Proposed work must be achievable within the 12 months following the 
>>>    award.
>>>    - 
>>>    
>>>    The call is open to applicants from any nationality and can be 
>>>    performed at any university, institute, or business worldwide (US export 
>>>    laws permitting).
>>>    
>>>
>>> Funding Distribution:
>>>
>>>    - 
>>>    
>>>    For fiscally sponsored projects only, NumFOCUS can deposit the grant 
>>>    funding directly into the project’s account. The project would then 
>>>    submit invoices through the usual channels (i.e. Open Collective) to pay 
>>>    the grant expenses.
>>>    - 
>>>    
>>>    NumFOCUS can set up an independent contractor agreement with an 
>>>    individual or company for work that exceeds $600 USD.
>>>    - 
>>>    
>>>    NumFOCUS can award the money as a grant or subcontract to a student 
>>>    or postdoc at a university (depending on the university's rules).
>>>    - 
>>>    
>>>    NumFOCUS can directly pay for expenses associated with the grant 
>>>    (e.g. booking flights on behalf of project leaders to attend a workshop, 
>>>    per diems for travel days)
>>>    
>>>
>>> You can see past successful proposals here:  
>>> https://numfocus.org/programs/small-development-grants.
>>>
>>> Aaron Meurer
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sympy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to sympy+un...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/sympy/79e109f0-3588-4817-b644-056950297b13n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/sympy/79e109f0-3588-4817-b644-056950297b13n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/55c84be3-20e5-496c-9c43-d1b55a69aa55n%40googlegroups.com.

Reply via email to