How to determine a point on one line

How to determine a point on one line

Anonymous
Not applicable
1,172 Views
4 Replies
Message 1 of 5

How to determine a point on one line

Anonymous
Not applicable

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

0 Likes
Accepted solutions (2)
1,173 Views
4 Replies
Replies (4)
Message 2 of 5

_gile
Consultant
Consultant

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
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

0 Likes
Message 3 of 5

Anonymous
Not applicable
Accepted solution

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

0 Likes
Message 4 of 5

Anonymous
Not applicable
Accepted solution
Thank you very much, it's a easy way.
0 Likes
Message 5 of 5

Anonymous
Not applicable

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

0 Likes