VS:RelativeCoords: Difference between revisions
Jump to navigation
Jump to search
m (1 revision) |
m (fix) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ||
<desc> | <desc> | ||
Translates a point into a coordinate system defined by 2 other points. | Translates a point into a coordinate system defined by 2 other points.</desc> | ||
</desc> | |||
----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ||
<def> | <def> | ||
<funcDef lang="vs"> | <funcDef lang="vs"> | ||
FUNCTION RelativeCoords( | FUNCTION RelativeCoords(pt:VECTOR; begPt:VECTOR; endPt:VECTOR) : VECTOR; | ||
</funcDef> | </funcDef> | ||
<funcDef lang="py"> | <funcDef lang="py"> | ||
Line 23: | Line 22: | ||
<lineList ident=1> | <lineList ident=1> | ||
<line> | <line> | ||
pt | |||
VECTOR | |||
</line> | </line> | ||
<line> | <line> | ||
begPt | |||
VECTOR | |||
</line> | </line> | ||
<line> | <line> | ||
endPt | |||
VECTOR | |||
</line> | </line> | ||
Line 40: | Line 39: | ||
</params> | </params> | ||
----------------------------------------------------------------------------------------------------------- | |||
<remark> | |||
([[User:CBM-c-|_c_]], 2022.01.19) In Python the tuple returned is always bidimensional in the form (0.0, 0.0). | |||
Remember to add a third item (0.0, 0.0, 0.0) for usage in the vector Routines such as VS:Vec2Ang or they will return gibberish. | |||
See graphical representation below (click on the image to enlarge it): | |||
[[File:C_MathRelativeCoords.png|200px ]] | |||
[MaKro 11/2021] Did not dig deeper, but looks like beg and end can be interpreted as: vs.RelativeCoords(p, p_origin, x_axis) | |||
</remark> | </remark> | ||
----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ||
<sample> | <sample> | ||
<code lang= | |||
==== VectorScript ==== | |||
<code lang=pas> | |||
PROCEDURE Example; | PROCEDURE Example; | ||
VAR | VAR | ||
pt, beg_pt, end_pt, v :VECTOR; | |||
BEGIN | BEGIN | ||
Message('Set begin point'); | |||
CallTool(-221); { creates a locus } | |||
GetLocPt(FSActLayer, beg_pt.x, beg_pt.y); | |||
Message('Set end point'); | |||
CallTool(-221); { creates a locus } | |||
GetLocPt(FSActLayer, end_pt.x, end_pt.y); | |||
Message('Set point'); | |||
CallTool(-221); { creates a locus } | |||
GetLocPt(FSActLayer, pt.x, pt.y); | |||
v := RelativeCoords(pt, beg_pt, end_pt); | |||
Message('result vector=', v); | |||
Locus(v.x, v.y); | |||
END; | END; | ||
RUN(Example);</code> | RUN(Example); | ||
</code> | |||
==== Python ==== | |||
<code lang="py"> | |||
</code> | |||
</sample> | </sample> | ||
----------------------------------------------------------------------------------------------------------- | |||
<seeAlso></seeAlso> | |||
----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ||
<version> | <version> | ||
Availability: from | Availability: from Vectorworks 2014 | ||
</version> | </version> | ||
</vwDoc> | </vwDoc> |
Latest revision as of 06:15, 21 January 2022
.VectorScript|VectorScript ..VS:Function Reference|Function Reference ..VS:Function_Reference_Appendix|Appendix
Description
Translates a point into a coordinate system defined by 2 other points.
FUNCTION RelativeCoords(
pt :VECTOR;
begPt :VECTOR;
endPt :VECTOR) : VECTOR;
def vs.RelativeCoords(pt, begPt, endPt): return VECTOR
Parameters
pt VECTOR begPt VECTOR endPt VECTOR
Remarks
(_c_, 2022.01.19) In Python the tuple returned is always bidimensional in the form (0.0, 0.0).
Remember to add a third item (0.0, 0.0, 0.0) for usage in the vector Routines such as VS:Vec2Ang or they will return gibberish.
See graphical representation below (click on the image to enlarge it):
[MaKro 11/2021] Did not dig deeper, but looks like beg and end can be interpreted as: vs.RelativeCoords(p, p_origin, x_axis)
Example
VectorScript
PROCEDURE Example; VAR pt, beg_pt, end_pt, v :VECTOR; BEGIN Message('Set begin point'); CallTool(-221); { creates a locus } GetLocPt(FSActLayer, beg_pt.x, beg_pt.y); Message('Set end point'); CallTool(-221); { creates a locus } GetLocPt(FSActLayer, end_pt.x, end_pt.y); Message('Set point'); CallTool(-221); { creates a locus } GetLocPt(FSActLayer, pt.x, pt.y); v := RelativeCoords(pt, beg_pt, end_pt); Message('result vector=', v); Locus(v.x, v.y); END; RUN(Example);
Python
Version
Availability: from Vectorworks 2014