単位ベクトルを求める
単位ベクトル [ unit vector ] ・・・ 長さが1のベクトル
数学公式
-
ベクトルの大きさ(長さ)
- 平面上のベクトル(2D) $$ \mid \vec{a} \mid = \sqrt{a_1^2 +a_2^2} $$
- 空間のベクトル(3D) $$ \mid \vec{a} \mid = \sqrt{a_1^2 +a_2^2 +a_3^2} $$
- 単位ベクトル $$ \vec{e} = \frac{1}{\mid \vec{a} \mid}\vec{a} = \frac{\vec{a}}{\mid \vec{a} \mid}$$ $$ \vec{a} = (a_1, a_2, a_3) $$ の単位ベクトルは、 $$ \left( \frac{a_1}{\sqrt{a_1^2 +a_2^2 +a_3^2}}, \frac{a_2}{\sqrt{a_1^2 +a_2^2 +a_3^2}}, \frac{a_3}{\sqrt{a_1^2 +a_2^2 +a_3^2}} \right) $$
AutoLISPで求める
;; ベクトル -> 単位ベクトル
(defun vector:ToUnit (v)
( (lambda (n)
(if (equal 0.0 n 1e-10)
nil
(mapcar '/ v (list n n n))
)
)
(distance '(0. 0. 0.) v)
)
)
;; < Example >
(vector:ToUnit '(3 4))
;; -> (0.6 0.8)
(vector:ToUnit '(2 -1 3))
;; -> (0.534522 -0.267261 0.801784)
AutoCAD .NET(C#)で求める
Vector2d, Vector3d
構造体を使う。
// < Example >
// 2D
var v2d = new Vector2d(3, 4);
new Vector2d(v2d.X / v2d.Length, v2d.Y / v2d.Length);
// -> (0.6,0.8)
// 3D
var v3d = new Vector3d(2, -1, 3);
new Vector3d(v3d.X / v3d.Length, v3d.Y / v3d.Length, v3d.Z / v3d.Length);
// -> (0.534522483824849,-0.267261241912424,0.801783725737273)
拡張メソッドを定義
using Autodesk.AutoCAD.Geometry;
// 2D
public static class Vector2dExtensions {
public static Vector2d ToUnit(this Vector2d v) {
return new Vector2d(v.X / v.Length, v.Y / v.Length);
}
}
// 3D
public static class Vector3dExtensions {
public static Vector3d ToUnit(this Vector3d v) {
return new Vector3d(v.X / v.Length, v.Y / v.Length, v.Z / v.Length);
}
}
ObjectARX(C++)で求める
AcGeVector2d, AcGeVector3d
クラスを使う。
// < Example >
// 2D
AcGeVector2d v2d(3, 4);
AcGeVector2d uv2d(v2d.x / v2d.length(), v2d.y / v2d.length());
// uv2d == (0.600000, 0.800000)
// 3D
AcGeVector3d v3d(2, -1, 3);
AcGeVector3d uv3d(v3d.x / v3d.length(), v3d.y / v3d.length(), v3d.z / v3d.length());
// uv3d == (0.534522, -0.267261, 0.801784)
Author And Source
この問題について(単位ベクトルを求める), 我々は、より多くの情報をここで見つけました https://qiita.com/tydesign/items/a548cba537a1838c1c67著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .