RhinoScript vectors

From KokkugiaWiki

this set of examples illustrates how to use some basic vector functions in rhinoScript.

vectors in rhinoScript are described as an array (x,y,z) which describes the direction and magnitude of a vector with a start point at the origin.
Image:Vec.jpg

Contents

adding vectors

Image:VecAdd.jpg

Option Explicit
' roland snooks | www.kokkugia.com
Call vecAdd()
Sub vecAdd()
	
	Dim pt1, pt2, pt3, pt4, vec, vec1, vec2
	
	pt1 = Rhino.GetPoint("select vector 1 start point")
	pt2 = Rhino.GetPoint("select vector 1 end point")
	pt3 = Rhino.GetPoint("select vector 2 start point")
	pt4 = Rhino.GetPoint("select vector 2 end point")
	
	vec1 = Rhino.VectorCreate(pt2, pt1)
	vec2 = Rhino.VectorCreate(pt4, pt3)
	
	vec = Rhino.VectorAdd(vec1, vec2)
	
	Rhino.AddLine Array(0,0,0), vec1
	Rhino.AddLine vec1, vec
	
	Rhino.AddLine Array(0,0,0), vec

End Sub


subtracting vectors

Image:VecSub.jpg

Option Explicit
' roland snooks | www.kokkugia.com
Call vecSub()
Sub vecSub()
	
	Dim pt1, pt2, pt3, pt4, vec, vec1, vec2
	
	pt1 = Rhino.GetPoint("select vector 1 start point")
	pt2 = Rhino.GetPoint("select vector 1 end point")
	pt3 = Rhino.GetPoint("select vector 2 start point")
	pt4 = Rhino.GetPoint("select vector 2 end point")
	
	vec1 = Rhino.VectorCreate(pt2, pt1)
	vec2 = Rhino.VectorCreate(pt4, pt3)
	
	vec = Rhino.VectorSubtract(vec1, vec2)
	
	Rhino.AddLine Array(0,0,0), vec1
	Rhino.AddLine vec1, vec
	
	Rhino.AddLine Array(0,0,0), vec

End Sub


unitizing and scaling vectors

Image:VecScale.jpg

Option Explicit
' roland snooks | www.kokkugia.com
Call vecScale()
Sub vecScale()
	
	Dim pt1, pt2, pt3, pt4, vec, vec1, vec2
	
	pt1 = Rhino.GetPoint("select vector start point")
	pt2 = Rhino.GetPoint("select vector end point")
	
	vec1 = Rhino.VectorCreate(pt2, pt1)
	
	vec = Rhino.VectorUnitize(vec1)

	vec = Rhino.VectorScale(vec, 5)
	
	Rhino.AddLine Array(0,0,0), vec
	
End Sub


vector rotate

Image:VecRot.jpg

Option Explicit
' roland snooks | www.kokkugia.com
Call vecScale()
Sub vecScale()
	
	Dim pt1, pt2, vec, rot
	
	pt1 = Rhino.GetPoint("select vector 1 start point")
	pt2 = Rhino.GetPoint("select vector 1 start point")
	rot = Rhino.GetReal("vector rotation angle", 25)
	
	vec = Rhino.VectorCreate(pt2, pt1)
	
	Rhino.AddLine Array(0,0,0), vec
	
	vec = Rhino.VectorRotate(vec, rot, Array(0,0,1))
	
	Rhino.AddLine Array(0,0,0), vec

End Sub
Views