[GiDlist] Circle Problem - Follow up example

Moderator: GiD Team

Post Reply
Philippe Bouchilloux

[GiDlist] Circle Problem - Follow up example

Post by Philippe Bouchilloux »

Hello:

I was asked to submit a specific example regarding the circle problem
mentioned earlier. Here's one that's illustrative:

- Create 3 circle objects centered in 0,0 with radii 1, 0.5, and 0.25 and
delete the surfaces.
- Create two lines to connect points (-1.1, 0.025) to (1.1, 0.025) and
(-1.1, -0.025) to (1.1, -0.025)
(these are two parallel lines to Ox with Y=0.025 and Y=-0.025)
- Make 3 copies of these lines by successive 45deg. rotations about
(0,0). You end up with 8 lines.
- Do all the line intersections (16 per circle)

Now, measure the distance between the two points obtained by intersecting
one line with one circle (we'll say that two parallel lines form a
pair). Measure one pair, then the next, etc. Using GiD 7.2 on my windoze
xp laptop, here is what I find:

For disc 1 (large):
1.99932
1.99932
1.99751
1.99751
1.99932
1.99932
1.99919
1.99919

For disc 2 (intermediate):
0.998624
0.998624
0.998425
0.998425
0.998634
0.998634
0.996863
0.996863

For disc 3 (small):
0.497494
0.497450
0.497001
0.497494
0.497494
0.497330
0.496836
0.496782

In all cases, variations of the third decimal can be observed. This may
seem small, but the relative error on disc 3 is not negligible, I think.

For circles 1 and 2, distance measurements are identical for the lines of
the same pair, but all the pairs in disc 2 show different results, whereas
measurements are more consistent for disc 1.
In the case of circle 3, that is not true any more. This indicates that the
loss of accuracy is indeed related to the model dimensions (but I think a
circle of radius 0.25 is not unreasonable).

These results will most likely change if I redo the same exact example,
which is also interesting.

I have not yet checked the cylinder case.

I hope this is helpful.

Philippe
Ramon Ribó

[GiDlist] Circle Problem - Follow up example

Post by Ramon Ribó »

Hello,

We appreciate the example. It will be useful for future
tests.

As a first idea, I think that the error is more related
to the intersection algorithm that to the mathematical
representation of the NURBS. One way of checking this is
the following:

- Create the circle
- Generate a mesh with an arbitrary number of elements
- Check the distance from any of the generated points to
the center
- In my example, the distance is exactly equal to the
radius. In other example there may be a small difference
but not in the third digit.

Regards,

--
Compass Ing. y Sistemas Dr. Ramon Ribo
http://www.compassis.com ramsan at compassis.com
c/ Manuel Girona, 61 bajos tel. +34 93 204 10 82
08034 Barcelona, Spain fax. +34 93 204 19 09

-----Mensaje original-----
De: gidlist-admin at gatxan.cimne.upc.es
[mailto:gidlist-admin at gatxan.cimne.upc.es] En nombre de Philippe
Bouchilloux
Enviado el: miércoles, 25 de junio de 2003 7:55
Para: GiDList
Asunto: [GiDlist] Circle Problem - Follow up example


Hello:

I was asked to submit a specific example regarding the circle problem
mentioned earlier. Here's one that's illustrative:

- Create 3 circle objects centered in 0,0 with radii 1, 0.5, and 0.25
and
delete the surfaces.
- Create two lines to connect points (-1.1, 0.025) to (1.1, 0.025) and
(-1.1, -0.025) to (1.1, -0.025)
(these are two parallel lines to Ox with Y=0.025 and Y=-0.025)
- Make 3 copies of these lines by successive 45deg. rotations about
(0,0). You end up with 8 lines.
- Do all the line intersections (16 per circle)

Now, measure the distance between the two points obtained by
intersecting
one line with one circle (we'll say that two parallel lines form a
pair). Measure one pair, then the next, etc. Using GiD 7.2 on my
windoze
xp laptop, here is what I find:

For disc 1 (large):
1.99932
1.99932
1.99751
1.99751
1.99932
1.99932
1.99919
1.99919

