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
Solved! Go to Solution.
Solved by HelloWorlddd. Go to Solution.
Solved by cdinten. Go to Solution.
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; }
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:
it should be. it is both easy to understand in mathematics and to convert this idea to code.