VS:PtOnLine: Difference between revisions

From Vectorworks Developer
Jump to navigation Jump to search
No edit summary
 
m (1 revision)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{LocationMain|category=LocationVS|specific=}}
 
__TOC__
__TOC__
<vwDoc>
<vwDoc>
Line 5: Line 5:
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
<desc>
<desc>
Determines if a point is on a line. The 1st test is: if AB + BC = AC, B is on AC.
Determines if a point is on a line.</desc>
 
This method is very fast, but produces an elliptical fuzz zone.
 
The second test measures the actual distance from the test point to the nearest point on the line. This eliminates the elliptical bulge in the fuzz zone.
</desc>


-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
<def>
<def>
<funcDef lang="vs">
<funcDef lang="vs">
FUNCTION PtOnLine(ptX, ptY, ptZ :REAL; begPtX, begPtY, begPtZ :REAL; endPtX, endPtY, endPtZ :REAL; tolerance :REAL) :BOOLEAN;
FUNCTION PtOnLine(pt:VECTOR; begPt:VECTOR; endPt:VECTOR; tolerance:REAL) : BOOLEAN;
</funcDef>
</funcDef>
<funcDef lang="py">
<funcDef lang="py">
Line 27: Line 22:
<lineList ident=1>
<lineList ident=1>
<line>
<line>
ptX, ptY, ptZ
pt
REAL
VECTOR


</line>
</line>
<line>
<line>
begPtX, begPtY, begPtZ
begPt
REAL
VECTOR


</line>
</line>
<line>
<line>
endPtX, endPtY, endPtZ
endPt
REAL
VECTOR


</line>
</line>
Line 48: Line 43:
</lineList>
</lineList>
</params>
</params>


-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
<return>
<remark></remark>
</return>


-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
<remark>
<sample></sample>
 
</remark>


-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
<sample>
<seeAlso></seeAlso>
<code lang="pas">
PROCEDURE Example;
VAR
  pt, beg_pt, END_pt :VECTOR;
BEGIN
  CallTool(-221);
  GetLocPt(FSActLayer, pt.x, pt.y);
  CallTool(-201);
  GetSegPt1(FSActLayer, beg_pt.x, beg_pt.y);
  GetSegPt2(FSActLayer, END_pt.x, END_pt.y);
  Message(PtOnLine(pt, beg_pt, end_pt, RealDialog('Fuzz:', '1')));
END;
RUN(Example);</code>
 
</sample>


-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
<version>
<version>
Availability: from All Versions
Availability: from Vectorworks 2014


This is drop-in function.
</version>
</version>
-----------------------------------------------------------------------------------------------------------
<seeAlso>
</seeAlso>


</vwDoc>
</vwDoc>

Latest revision as of 17:35, 18 September 2013

Description

Determines if a point is on a line.

FUNCTION PtOnLine(
pt :VECTOR;
begPt :VECTOR;
endPt :VECTOR;
tolerance :REAL) : BOOLEAN;
def vs.PtOnLine(pt, begPt, endPt, tolerance):
    return BOOLEAN

Parameters

pt VECTOR
begPt VECTOR
endPt VECTOR
tolerance REAL

Version

Availability: from Vectorworks 2014