For disc 2 (intermediate):
0.998624
0.998624
0.998425
0.998425
0.998634
0.998634
0.996863
0.996863

For disc 3 (small):
0.497494
0.497450
0.497001
0.497494
0.497494
0.497330
0.496836
0.496782

In all cases, variations of the third decimal can be observed. This may

seem small, but the relative error on disc 3 is not negligible, I think.

For circles 1 and 2, distance measurements are identical for the lines
of
the same pair, but all the pairs in disc 2 show different results,
whereas
measurements are more consistent for disc 1.
In the case of circle 3, that is not true any more. This indicates that
the
loss of accuracy is indeed related to the model dimensions (but I think
a
circle of radius 0.25 is not unreasonable).

These results will most likely change if I redo the same exact example,
which is also interesting.

I have not yet checked the cylinder case.

I hope this is helpful.

Philippe



_______________________________________________
GiDlist mailing list
GiDlist at gid.cimne.upc.es
http://gid.cimne.upc.es/mailman/listinfo/gidlist
Enrique Escolano

[GiDlist] Circle Problem - Follow up example

Post by Enrique Escolano »

It's not a intersection bug or a intrinsic problem of the Nurbs to describe
a circle.
It's a bug in a subdivision algorithm of rational Nurbs: Some weights are
bad calculated in the division procedure.

This is corrected for the next GiD version.
I attach your sample obtained after the related correction.

Enrique Escolano

----- Original Message -----
From: "Philippe Bouchilloux" pb at magsoft-flux.com
To: "GiDList" gidlist at gatxan.cimne.upc.es
Sent: Wednesday, June 25, 2003 7:55 AM
Subject: [GiDlist] Circle Problem - Follow up example


Hello:

I was asked to submit a specific example regarding the circle problem
mentioned earlier. Here's one that's illustrative:

- Create 3 circle objects centered in 0,0 with radii 1, 0.5, and 0.25 and
delete the surfaces.
- Create two lines to connect points (-1.1, 0.025) to (1.1, 0.025) and
(-1.1, -0.025) to (1.1, -0.025)
(these are two parallel lines to Ox with Y=0.025 and Y=-0.025)
- Make 3 copies of these lines by successive 45deg. rotations about
(0,0). You end up with 8 lines.
- Do all the line intersections (16 per circle)

Now, measure the distance between the two points obtained by intersecting
one line with one circle (we'll say that two parallel lines form a
pair). Measure one pair, then the next, etc. Using GiD 7.2 on my windoze
xp laptop, here is what I find:

For disc 1 (large):
1.99932
1.99932
1.99751
1.99751
1.99932
1.99932
1.99919
1.99919

For disc 2 (intermediate):
0.998624
0.998624
0.998425
0.998425
0.998634
0.998634
0.996863
0.996863

For disc 3 (small):
0.497494
0.497450
0.497001
0.497494
0.497494
0.497330
0.496836
0.496782

In all cases, variations of the third decimal can be observed. This may
seem small, but the relative error on disc 3 is not negligible, I think.

For circles 1 and 2, distance measurements are identical for the lines of
the same pair, but all the pairs in disc 2 show different results, whereas
measurements are more consistent for disc 1.
In the case of circle 3, that is not true any more. This indicates that
the
loss of accuracy is indeed related to the model dimensions (but I think a
circle of radius 0.25 is not unreasonable).

These results will most likely change if I redo the same exact example,
which is also interesting.

I have not yet checked the cylinder case.

I hope this is helpful.

Philippe



_______________________________________________
GiDlist mailing list
GiDlist at gid.cimne.upc.es
http://gid.cimne.upc.es/mailman/listinfo/gidlist

-------------- next part --------------
A non-text attachment was scrubbed...
Name: SubdivisionPrecision.gid.zip
Type: application/x-zip-compressed
Size: 5476 bytes
Desc: not available
Url : http://listas.cimne.upc.edu/pipermail/gidlist/attachments/20030626/d2cde166/attachment.bin
Philippe Bouchilloux

[GiDlist] Circle Problem - Follow up example

Post by Philippe Bouchilloux »

Thanks Enrique

This is corrected for the next GiD version.
I attach your sample obtained after the related correction.
Post Reply