.NET

Reply
Valued Contributor
HelloWorlddd
Posts: 87
Registered: ‎05-03-2013
Message 1 of 5 (200 Views)
Accepted Solution

How to determine a point on one line

200 Views, 4 Replies
03-29-2014 09:47 AM

For example:
pt(0,0,0) is on the line((1,-1,0),(-1,1,0)
then I will get true


pt(1,2,3) is not on the line((1,-1,0),(-1,1,0)
then I will get false

 

Is there exist some method that I can use?

An example will be better. Very Thanks

one way is using Curve3d.IsOn() method, it has 6 overload version, you can choose one, this is the general approach

 

when it comes to Line, another way is using Point3d.GetDistanceTo()

a Line has StartPoint and EndPoint,abbr sp & ep.

if you want to check Point3d p, then:

d1=p.GetDistanceTo(sp);

d2=p.GetDistanceTo(ep);

length=theLine.Length;

if

A:d1+d2==length

or

B:|d1-d2|=length

thus we assume p is on the line,case A means p is on the line, case B means p on the extend, see image below:

CX_0331_110831.jpg

Thank you very much, it's a easy way.
*Expert Elite*
_gile
Posts: 2,114
Registered: ‎04-29-2006
Message 2 of 5 (187 Views)

Re : How to determine a point on one line

03-29-2014 11:10 AM in reply to: HelloWorlddd

Hi,

 

You can try this overloaded Isinside method;.

 

        private bool IsInside(Line line, Point3d point)
        {
            return IsInside(line.StartPoint, line.EndPoint, point);
        }

        private bool IsInside(LineSegment3d line, Point3d point)
        {
            return IsInside(line.StartPoint, line.EndPoint, point);
        }

        private bool IsInside(Point3d start, Point3d end, Point3d point)
        {
            Vector3d v1 = start.GetVectorTo(point);
            if (v1.IsEqualTo(new Vector3d()))
                return true;
            Vector3d v2 = start.GetVectorTo(end);
            return 
                v1.IsCodirectionalTo(v2) && 
                0.0 <= v1.Length && 
                v1.Length <= v2.Length;
        }

 

 

Gilles Chanteau
Valued Contributor
cdinten
Posts: 61
Registered: ‎11-19-2010
Message 3 of 5 (139 Views)

Re: How to determine a point on one line

03-30-2014 08:09 PM in reply to: HelloWorlddd

one way is using Curve3d.IsOn() method, it has 6 overload version, you can choose one, this is the general approach

 

when it comes to Line, another way is using Point3d.GetDistanceTo()

a Line has StartPoint and EndPoint,abbr sp & ep.

if you want to check Point3d p, then:

d1=p.GetDistanceTo(sp);

d2=p.GetDistanceTo(ep);

length=theLine.Length;

if

A:d1+d2==length

or

B:|d1-d2|=length

thus we assume p is on the line,case A means p is on the line, case B means p on the extend, see image below:

CX_0331_110831.jpg

Valued Contributor
HelloWorlddd
Posts: 87
Registered: ‎05-03-2013
Message 4 of 5 (124 Views)

Re: How to determine a point on one line

03-31-2014 04:21 AM in reply to: cdinten
Thank you very much, it's a easy way.
Valued Contributor
cdinten
Posts: 61
Registered: ‎11-19-2010
Message 5 of 5 (121 Views)

Re: How to determine a point on one line

03-31-2014 04:24 AM in reply to: HelloWorlddd

it should be. it is both easy to understand in mathematics and to convert this idea to code.

Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Announcements
Are You Going To Be @ AU 2014? Feel free to drop by our AU topic post and share your plans, plug a class that you're teaching, or simply check out who else from the community might be in attendance. Ohh and don't forgot to stop by the Autodesk Help | Learn | Collaborate booths in the Exhibit Hall and meet our community team if you get a chance!