Jun 132012
 

8.ベクトル空間

(画像参照元:RhinoPythonPrimerRev3)

8-1.ポイントとベクトル

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#8-1.ポイントとベクトル

#点の生成
#Rhinopythonにおいて、「点(point)」とは、3つ数字が格納された「リスト(配列)」。
#[x,y,z]
point =[0,0,0]
print point
#[0,0,0]
 
#点の配置
#AddPoint(point)
#引数:point
rs.AddPoint(point)
 
#ベクトルの生成
#VectorCreate(to_point, from_point)
#引数:to_point/終点、from_point/基点
vector = rs.VectorCreate([10,10,10], [0,0,0])
print vector
#10,10,10
 
#ベクトルの配置
#RhinoPython(IronPythin)にはAddVector()に相当する関数が存在しない
#公式リファレンスでサポートされているユーザ定義関数は以下の通り
def AddVector(vecdir, base_point=[0,0,0]):
	tip_point = rs.PointAdd(base_point, vecdir)
	line = rs.AddLine(base_point, tip_point)
	if line:return rs.CurveArrows(line, 2)

AddVector(vector)

8-2.ベクトル空間の関数

(画像:RhinoPythonPrimerRev3より)

-点

-点同士の距離

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#点同士の距離
#Distance(Pt1, Pt2)
Pt1 = [1,1,1]
Pt2 = [10,10,10]
d = rs.Distance(Pt1, Pt2)
print d

-点座標のスカラー倍

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#点座標のスカラー倍
#PointScale(Pt1, dblA)
Pt = [1,1,1]
Pt = rs.PointScale(Pt, 5)
print Pt

-点座標のスカラー倍(除算)

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#点座標のスカラー倍(除算)
#PointDivide(Pt1, dblA)
Pt = [1,1,1]
Pt = rs.PointDivide(Pt, 2)
print Pt

-点同士の距離間判定

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#点同士の距離間判定
#PointCompare(Pt1, Pt2, dblT)
Pt1 = [1,1,1]
Pt2 = [10,10,10]
Bool = rs.PointCompare(Pt1, Pt2, 20)
print Bool
#ある点の位置がもう一方の点を中心とした半径delTの円の範囲内で収まっていればTrue

-点の移動

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#点の移動
#PointTransform(Pt1, arrM)
Pt = [1,1,1]
matrix = rs.XformTranslation([1,2,3]) #移動値マトリックスの生成
Pt = rs.PointTransform(Pt, matrix)
print Pt

-ベクトル

-単位ベクトル

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#単位ベクトル
#VectorUnitize(Vec)
Vec = rs.VectorCreate([10,0,0],[0,0,0])
Vec = rs.VectorUnitize(Vec)
print Vec

ベクトルの長さ

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ベクトルの長さ
#VectorLength(Vec)
Vec = rs.VectorCreate([10,0,0],[0,0,0])
d = rs.VectorLength(Vec)
print d

-ベクトルの反転

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ベクトルの反転
#VectorReverse(Vec)
Vec = rs.VectorCreate([10,0,0],[0,0,0])
Vec = rs.VectorReverse(Vec)
print Vec

-ベクトルのスカラー倍

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ベクトルのスカラー倍
#VectorScale(Vec1, dblA)
Vec = rs.VectorCreate([10,0,0],[0,0,0])
Vec = rs.VectorScale(Vec, 2)
print Vec

-ベクトルのスカラー倍(除算)

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ベクトルのスカラー倍(除算)
#VectorDivide(Vec1, dblA)
Vec = rs.VectorCreate([10,0,0],[0,0,0])
Vec = rs.VectorDivide(Vec, 2)
print Vec

-ポイントとベクトルの和

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ポイントとベクトルの和
#PointAdd(Pt, Vec)
Pt = [1,1,1]
Vec = rs.VectorCreate([10,0,0],[0,0,0])
Pt = rs.PointAdd(Pt, Vec)
print Pt

-ポイントとベクトルの差

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ポイントとベクトルの差
# PointSubtract(Pt, Vec)
Pt = [1,1,1]
Vec = rs.VectorCreate([10,0,0],[0,0,0])
Pt = rs.PointSubtract(Pt, Vec)
print Pt

-ベクトル同士の和

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ベクトル同士の和
#VectorAdd(Vec1, Vec2)
Vec1 = rs.VectorCreate([10,0,0],[0,0,0])
Vec2 = rs.VectorCreate([0,10,0], [0,0,0])
Vec = rs.VectorAdd(Vec1, Vec2)
print Vec

-ベクトル同士の差

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ベクトル同士の差
#VectorAdd(Vec1, Vec2)
Vec1 = rs.VectorCreate([10,0,0],[0,0,0])
Vec2 = rs.VectorCreate([0,10,0], [0,0,0])
Vec = rs.VectorSubtract(Vec1, Vec2)
print Vec

-内積(ドット積)

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#内積(ドット積)
#VectorDotProduct(Vec1, Vec2)
#あるいは
#VectorMultiply(Vec1, Vec2)
Vec1 = rs.VectorCreate([10,0,0],[0,0,0])
Vec2 = rs.VectorCreate([0,10,0], [0,0,0])
Md = rs.VectorDotProduct(Vec1, Vec2)
print Md

-外積(クロス積)

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#外積(クロス積)
#VectorCrossProduct(Vec1, Vec2)
Vec1 = rs.VectorCreate([10,0,0],[0,0,0])
Vec2 = rs.VectorCreate([0,10,0], [0,0,0])
Mc = rs.VectorCrossProduct(Vec1, Vec2)
print Mc

-ベクトルの回転

   

# -*- coding: utf-8 -*
import rhinoscriptsyntax as rs

#ベクトルの回転
#VectorRotate(Vec1, dblA, VecA)
#(Vec1を角度dblA、VecA周りで回転。角度は時計回りが正)
Vec1 = rs.VectorCreate([10,0,0],[0,0,0])
Vec2 = rs.VectorCreate([0,10,0], [0,0,0])
Vec = rs.VectorRotate(Vec1, 90, Vec2)
print Vec

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>