You can subscribe to this list here.
| 2001 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(83) |
Nov
(57) |
Dec
(111) |
| 2004 |
Jan
(38) |
Feb
(121) |
Mar
(107) |
Apr
(241) |
May
(102) |
Jun
(190) |
Jul
(239) |
Aug
(158) |
Sep
(184) |
Oct
(193) |
Nov
(47) |
Dec
(68) |
| 2005 |
Jan
(190) |
Feb
(105) |
Mar
(99) |
Apr
(65) |
May
(92) |
Jun
(250) |
Jul
(197) |
Aug
(128) |
Sep
(101) |
Oct
(183) |
Nov
(186) |
Dec
(42) |
| 2006 |
Jan
(102) |
Feb
(122) |
Mar
(154) |
Apr
(196) |
May
(181) |
Jun
(281) |
Jul
(310) |
Aug
(198) |
Sep
(145) |
Oct
(188) |
Nov
(134) |
Dec
(90) |
| 2007 |
Jan
(134) |
Feb
(181) |
Mar
(157) |
Apr
(57) |
May
(81) |
Jun
(204) |
Jul
(60) |
Aug
(37) |
Sep
(17) |
Oct
(90) |
Nov
(122) |
Dec
(72) |
| 2008 |
Jan
(130) |
Feb
(108) |
Mar
(160) |
Apr
(38) |
May
(83) |
Jun
(42) |
Jul
(75) |
Aug
(16) |
Sep
(71) |
Oct
(57) |
Nov
(59) |
Dec
(152) |
| 2009 |
Jan
(73) |
Feb
(213) |
Mar
(67) |
Apr
(40) |
May
(46) |
Jun
(82) |
Jul
(73) |
Aug
(57) |
Sep
(108) |
Oct
(36) |
Nov
(153) |
Dec
(77) |
| 2010 |
Jan
(42) |
Feb
(171) |
Mar
(150) |
Apr
(6) |
May
(22) |
Jun
(34) |
Jul
(31) |
Aug
(38) |
Sep
(32) |
Oct
(59) |
Nov
(13) |
Dec
(62) |
| 2011 |
Jan
(114) |
Feb
(139) |
Mar
(126) |
Apr
(51) |
May
(53) |
Jun
(29) |
Jul
(41) |
Aug
(29) |
Sep
(35) |
Oct
(87) |
Nov
(42) |
Dec
(20) |
| 2012 |
Jan
(111) |
Feb
(66) |
Mar
(35) |
Apr
(59) |
May
(71) |
Jun
(32) |
Jul
(11) |
Aug
(48) |
Sep
(60) |
Oct
(87) |
Nov
(16) |
Dec
(38) |
| 2013 |
Jan
(5) |
Feb
(19) |
Mar
(41) |
Apr
(47) |
May
(14) |
Jun
(32) |
Jul
(18) |
Aug
(68) |
Sep
(9) |
Oct
(42) |
Nov
(12) |
Dec
(10) |
| 2014 |
Jan
(14) |
Feb
(139) |
Mar
(137) |
Apr
(66) |
May
(72) |
Jun
(142) |
Jul
(70) |
Aug
(31) |
Sep
(39) |
Oct
(98) |
Nov
(133) |
Dec
(44) |
| 2015 |
Jan
(70) |
Feb
(27) |
Mar
(36) |
Apr
(11) |
May
(15) |
Jun
(70) |
Jul
(30) |
Aug
(63) |
Sep
(18) |
Oct
(15) |
Nov
(42) |
Dec
(29) |
| 2016 |
Jan
(37) |
Feb
(48) |
Mar
(59) |
Apr
(28) |
May
(30) |
Jun
(43) |
Jul
(47) |
Aug
(14) |
Sep
(21) |
Oct
(26) |
Nov
(10) |
Dec
(2) |
| 2017 |
Jan
(26) |
Feb
(27) |
Mar
(44) |
Apr
(11) |
May
(32) |
Jun
(28) |
Jul
(75) |
Aug
(45) |
Sep
(35) |
Oct
(285) |
Nov
(99) |
Dec
(16) |
| 2018 |
Jan
(8) |
Feb
(8) |
Mar
(42) |
Apr
(35) |
May
(23) |
Jun
(12) |
Jul
(16) |
Aug
(11) |
Sep
(8) |
Oct
(16) |
Nov
(5) |
Dec
(8) |
| 2019 |
Jan
(9) |
Feb
(28) |
Mar
(4) |
Apr
(10) |
May
(7) |
Jun
(4) |
Jul
(4) |
Aug
|
Sep
(4) |
Oct
|
Nov
(23) |
Dec
(3) |
| 2020 |
Jan
(19) |
Feb
(3) |
Mar
(22) |
Apr
(17) |
May
(10) |
Jun
(69) |
Jul
(18) |
Aug
(23) |
Sep
(25) |
Oct
(11) |
Nov
(20) |
Dec
(9) |
| 2021 |
Jan
(1) |
Feb
(7) |
Mar
(9) |
Apr
|
May
(1) |
Jun
(8) |
Jul
(6) |
Aug
(8) |
Sep
(7) |
Oct
|
Nov
(2) |
Dec
(23) |
| 2022 |
Jan
(23) |
Feb
(9) |
Mar
(9) |
Apr
|
May
(8) |
Jun
(1) |
Jul
(6) |
Aug
(8) |
Sep
(30) |
Oct
(5) |
Nov
(4) |
Dec
(6) |
| 2023 |
Jan
(2) |
Feb
(5) |
Mar
(7) |
Apr
(3) |
May
(8) |
Jun
(45) |
Jul
(8) |
Aug
|
Sep
(2) |
Oct
(14) |
Nov
(7) |
Dec
(2) |
| 2024 |
Jan
(4) |
Feb
(4) |
Mar
|
Apr
(7) |
May
(2) |
Jun
(1) |
Jul
|
Aug
(5) |
Sep
|
Oct
|
Nov
(4) |
Dec
(14) |
| 2025 |
Jan
(22) |
Feb
(6) |
Mar
(5) |
Apr
(14) |
May
(6) |
Jun
(11) |
Jul
(19) |
Aug
|
Sep
(17) |
Oct
(1) |
Nov
(2) |
Dec
(18) |
| 2026 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
(2) |
Jun
(1) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Alexandre F. <o.a...@gm...> - 2010-12-13 21:16:13
|
When i said some test i was very vague, excuse-me, the test is a sequence of triples (x,y,z), of several triangles, it's not a triangle strip, if you send some different data please explain how i should interpret it. |
|
From: Alexandre F. <o.a...@gm...> - 2010-12-13 21:07:30
|
input: -0.5 -0.5 1 1.2 1 3 1.2 -1 3 0.5 0.5 0.9 -1.2 -1 3.3 -1.2 1 3 e output: 0.013636 -0.046791 1.6043 1.2 -1 3 0.05122 -0.66212 1.6485 -1.2 1 3 0.013636 -0.046791 1.6043 0.05122 -0.66212 1.6485 0.05122 -0.66212 1.6485 -0.5 -0.5 1 0.013636 -0.046791 1.6043 0.013636 -0.046791 1.6043 1.2 1 3 1.2 -1 3 0.5 0.5 0.9 0.05122 -0.66212 1.6485 0.013636 -0.046791 1.6043 0.05122 -0.66212 1.6485 -1.2 -1 3.3 -1.2 1 3 e |
|
From: Daniel J S. <dan...@ie...> - 2010-12-12 20:02:36
|
Alexandre Felipe wrote: > In Reply to Daniel: > > Hiperplane? i think planes are enough, because any representation will be > 3D, ignoring colors and any extra data, the only thing we do here is copy > that data (and eventually interpolate it as mentioned above). Or we can call > some function which will process the data such as colors. A hyperplane is simply a general method of representing an N-1 dimensioned surface in a N dimensional space. As an example, say we want to represent a line in 2D space. We could pick two points to represent that line. We could use the formula y = mx + b. Or we could represent the line as w'v = b, where w = [1 -m]' and v = [y x]'. Convenience more than anything. > If we concern with the 3D problem i'd discovered fighting with my PC that > matrixe algebra is not the better aproach. It's very good for > transformations, or vectors with to many components, or even dynamic > programming, but for geometric problems is better to use geometric solution. For me, three dimensions is already too many components. :-) Dan |
|
From: Hans-Bernhard B. <HBB...@t-...> - 2010-12-12 19:28:31
|
On 12.12.2010 20:10, Ethan Merritt wrote: > Is it possible that instead of modifying the pm3d code, one could modify > the hidden-surface removal code in hidden3d? The hidden3d code is > already finding all the relevant lines of intersection and occlusion. Actually, no. hidden3d deals with hidden _line_ removal, only. It has no code whatsoever for either sorting or splitting triangles. > At the end of the hidden3d calculation there is a collection of edges, > each of which is either all or part of an edge from the original set > of polygons or an intersection of two polygons. At that point the code > walks through the list and draws all the edges. Again, not really. hidden3d draws individual surviving segments immediately when they're discovered (in_front() calls draw_edge() itself). There is no complete list of visible edge fragments in memory at any time. > Does it track enough information to also call term->filled_polygon() > for each facet? It doesn't even try to track facets. It tracks edge fragments, not polygon fragments. > If not, could the data structures be expanded to hold that tracking > information? "Expanding" wouldn't really do describing the job justice. It'd be more of a complete rewrite. |
|
From: Alexandre F. <o.a...@gm...> - 2010-12-12 19:26:17
|
In Reply to Daniel: Hiperplane? i think planes are enough, because any representation will be 3D, ignoring colors and any extra data, the only thing we do here is copy that data (and eventually interpolate it as mentioned above). Or we can call some function which will process the data such as colors. If we concern with the 3D problem i'd discovered fighting with my PC that matrixe algebra is not the better aproach. It's very good for transformations, or vectors with to many components, or even dynamic programming, but for geometric problems is better to use geometric solution. regarding the licence of the 3D class, there is no problem, since i writen it from 0Byte, using pure C++, the only thing i didn't wrote was sqrt function. |
|
From: Ethan M. <merritt@u.washington.edu> - 2010-12-12 19:10:35
|
On Sunday, December 12, 2010, Hans-Bernhard Bröker wrote: > On 12.12.2010 16:51, Alexandre Felipe wrote: > > > Find all the triangle pairs for wich the nearest vertex of firstis > > nearer than the farthest of the vertexes of the second triangle, and the > > farthest vertex of first is farther than the nearest of the vertexes of > > the second triangle. > [...] > > You've pretty much re-invented the Newell-Newell-Sancha algorithm that > I've mentioned before, except that their textbook algorithm doesn't > split the job into two passes (first splitting, second sorting) like you > did. That avoids a good deal of unnecessary splitting. Is it possible that instead of modifying the pm3d code, one could modify the hidden-surface removal code in hidden3d? The hidden3d code is already finding all the relevant lines of intersection and occlusion. At the end of the hidden3d calculation there is a collection of edges, each of which is either all or part of an edge from the original set of polygons or an intersection of two polygons. At that point the code walks through the list and draws all the edges. Does it track enough information to also call term->filled_polygon() for each facet? If not, could the data structures be expanded to hold that tracking information? |
|
From: Hans-Bernhard B. <HBB...@t-...> - 2010-12-12 18:22:57
|
On 12.12.2010 16:51, Alexandre Felipe wrote: > Find all the triangle pairs for wich the nearest vertex of firstis > nearer than the farthest of the vertexes of the second triangle, and the > farthest vertex of first is farther than the nearest of the vertexes of > the second triangle. [...] You've pretty much re-invented the Newell-Newell-Sancha algorithm that I've mentioned before, except that their textbook algorithm doesn't split the job into two passes (first splitting, second sorting) like you did. That avoids a good deal of unnecessary splitting. > After proceeding in this way you can use any criteria to sort the > triangles, i think this is the minimal algorithm, it takes about 1 days > to be coded ant two or three to get working :D If only. You would be amazed at the kind of precision problems you'll run into with this algorithm in practice. Just for starters, consider what all those tests will do with a pair of triangles that just so happen to share a vertex, or an edge. |
|
From: Daniel J S. <dan...@ie...> - 2010-12-12 18:11:31
|
Alexandre Felipe wrote: > "I had reached the conclusion that implementing the rendering by determining > intersections of surfaces pretty much as defined might be the best place to > put effort." - Daniel J Sebald > > > Find all the triangle pairs for wich the nearest vertex of firstis nearer > than the farthest of the vertexes of the second triangle, and the farthest > vertex of first is farther than the nearest of the vertexes of the second > triangle. > > these are the ones who may need to be splited. > > then take the planes containing the two triangles, intersect them, it can > result an line (say Li), or a null intersection, in case of being a line, > find all the intersections of Li with the triangles edges. > it must be in the following sequence > > enter triangle 1, exit triangle 1 > enter triangle 2, exit triangle 2 > > in all other cases, the triangles are splited in the line Li > > After proceeding in this way you can use any criteria to sort the triangles, > i think this is the minimal algorithm, it takes about 1 days to be coded ant > two or three to get working :D Yes, that is the main idea. But this is a two week project, I believe. The number of cases balloons when going from 2D to 3D. First, one has to represent the triangles as planes (a hyperplane is always convenient). There is some linear algebra associated with computing that. Those would have to be saved with the triangle representations. Then there is determining the line of interestection (probably an easy matrix inversion). But there is the possibility of a singular matrix, which probably corresponds to the two planes being parallel. So, one computes the line of intersection of the plane, then there is still the issue determining exactly where the intersection is in terms of the original triangles. There is complete coverage, partial coverage, triangle broken into two pieces, etc. And when the split occurs, a four sided polygon could result, which means that four sided polygon would have to be represented as two triangles. It's easy envisioning how it would work, but doing it nicely is another issue. Not something to embark on without a good plan and mathematical representation of the problem. > I have a C++ 3D geometry class. but it uses overloaded operators > (everywhere), with this class I am able to implement, i think, what i > described above. if one want to translate the C++ to C and compile it i can > spend some time for writing it, and send yet this week. It would need proper licensing if it is a completed work. Theory of operation is just as good. Dan |
|
From: Stanislav M. <sta...@gm...> - 2010-12-12 17:08:37
|
Hello, On Fri, Dec 10, 2010 at 10:06:52PM +0100, Petr Mikulik wrote: > > > I suggest that a better approach would be to add a pass that splits large > > > triangles into smaller pieces before sorting and rendering. > > > The only tricky part is how to define "large". > > > > I was thinking about exactly the same thing, but then realized that > > there is already the "interpolate" option that does (almost) the same. > > Does "pm3d interpolate x,y" works for you? You mean, for that dataset that I submitted together with the patch? I just tested it with "interpolate 0,0". As expected, interpolation smoothens the surface and produces a better figure, but it still has very noticeable artefacts (see the attached default.png). If I add "corners2depth c3" the result is much better (c3.png). > Yes, this interpolation is some kind of smoothing because you add new > objects. > > > of 4 corners, instead, it introduces a new pm3d option "corners2depth" > > that allows for configurability of the depth sorting in a similar manner > > as already existing "corners2color" option adds configurability > > I think this option is useful. Yes, with the curent rendering algorithm it is for sure useful. -- Stanislav |
|
From: Alexandre F. <o.a...@gm...> - 2010-12-12 15:52:05
|
"I had reached the conclusion that implementing the rendering by determining intersections of surfaces pretty much as defined might be the best place to put effort." - Daniel J Sebald Find all the triangle pairs for wich the nearest vertex of firstis nearer than the farthest of the vertexes of the second triangle, and the farthest vertex of first is farther than the nearest of the vertexes of the second triangle. these are the ones who may need to be splited. then take the planes containing the two triangles, intersect them, it can result an line (say Li), or a null intersection, in case of being a line, find all the intersections of Li with the triangles edges. it must be in the following sequence enter triangle 1, exit triangle 1 enter triangle 2, exit triangle 2 in all other cases, the triangles are splited in the line Li After proceeding in this way you can use any criteria to sort the triangles, i think this is the minimal algorithm, it takes about 1 days to be coded ant two or three to get working :D I have a C++ 3D geometry class. but it uses overloaded operators (everywhere), with this class I am able to implement, i think, what i described above. if one want to translate the C++ to C and compile it i can spend some time for writing it, and send yet this week. |
|
From: Guido T. <gu...@tr...> - 2010-12-10 21:12:40
|
Hello, the Octave command "gset" that is mentioned in the Gnuplot's FAQ has become obsolete (at least in Octave version 3.2.4). Unfortunately, I still need to figure out how to "set terminal" and "set output", however the FAQ probably needs to be updated (at paragraph 5.6). Also the link to (faq.tex) in http://www.gnuplot.info/faq/index.html does not work. Thanks. GT |
|
From: Petr M. <mi...@ph...> - 2010-12-10 21:07:04
|
> > I suggest that a better approach would be to add a pass that splits large > > triangles into smaller pieces before sorting and rendering. > > The only tricky part is how to define "large". > > I was thinking about exactly the same thing, but then realized that > there is already the "interpolate" option that does (almost) the same. Does "pm3d interpolate x,y" works for you? Yes, this interpolation is some kind of smoothing because you add new objects. > of 4 corners, instead, it introduces a new pm3d option "corners2depth" > that allows for configurability of the depth sorting in a similar manner > as already existing "corners2color" option adds configurability I think this option is useful. --- PM |
|
From: Ethan M. <merritt@u.washington.edu> - 2010-12-10 17:24:09
|
On Friday, December 10, 2010 03:17:16 am Stanislav Maslovski wrote: > > I suggest that a better approach would be to add a pass that splits large > > triangles into smaller pieces before sorting and rendering. > > The only tricky part is how to define "large". > > I was thinking about exactly the same thing, but then realized that > there is already the "interpolate" option that does (almost) the same. > But sometimes we want to look at a dataset without smoothing it, > right? Splitting an existing triangle into sub-triangles would not create any smoothing. In the absence of occluding objects, the rendered image of the new set of smaller triangles is indistiguishable from that of the original single triangle. The issue of interpolation only arises if you need to assign a color to the newly created vertex based on differing colors belonging to the existing vertices. |
|
From: Stanislav M. <sta...@gm...> - 2010-12-10 11:39:55
|
On Thu, 2010-12-09 at 12:11 -0800, Ethan Merritt wrote: > On Thursday, December 09, 2010 07:53:12 am Stanislav Maslovski wrote: > > > Replying to myself: actually, after reading some docs (and the code) I > > > realized that it was a limitation of the rendering algorithm used by the > > > gnuplot (a variant of painter's algorithm). So, I solved this issue by > > > patching pm3d.c:pm3d_depth_queue_flush() so that sorting of quadrangles > > > was done based on the average depth of 4 corners. > > I don't think this is the best way to approach the problem. > As Hans-Bernhard pointed out, _any_ simple-minded sorting on a > single Z value is going to fail for some configuration of triangles. > The bigger the triangle, the more likely that any single Z value is not > right for the whole thing. BTW, just a little clarification in case if someone reading this has not looked into the patch: the patch does more than just averaging the depth of 4 corners, instead, it introduces a new pm3d option "corners2depth" that allows for configurability of the depth sorting in a similar manner as already existing "corners2color" option adds configurability to the coloring. -- Stanislav |
|
From: Stanislav M. <sta...@gm...> - 2010-12-10 11:17:36
|
Hello, On Thu, 2010-12-09 at 12:11 -0800, Ethan Merritt wrote: > On Thursday, December 09, 2010 07:53:12 am Stanislav Maslovski wrote: > > > Replying to myself: actually, after reading some docs (and the code) I > > > realized that it was a limitation of the rendering algorithm used by the > > > gnuplot (a variant of painter's algorithm). So, I solved this issue by > > > patching pm3d.c:pm3d_depth_queue_flush() so that sorting of quadrangles > > > was done based on the average depth of 4 corners. > > I don't think this is the best way to approach the problem. > As Hans-Bernhard pointed out, _any_ simple-minded sorting on a > single Z value is going to fail for some configuration of triangles. > The bigger the triangle, the more likely that any single Z value is not > right for the whole thing. Yes, I agree. That was just the first thing I tried and it worked for my task. However, until a better rendering algorithm is available, I still suggest including my patch because it makes the depth sorting configurable which certainly helps in some cases (while keeping the same default behavior). The reasoning behind this is purely practical: 1) configurability of depth sorting can be useful with sparse datasets; 2) all the infrastructure that my patch relies upon is already in the code (in the realization of corners2color option). > I suggest that a better approach would be to add a pass that splits large > triangles into smaller pieces before sorting and rendering. > The only tricky part is how to define "large". I was thinking about exactly the same thing, but then realized that there is already the "interpolate" option that does (almost) the same. But sometimes we want to look at a dataset _without_ smoothing it, right? -- Stanislav |
|
From: Alexandre F. <o.a...@gm...> - 2010-12-09 23:21:56
|
> > What about a proper combination of sampling and clipping? Compare these > It's new for me, now i'm not so sure of the benefits of implementing that... |
|
From: Tatsuro M. <tma...@ya...> - 2010-12-09 22:47:30
|
Hello --- Peter Juhasz wrote: > > You may be better off with installing and learning to use a linux > system where you don't have to shoot yourself in the foot if you want > to compile anything. Another option to build gnuplot on windows is to use the cygwin. Unfortunately the wxt terminal cannot be built with libraries installed with cygwin setup.exe but almost all terminals can be implemented far easier than on native windows. Lacking of wxt terminal on the cygwin can be covered if you use the pngcairo terminal. (Of course it it cannot be used interactively but quality of the bitmap image is the almost the same as that made by wxt terminal.) Regards Tatsuro -------------------------------------- Let's write special new year cards! - Yahoo! JAPAN Nengajo 2011 Special Site - http://pr.mail.yahoo.co.jp/nenga2011/ |
|
From: Petr M. <mi...@ph...> - 2010-12-09 22:24:08
|
> Yes, I know that increase the number of samples and plot with dots may work. > this could resolve the problem until the user zoom the chart. > > The user defined functions is not so arbitrary. and my analisis is for > simple functions > supose that i know f(x) and g(x) What about a proper combination of sampling and clipping? Compare these plots: set yrange [-500:500] plot tan(x) and set samples 10000 set clip one set yrange [-500:500] plot tan(x) > I'd like very much linux, but between linux and internet i chose internet, ??? --- PM |
|
From: Daniel J S. <dan...@ie...> - 2010-12-09 21:58:38
|
Ethan Merritt wrote: > On Thursday, December 09, 2010 07:53:12 am Stanislav Maslovski wrote: > >>Hello, >> >>On Tue, 2010-12-07 at 15:42 +0000, Stanislav Maslovski wrote: >> >>>On Tue, 2010-12-07 at 11:51 +0000, Stanislav Maslovski wrote: >>> >>>>Hello, >>>> >>>>Can anyone advise me on how can I workaround the problem with 3D >>>>rendering in the plot [1]? The problem is that the surfaces that must be >>>>hidden are seen in this plot (to clearly see them, >>>>load "maxout.gnuplot" and try rotating the plot). >>>> >>>>The plot was generated in maxima, using the draw3d command. Any help >>>>will be very much appreciated! >>>> >>>>[1] http://zalil.ru/30094104 (wait 10 secs, and download will start) >>> >>>Replying to myself: actually, after reading some docs (and the code) I >>>realized that it was a limitation of the rendering algorithm used by the >>>gnuplot (a variant of painter's algorithm). So, I solved this issue by >>>patching pm3d.c:pm3d_depth_queue_flush() so that sorting of quadrangles >>>was done based on the average depth of 4 corners. > > > I don't think this is the best way to approach the problem. > As Hans-Bernhard pointed out, _any_ simple-minded sorting on a > single Z value is going to fail for some configuration of triangles. > The bigger the triangle, the more likely that any single Z value is not > right for the whole thing. > > I suggest that a better approach would be to add a pass that splits large > triangles into smaller pieces before sorting and rendering. > The only tricky part is how to define "large". > [OK, there's potentially another tricky part if you are coloring by > something other than Z since you have to decide how to assign colors > to the newly created vertices.] > > You can probably find sample code for this kind of divide-and-conquer > approach in a textbook or article, but it should be simple enough to > work it out from scratch. The rendering of the 3D surfaces doesn't cut it. I tried very hard myself to come up with a good compromise, but it seemed there was no good approach for the general case. (Some examples would look good, others not.) What Ethan is suggesting might help (or not, depending on the example perhaps), but that still isn't the answer. I had reached the conclusion that implementing the rendering by determining intersections of surfaces pretty much as defined might be the best place to put effort. It was just after I had looked at the 2D mesh code that had some boundary issues. The 2D code looks for intersections of lines and then breaks those lines up. If one thinks in terms of vectors and matrices (i.e., linear algebra formulas), keeping things straight is not too difficult. The same would apply for 3D surfaces. Look for intersecting surfaces and then break those up--being 3D there are a lot of cases and the result will be a growth in code, but one just has to be organized about it. The "painter algorithm" works for a first pass, i.e., if there is not intersection along the depth, (or width or height) for two particular triangles, then there is no way there can be intersections and no need to check. That will speed processing significantly. Actual 3D rendering would be a nice addition. Might make for a good little project one of these days. Dan |
|
From: Daniel J S. <dan...@ie...> - 2010-12-09 21:40:42
|
Alexandre Felipe wrote:
> Yes, I know that increase the number of samples and plot with dots may
> work. this could resolve the problem until the user zoom the chart.
> Whatever is the GNU tarball it appeared with the source code.
>
> /Finding discontinuities (or determining whether a function
> is continuous in a given interval) is quite hard for an arbitrary
> function./
> /How exactly do you intend to do this?/
>
> The user defined functions is not so arbitrary. and my analisis is for
> simple functions
> supose that i know f(x) and g(x)
>
> if(c = discontinuity of f){
> if((g(x1) < c) != (g(x2) < c)) {
> an treat it or only break the line betwen x1 and x2
> or find the closer x3 of the discontinuity and plot two points there
> one with the limit(f(x), x -> x3+) and other with limit(f(x), x -> x3-)
> i don't know how the gnuplot handles it internaly but it handles
>
> plot '-' with lines
> 1 2
> 2 2
>
> 2 1
> 2 1
> e
> }
> }else if(c = discontinuity of g betwen x1 and x2){
> plot the function in c with the two lateral limits
> }
>
>
> it's easy to implement it recursively less than 1000 lines i think :D
>
> discontinuities that i know
> 1/x - x = 0
> x < 0, x = 0
> gamma(x), x integer < 0
> floor(x), x integer
> it there are others is only specify
> so the returning value in each evaluation should carry information about
> the discontinuity only for the
> working interval,
If you know the limit points of your functions then there are ways to construct plots of multiple segments and achieve what you are looking for. Take a look at some of the examples in the demos:
http://gnuplot.sourceforge.net/demo_4.4
In particular, the statistical distributions have some good examples:
http://gnuplot.sourceforge.net/demo_4.4/prob.html
Check out the gamma function plot.
Dan
|
|
From: Alexandre F. <o.a...@gm...> - 2010-12-09 21:23:17
|
Yes, I know that increase the number of samples and plot with dots may work.
this could resolve the problem until the user zoom the chart.
Whatever is the GNU tarball it appeared with the source code.
*Finding discontinuities (or determining whether a function
is continuous in a given interval) is quite hard for an arbitrary
function.*
*How exactly do you intend to do this?*
The user defined functions is not so arbitrary. and my analisis is for
simple functions
supose that i know f(x) and g(x)
if(c = discontinuity of f){
if((g(x1) < c) != (g(x2) < c)) {
an treat it or only break the line betwen x1 and x2
or find the closer x3 of the discontinuity and plot two points there
one with the limit(f(x), x -> x3+) and other with limit(f(x), x -> x3-)
i don't know how the gnuplot handles it internaly but it handles
plot '-' with lines
1 2
2 2
2 1
2 1
e
}
}else if(c = discontinuity of g betwen x1 and x2){
plot the function in c with the two lateral limits
}
it's easy to implement it recursively less than 1000 lines i think :D
discontinuities that i know
1/x - x = 0
x < 0, x = 0
gamma(x), x integer < 0
floor(x), x integer
it there are others is only specify
so the returning value in each evaluation should carry information about the
discontinuity only for the
working interval,
this will work for functions with a limited number of discontinuities, say
n(discontinuities) <= samples
this will increase the evaluation complexity by something about 3 times,
wich i think is not a problem, since rendering is in most cases much more
costly
> and then improve the automatic
> choose for ploting range in fundamental singularities points
I can't follow this at all.
it's only a different way of determining xmin and xmax, in the configuration
of the plot is determine as the values can be out of the image, plot loss,
say 5%, meaning that if the [tx]range is of lenght L, only 0.05*L can be
represented out of the chart area.
first i evaluate all points in the curve.
when i find a singularity i assign it's value like is the lateral limits
if is(finite or zero){
adjust yrange to contain this discontinuity
}
if it's not a discontinuity but is a critical point
adjust the yrange to contain this discontinuity
all +inf -inf are disqualified to be range delimiters
but are placed in a list priority_queue would be fine
yrange_m is this range
if yrange don't contains (100% - char_loss) it's needed to increase it
for this it can be taken every neighbor of +inf or -inf and include it
yrange_max = yrange_m * inf_importance
while(yrange_max < yrange){
xrange_p = xrange
include the nearest y that is out of yrange
}
if(yrange_max / yrange_p < yrange / yrange_max){
yrange = yrange_p;
}
i particularly don't think is important represent ifinitum, i would assign
inf_importance something like 2.0
complexity O(N Log N) in respect to samples, because for the second stage
it's not a simple investigation, but a
inclusion by priority.
There are still another approach that is:
positive_attractiveness = sum(1/derivative(outgoing point) -
derivative(1/incoming point) at ymax))
negative_attractiveness = sum(-1/derivative(outgoing point) +
derivative(1/incoming point) at ymin))
ymax +=
(increase*positive_attractiveness/(positive_attractiveness+negative_attractiveness))
ymin -=
(increase*negative_attractiveness/(positive_attractiveness+negative_attractiveness))
as the function is interpolated by straight lines derivative is the angular
coefficient
it can be used in the last step when i know that derivative will not change,
there after the while
while(yrange_max < yrange){
xrange_p = xrange
include the nearest y that is out of yrange
}
increase = yrange - yrange_max;
it fit the range to exactly yrange_max.
Other thing that would be fine is to ensure that all inflection points are
inside the chart, but it is a quite complex to explain here and now, since i
took more than half hour to write this kkk
I'd like very much linux, but between linux and internet i chose internet,
moreover, with linux at least you change information only with people with
linux it's needed to face so many compability problems.
other linguistic and grammatical corrections are welcome in English to join
this mailing list I just read.
|
|
From: Ethan M. <merritt@u.washington.edu> - 2010-12-09 20:11:48
|
On Thursday, December 09, 2010 07:53:12 am Stanislav Maslovski wrote: > Hello, > > On Tue, 2010-12-07 at 15:42 +0000, Stanislav Maslovski wrote: > > On Tue, 2010-12-07 at 11:51 +0000, Stanislav Maslovski wrote: > > > Hello, > > > > > > Can anyone advise me on how can I workaround the problem with 3D > > > rendering in the plot [1]? The problem is that the surfaces that must be > > > hidden are seen in this plot (to clearly see them, > > > load "maxout.gnuplot" and try rotating the plot). > > > > > > The plot was generated in maxima, using the draw3d command. Any help > > > will be very much appreciated! > > > > > > [1] http://zalil.ru/30094104 (wait 10 secs, and download will start) > > > > Replying to myself: actually, after reading some docs (and the code) I > > realized that it was a limitation of the rendering algorithm used by the > > gnuplot (a variant of painter's algorithm). So, I solved this issue by > > patching pm3d.c:pm3d_depth_queue_flush() so that sorting of quadrangles > > was done based on the average depth of 4 corners. I don't think this is the best way to approach the problem. As Hans-Bernhard pointed out, _any_ simple-minded sorting on a single Z value is going to fail for some configuration of triangles. The bigger the triangle, the more likely that any single Z value is not right for the whole thing. I suggest that a better approach would be to add a pass that splits large triangles into smaller pieces before sorting and rendering. The only tricky part is how to define "large". [OK, there's potentially another tricky part if you are coloring by something other than Z since you have to decide how to assign colors to the newly created vertices.] You can probably find sample code for this kind of divide-and-conquer approach in a textbook or article, but it should be simple enough to work it out from scratch. Ethan > > > > It would be nice if this could be made configurable. I will probably > > come out with a patch in the next couple of days to enable this feature. > > Just in case: the patch with an example is available from here > http://sourceforge.net/tracker/?func=detail&aid=3132649&group_id=2055&atid=302055 > > Cheers, > -- > Stanislav |
|
From: Peter J. <pet...@gm...> - 2010-12-09 16:43:05
|
On Thu, Dec 9, 2010 at 1:06 PM, Alexandre Felipe <o.a...@gm...> wrote: > I downloaded the source in a zip file from the web-based svn in the > sourceforge. > The purpose to build gnuplot for windows is that i want include a feature > there. It is a simple > one, predict discontinuities on function interavals, would you tried > plotting 1/x with lines? Umm, have you ever tried plotting 1/x with a fixed yrange and a large sample size? (e.g. "set yrange [-10:10]; set sample 1000; plot 1/x") my intention is create some stuff to handle > discontinuities, How exactly do you intend to do this? Gnuplot doesn't have any capabilities for function analysis. All it does is evaluating the function at regular intervals, then connecting the x,y pairs with line segments. Finding discontinuities (or determining whether a function is continuous in a given interval) is quite hard for an arbitrary function. and then improve the automatic > choose for ploting range in fundamental singularities points, since it > should be not be > displayed anyway, it's not smart grow the range to view every points, more > over, if the > function have mor than one singularity in usually one of then determines the > plotting range > and the other are not ocuppying all the chart area. I can't follow this at all. When this issue is > resolved, is time to hack 3D charts. The 3D code doesn't need any more hacks, it needs a thorough rethinking and rewriting. > The main problem i am facing is that i have a little experience on > conpilling projects from > source, i would like to learn more about, but my time is sparse, my use of > open source > where run the compiled programs, or learn some programming tecnics to apply > in my > programs, that are generaly for particular use. > I still don't know how it works but what i will need is only one terminal > say wxt (i have > already the wxWidgets configured in my machine). For my purpose i could > disable all-1 > terminals, and plot only 1d functions in 2d space, because my first change > is in the valuation of functions. Could someone having a windows compiling > version send-me only the important archives preferably reducing the > dependency from other souces, i repeat, i'm not a compiler expert, please be > understanding, I use code::blocks, if some can create a code::blocks project > and put it working, even if with limited features, i would be grateful. > In the "binary" dir there are several .dll, using it in some way with the > linker is not enough? You may be better off with installing and learning to use a linux system where you don't have to shoot yourself in the foot if you want to compile anything. Péter Juhász |
|
From: Stanislav M. <sta...@gm...> - 2010-12-09 15:53:47
|
Hello, On Tue, 2010-12-07 at 15:42 +0000, Stanislav Maslovski wrote: > On Tue, 2010-12-07 at 11:51 +0000, Stanislav Maslovski wrote: > > Hello, > > > > Can anyone advise me on how can I workaround the problem with 3D > > rendering in the plot [1]? The problem is that the surfaces that must be > > hidden are seen in this plot (to clearly see them, > > load "maxout.gnuplot" and try rotating the plot). > > > > The plot was generated in maxima, using the draw3d command. Any help > > will be very much appreciated! > > > > [1] http://zalil.ru/30094104 (wait 10 secs, and download will start) > > Replying to myself: actually, after reading some docs (and the code) I > realized that it was a limitation of the rendering algorithm used by the > gnuplot (a variant of painter's algorithm). So, I solved this issue by > patching pm3d.c:pm3d_depth_queue_flush() so that sorting of quadrangles > was done based on the average depth of 4 corners. > > It would be nice if this could be made configurable. I will probably > come out with a patch in the next couple of days to enable this feature. Just in case: the patch with an example is available from here http://sourceforge.net/tracker/?func=detail&aid=3132649&group_id=2055&atid=302055 Cheers, -- Stanislav |
|
From: Petr M. <mi...@ph...> - 2010-12-09 15:30:10
|
> I downloaded the source in a zip file from the web-based svn in the > sourceforge. I wonder about this ... I can only see "Download GNU tarball" (i.e. .tar.gz) at http://gnuplot.cvs.sourceforge.net/viewvc/gnuplot/ > The purpose to build gnuplot for windows is that i want include a feature > there. It is a simple one, predict discontinuities on function interavals, > would you tried plotting 1/x with lines? my intention is create some stuff > to handle discontinuities, and then improve the automatic choose for > ploting range in fundamental singularities points, since it should be not > be displayed anyway, it's not smart grow the range to view every points, > more over, if the function have mor than one singularity in usually one of > then determines the plotting range and the other are not ocuppying all the > chart area. When this issue is resolved, is time to hack 3D charts. The > main problem i am facing is that i have a little experience on conpilling > projects from source, i would like to learn more about, but my time is > sparse, my use of open source where run the compiled programs, or learn > some programming tecnics to apply in my programs, that are generaly for > particular use. I still don't know how it works but what i will need is > only one terminal say wxt (i have already the wxWidgets configured in my > machine). For my purpose i could disable all-1 terminals, and plot only 1d > functions in 2d space, because my first change is in the valuation of > functions. Could someone having a windows compiling version send-me only > the important archives preferably reducing the dependency from other > souces, i repeat, i'm not a compiler expert, please be understanding, I > use code::blocks, if some can create a code::blocks project and put it > working, even if with limited features, i would be grateful. In the > "binary" dir there are several .dll, using it in some way with the linker > is not enough? The most easy way to compile win32 binary is to get MingW32 and use "make -f Makefile.mgw". You will get the traditional windows terminal, not wxt, but you don't have to deal with all the dependencies. --- PM |