Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Inconsistent results transforming points with Plane_3::to_2d and Plane_3::to_3d

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Inconsistent results transforming points with Plane_3::to_2d and Plane_3::to_3d


Chronological Thread 
  • From:
  • To:
  • Subject: Re: [cgal-discuss] Inconsistent results transforming points with Plane_3::to_2d and Plane_3::to_3d
  • Date: Tue, 01 Feb 2022 15:11:54 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:m1X4BKAuynyYig/lHemP55DYdb4zR+YMi2TDsHoBLyC9E/bo8v xG+c5w6faaslYssR0b9+xofZPwIk80lqQFhrX5X43PYOCOggLBR+xfBMnZsl/d8kbFmdK1u5 0AT0EzMqyVMXFKyeDg4Ae5FN48zNTC2L3Av5am815dCTthY6Yl0j0RMHfiLnFL
  • Ironport-phdr: A9a23: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 TphaF9Ip7yUqy9V0KwXJg==
  • Ironport-sdr: 71gqXQoKzAY6/mfc/rlFpRiRt5Gm9nGpalyjoE4hnfIYCpHrBS/re8zm2rw+4gNHBR1fjo8mRO 6OJSGh/mpbgMowg6jD9iq8GAmhaUwVlR03MMD9GJE4njGwer8nt/Mi9NWOW8XZOaFxz2mCXzAV zKCphcvWoS9tWjVRURhnUKPdy/OylsETaSfS3qs5EpKSvava9HJm+DdQ3g8KLReU9Zj8QQXJ+h nNw4zazAET800gkNPBCMWPAcflR1pgSk29KCKpXxU9rFGRiXY5gpp5KQvvMUk0yBrX0Eck1yzc 7inh+7kbgm0mUceQidOtrVWj

Hello Sebastien,

thanks for the reply! My original misconception was that
Plane_3(1,0,0,1) constrcuct an YZ-plane with distance 1 in x-direction
from the origin. In fact it is -1:

Plane_3(1, 0, 0, 1).has_on(Point_3(1, 0, 0))) # delivers False
Plane_3(1, 0, 0, 1).has_on(Point_3(-1, 0, 0))) # delivers True

The documentation
(https://doc.cgal.org/latest/Kernel_23/classCGAL_1_1Plane__3.html )
states that the coefficients of Plane_3(a,b,c,d) correspond to the
coefficients of the equation ax + bx + cx + d = 0, if filled with these
coefficients above it would result in x = -1.

So everyting is fine, and makes sense.

Am Dienstag, dem 01.02.2022 um 14:10 +0100 schrieb Sebastien Loriot:
> Welcome on the mailing list!
>
> As documented here:
> https://doc.cgal.org/latest/Kernel_23/classCGAL_1_1Plane__3.html#ad8f355a87bd5ca0fec2d423dbf5909d7
>
> `returns a point q, such that to_2d( to_3d( p )) is equal to p.`
>
> Since (-1,0,0) and (1,0,0) are both converted by to_2d() to (0,0),
> there is no way to guarantee that to_3d(to_2d(p3)) == p3 (it is
> not a bijection).
>
> Best regards,
>
>
> Sebastien.
>
>
>
>
> On 1/31/22 5:46 PM,  wrote:
> > Hello!
> >
> > First time writing on the mailing list, so I hope it is the right
> > place
> > to discuss, since I'm not super convinced, whether my finding is a
> > bug
> > or not. I transform a 3d point into 2D using a plane and transform
> > it
> > back. I would have expected approximately the same point.
> >
> > I'm using CGAL with Python SWIG bindings in the newest version
> > (commit
> > 2479e35) on Arch Linux. I took a look at the bindings code and
> > could
> > not find much code, that could do something wrong. Therefore I
> > suspect
> > the error being somewhere in the C++ part.
> >
> > Here is my example:
> > ```python
> > from CGAL.CGAL_Kernel import Plane_3, Point_3
> >
> > # plane with distance 1 in x-direction
> > plane_3d_x = Plane_3(1, 0, 0, 1)
> >
> > # this point obviously lies on the plane
> > point_3d_unit_x = Point_3(1, 0, 0)
> >
> > # results into a (0,0)
> > point_2d = plane_3d_x.to_2d(point_3d_unit_x)
> >
> > print(str(point_2d))
> >
> > assert point_2d.x() == 0
> > assert point_2d.y() == 0
> >
> > # i would have expected the same point (except for minor numerical
> > errors)
> > point_3d_retransformed = plane_3d_x.to_3d(point_2d)
> >
> > print(str(point_3d_retransformed))
> >
> > # this assertion fails, since x == -1
> > assert point_3d_retransformed.x() == 1
> > assert point_3d_retransformed.y() == 0
> > assert point_3d_retransformed.z() == 0```
> >
> > Can anyone tell, if this is a bug or explain to me, why this is
> > correct?
> >
> > Thanks in advance!
> >
>




Archive powered by MHonArc 2.6.19+.

Top of Page