elaborated on Grassmann.jl quaternions#95
elaborated on Grassmann.jl quaternions#95KronosTheLate merged 10 commits intoJuliaPackageComparisons:mainfrom
Conversation
|
I have to admit, this is above my paygrade. I am unable to assess the content. With that said, my inclination is to just merge it, given that it is written by someone more knowledgable than me. I have two minor immediate concerns: Firstly, it that it seems like your additions provide a lot of information, and some of it is theoretical knowledge about quaterions. Is all of it required to highlight the differences between the packages ? Second, if this PR is merged, then the amount of text about Remember, details about the full abilities of each package are better left for the respective documentations. We are only interested in what one package can do, that another can not. I would completely understand if you are primarily concerned with representing Grassmann.jl, as you are the developer of it. I am only asking because I am unable to write about this myself, so I can not fix it up at a later point. I am therefore taking the liberty to be a little demanding. In any case, I am very happy for your contribution! |
my paygrade as a free software developer on Grassmann.jl is zero, so you must be in the negative based on that claim
Yes, I understand the concern, I thought it might be an issue, but I just wanted to quickly write something without thinking about it a whole lot at first. I will refine this pull request later today |
code comments coach brevity julia> using Grassmann; basis"3" # create grassman elements
(⟨×××⟩, v, v₁, v₂, v₃, v₁₂, v₁₃, v₂₃, v₁₂₃)
julia> s,i,j,k = v,v12,-v13,v23 # assign quaternion
(v, v₁₂, -1v₁₃, v₂₃)
julia> i*j == k # test structure
true
julia> quatvalues(s+2i+3j+4k) # exported function accepts quaternion signature
4-element StaticVectors.Values{4, Int64} with indices SOneTo(4):
1
2
3
4 |
|
Quaternion algebra exists as a specialized sub-algebra within a more general
Converting a quaternion operator julia> Matrix(operator(exp(v12*π/8)))
3×3 Matrix{Float64}:
0.707107 -0.707107 0.0
0.707107 0.707107 0.0
0.0 0.0 1.0As a result of the framework of geometric algebra implemented in |
|
If that's still too long, the matrix conversion example can be removed. |
|
Deleted the last code snippet example and replaced it with this: Comparison of quaternions in the context of This pull request is ready to be merged, if nobody has anything else to contribute as of now @KronosTheLate @hyrodium |
|
Document generation succeeded! |
|
Made one last commit deleting 2 words from the list items to fit into the column formatting of the preview website. |
|
This looks good! I am only missing one sentence in the start of the section. Something like "Grassman.jl can fully replace Quaternions.jl. The syntax is somewhat more verbose and general." Or "Grannman.jl is not a replacement for Quaterions.jl. The packages have different goals, and if you only intend to work with quaternions, then Quaterions.jl is likely simpler to use. Quaterions.jl also has equal or better performance, better support for automatic differentiation, and more edge-cases covered compared to Grassman.jl' imolementation of quaternions." As you can see, the conclusion could go either way, I am not sure. But just a sentence about if the package overlap completely or partially in their quaterions capabilities, and what is reccomended for users looking to just use quaterions. |
|
@KronosTheLate you are basically asking me for my own bias opinion, which I tried to leave out, but now it is included In the traditional quaternion packages there is only access to a very limited mathematical scope, which is similar to being color blind or unable to see more colors. This developer (for example), will feel a loss of color vision to downgrade from |
|
I take your point. Writing these comparisond will have to be a balance between representing objective truth, and being specific enough to be useful. With that said, I do not believe that the analogy to being color blind is something that really helps people choose. I also suspect that it is unfair to Quaterions.jl to compare it with colorblindness, just due to the immediate negative connotations. Language like "more limited in scope" is both easier to understand and more useful. I think I will attempt to write something myself that I believe will be of more help. The gist of it will be that Grassman.jl can to everything that pure quaternion packages can do, but that the syntax is more verbose and abstract, due to being part of a larger formalism. |
|
@KronosTheLate I have made another commit to change the color blindness terminology to imaging technology terminology, since it's more accurate to speak about a choice of technology than a biological predicament |
|
Thanks, that is much better. I made one final adjustment to it: The "black-white" analogy is stille quite favourable towards Grassman.jl. I therefore took the liberty to be more negative in the sentence bout the negative aspects, writing that the syntax will be more abstract and verbose. I feel like that strikes a good balance in being positive in expressing the pros, and more negative in expressing the downsides, which helps me a lot in getting a feeling for the tradeoffs. If you are happy with that change, I will merge this ^_^ |
|
It's not the verbiage I would use, but doesn't conceptually conflict with the original meaning, so you can merge it if you want. |
| In the traditional quaternion packages there is only access to a very limited mathematical scope, which is similar to black and white images instead of full color. | ||
| This developer (for example), will feel a loss of mathematical expressibility when downgrading from `Grassmann` to a more limited quaternion formalism, so the comparison is similar to choosing between black and white or full color image technology. |
There was a problem hiding this comment.
I don't fully understand these sentences. Could you provide some concrete code examples to illustrate the "color" of Grassmann.jl? The analogy of black and white versus full color doesn't quite clarify the advantages for those unfamiliar with Grassmann.jl.
There was a problem hiding this comment.
Grassmann.jl has more colors because it is built on the full exterior algebra basis of Grassmann algebra, which encompasses far more than just quaternions in three dimensions. With Grassmann.jl you can generalize quaternions to any lower or higher dimensions, and not only does it support generalization of quaternions, it also supports reflections and not only rotations, it supports projective geometry and other kinds of geometrical transformations other than pure rotations that quaternions are enabling. So with Grassmann you get a full color vision, while with a pure quaternion package you are only limited to something like black and white colors.
There was a problem hiding this comment.
The analogy of black and white versus full color doesn't quite clarify the advantages for those unfamiliar with Grassmann.jl.
Think of it like this: if you only know pure quaternions, then it is as if you can only see in black and white. You are unable to perceive that there are more colors that exist, so you cannot fathom what kind of an upgrade Grassmann.jl is without upgrading your cognition. After you learn lots of mathematics, you will eventually understand that pure quaternion packages are like black and white technology when compared with full color Grassmann.jl
|
@hyrodium I've converted the analogy into a more direct comparison to avoid ambiguity In the traditional quaternion packages there is only access to a limited mathematical scope constrained to rotations in three dimensions, while in Hopefully this completes the pull request for now. |
|
Let's finish this, you can reference me with @chakravala if there's more discussion in the future. |
Feel free to change the examples I provided in the pull request, this is just a template you can expand on if you want.