Comments (8)
I'll look at adding instanced rendering for static objects (where available) - it should speed things up substantially on modern architectures. I'll also add an option to decide on the tesselation of the circles and spheres as totals do run up quickly there. (spheres are 8192 triangles now, so 500 of them makes 4 million .. )
from ganja.js.
Sounds fantastic, thanks Steven!
from ganja.js.
Hi Hugo, Steven,
@hugohadfield
As you noted you were rending large numbers of planes, would you mind sharing an example of your rendering?
I met a problem in rending sheet elements in CGA. I want them centered at diffrent points.
In my ten-line code toy example, it seems that the sheets/planes are centered along x-axis, not at the specified points.
@enkimute
Is it an rendering issue?
Maybe I shouldn’t represent them as CGA planes?
Thank you very much in advance,
Hongying
from ganja.js.
Hi Hongying, planes in the conformal model are inherently infinite, therefore it is pretty arbitrary to define a positional point to draw them in 3d... if you want specific spatial localisation it would probably be better to represent them via triangular facets which ganja also supports!
from ganja.js.
Thank you, Hugo.
I thought in rendering an infinite plane, the location of the center is a rendering preference of ganja.
So we could not specify the location of a bivector either?
from ganja.js.
I'm afraid it isn't a rendering option, perhaps if you dig into the source code you may be able to add one but it would be seperate to the multivector representation of the planes themselves... When you mention bivectors what specific bivectors do you mean? Point pairs are renderable, and due to being a "round" are inherently localisable, I'm not sure if ganja support flat points and some of the other bivector interpretations
from ganja.js.
I forgot to mention a space in saying "bivector". I mean bivector in general (still this is too vague :( ).
For example, according to "Geometric Algebra for Computer Science", we can obtain "the tangent to a flat or to a round passing through one of its points p" by p \rfloor \hat{X}
(p
is a point on X
, p ^ X = 0
) (on page 445, Eq 15.1, Figure 15.6). So I assume specifying a bivector at certain point is not an algebraic problem, and is a rendering issue.
Similarly, there is a figure illustrating different type of vectors (free, normal, line, and tangent vector) on page 452.
from ganja.js.
Hi ying17zi,
The parametrisation ganja.js uses is different from the one GA-viewer has, and focuses mostly on the representations dictated by the outer product null space (to display element A, show the collection of all points x for which x^A=0). (and you can use it side-by-side to the implicit visualizer). Because of this mindset, it renders for example point-pairs as a pair of points and not as a line (although there is an option for that : {useUnnaturalLineDisplayForPointPairs:true}
. For planes, the automatic display is centered, but it is quite easy to render two triangles instead, given four points a,b,c,d , simply do this.graph([[a,b,c],[a,c,d]],{gl:true, conformal:true})
.
A rewrite of the renderer is coming up (which will allow mixing of implicit and parametrised representations), I'll make sure to see how much more of the GAViewer functionality I can include (I will also discuss this with Dr Dorst).
from ganja.js.
Related Issues (20)
- Straightforward way to get current camera view/projection matrix? HOT 1
- Add TypeScript support HOT 6
- Calling Inverse raises error in 0 dimensions
- The code is unclear HOT 1
- Support WebVR HOT 3
- Feature Request for {data:cubeF, transform:1+1e0}
- Feature request: larger viewport in (2,0,1)*
- Having troubles including classes within Algebra() scope HOT 4
- division by zero inconsistent with IEEE 754 standard
- Table at section "Ganja ingredients and syntax." should have a row for inner product operator "|" HOT 1
- Nested reactivity broken with OpenGL HOT 1
- Feature Request: General Inverse creation in the code generator HOT 1
- I found a reference that might be useful to include in the documentation
- Why doesn't ganja.js follow the right hand rule?
- Inline parser regression: character choking
- Offsets out of bounds for Quaternion addition
- [inline] Support for Object Methods
- Long SVG lines bug in Chrome
- Dual of 1 returns false
- Can't drag points on iPad Pro 2021
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ganja.js.