🔗 Link:
📌 Tags:
📋 Content:
Kí hiệu là tập hợp:
Khi đó là không gian vector
Mọi mô phỏng điểm trên mặt phẳng
Để cho tiện, ta sẽ định nghĩa các biến sau
Góc degree giữa vector
Góc radian giữa vector
Đại số vô hướng
Sai số
Scalar
Vector
Definition:
Zero Vector:
Unit Vector:
Basis Vector
Additive Identity:
Additive Inverse:
Double Negation:
Associativity:
Commutativity:
Multiplicative Identity:
Distributivity:
Norm Property:
Dot Product Definition:
Perp Dot Product Definition:
Perp Dot Relationship:
Note:
Chỉ tồn tại ở không gian
Nilpotent Property:
Squared Norm:
Associativity:
Basis Vector:
Commutativity:
Anticommutativity:
Multiplicative Distributivity:
Perpendicularity:
Parallelity:
Squared Product:
Cross Product Definition:
Wedge Product Definition:
Cross Product Relationship
Note: Ở không gian và thì tích chéo cũng chính là tích ngoại (nếu coi trực chuẩn nhau)
Note: Tích chéo không tồn tại ở và trở lên vì không có khái niệm vector vuông góc duy nhất với mặt phẳng. ( thì không tồn tại, thì không duy nhất). Tích ngoại có tồn tại nhưng ở không gian thì khá vô nghĩa.
Linearity:
Multiplicative Identity:
Nilpotent Property:
Associativity:
Basis Vector
Anticommutativity:
Multiplicative Distributivity:
Geometric Product Definition:
Commutator Product Definition:
Note: Kết quả không phải là scalar hay vector, mà là một cặp scalar và bivector nên ta định nghĩa
Symmetric:
Antisymmetric:
Associativity:
Left Distributivity:
Right Distributivity:
Contraction:
Inversion:
Division:
Identity:
Unit Vector:
Norm Property:
Jacobi Identity:
Associativity/Scalar Triple Product:
Lagrange Identity:
Product-Product Relation:
Product-Angle Relation:
Cosine Law:
Pythagore Identity:
B.C.S Inequality (Bunhiacopxki-Cauchy-Schwarz):
Triangle Inequality:
Reversed Triangle Inequality:
Extended Triangle Inequality:
Casterian ↦ Polar:
toPolar(u) =
Note:
pair(r, θ) không nhất thiết phải cùng kiểu dữ liệuPolar ↦ Casterian:
toCasterian(r, θ) =
Radian ↦ Radian[0, 2π):
radNorm(radian θ) =
Radian ↦ Degree:radToDeg(radian θ) =
deg(radian θ) =
Radian ↦ Hour:radToHour(radian θ) =
Radian ↦ Minute:radToMinute(radian θ) =
Radian ↦ Second:radToSecond(radian θ) =
Radian ↦ Clock[0h,24h):radToClock(radian θ) =
Note:
nsf = nanosecond fraction (but converted to integer)
Clock[0h,24h) ↦ Radian[0, 2π):clockToRad(hour, minute, second, nsf) =
Default:
Degree ↦ Degree[0°, 360°):
degNorm(degree ϕ) =
Degree ↦ Radian:degToRad(degree ϕ) =
rad(degree ϕ) =
Degree ↦ Hour:degToHour(degree ϕ) =
Degree ↦ Minute:degToMinute(degree ϕ) =
Degree ↦ Second:degToSecond(degree ϕ) =
Degree ↦ Clock[0h,24h):degToClock(radian ϕ) =
Clock[0h,24h) ↦ Degree[0°, 360°):clockToRad(hour, minute, second, nsf) =
Default:
Vector ↦ Complex:
toComplex(u) = cplx(u) =
Vector * Vector ↦ Complex:
complexMultiplication(u, v) = mul(u, v) =
Vector / Vector ↦ Complex:
complexDivision(u, v) = div(u, v) =
Quadrant Function:
quadrantValue(u) =
quadrantString(u) =
Angularity Function:
angularityValue(u, v, [θ]) =
angularityString(u, v, [θ]) =
Default:
Relative Direction:
relativeValue(u, v, [θ]) =
relativeString(u, v, [θ]) =
Default:
Cardinal Direction:
cardinalValue(u) =
cardinalString(u) =
Intercardinal/Ordinal Direction:
ordinalValue(u) =
ordinalString(u) =
Halfwin Direction:
halfwindValue(u) =
halfwindString(u) =
Quarterwin Direction:
quarterwindValue(u) =
quarterwindString(u) =
quadrantSymbol(u) =
angularitySymbol(u, v, [θ]) =
relativeSymbol(u, v, [θ]) =
cardinalSymbol(u) =
ordinalSymbol(u) =
halfwindSymbol(u) =
quarterwindSymbol(u) =
Zero Check:
u.isZero() = true
⇔ is0(u) = true
Horizontal Position:
u.horizontal() =
u.x() =
Vertical Position:
u.vertical() =
u.y() =
Norm:
u.norm(p) =
norm(u, p) =
Default:
Length/Abs:
u.length() = u.abs() =
len(u) = abs(u) =
Squared Length:u.squaredLength() =
sq(u)
Note:
Thường dùng với số nguyên cho bớt sai số
Magnitude Position:u.r() = u.magnitude()
r(u) = mag(u) =
Polar Angle:u.theta() = u.polarAngle() = polarAngle(u) =
theta(u) = polar(u) =
Angle Between Vectors:
u.angle(v) =
angle(u, v) =
Interior Angle:u.interiorAngle(v) =
interior(u, v) =
Exterior Angle:u.exteriorAngle(v) =
exterior(u, v) =
Manhattan/Taxicab Distance:manhattanDistance(u, v) =
u.taxicab(v) =
Straight/Euclidean Distance:euclideanDistance(u, v)
u.dist(v) =
Squared Euclidean Distance:squaredDistance(u, v) =
u.sqdist(v)
Note:
Không dùng công thức để tránh sai số
Scalar Projection:
u.scalarProj(θ) = u.scalarProj(v) =
Scalar Rejection:u.scalarRej(θ) = u.scalarRej(v) =
Vector Projection:
u.vectorProjection(v) =
proj(u, v) =
Vector Rejection:
u.vectorRejection(v) =
rej(u, v) =
Dot Product:
u.dotProduct(v) =
dot(u, v) =
Perp Dot Product:u.perpProduct(v) =
perp(u, v) =
2D Cross Product:u.crossProduct(v) =
cross(u, v) =
Wedge Product:u.wedgeProduct(v)
wedge(u, v) =
Geometric & Commutator Product:u.geoProduct(v)
geomul(u, v) =
Vector Geometric Inverse:u.geoInverse()
geoinv(u) =
Vector Geometric Division:u.geoDivision(v)
geodiv(u, v) =
Vector Cross Division:crossDivision(u×v, v, θ) =
Swap Transformation:
u.swap(v)
Negation Transformation:u.negation() =
Conjugation Transformation:u.conjugation() =
Translation Transformation:
u.translate(v) = u.translate(vx, vy) =
Reversion Transformation:u.reverse() =
Reflection Transformation:u.reflection(v) =
Mirror-X/Flip-Y Transformation:u.mirror_x() = u.flip_y() =
Mirror-Y/Flip-X Transformation:u.mirror_y() = u.flip_x() =
Mirror-XY/Flip-XY/Negation Transformation:u.mirror_xy() = u.flip_xy() = u.negation() =
Scale Transformation:u.scale(α, [β]) =
Default:
Note:
Khi thì gọi là hàm
stretch
()
Khi thì gọi là hàmsquash
()
Khi thì gọi là hàmsqueeze
()
Unitization Transformation:
u.unit() = u.normalized() =
Note:
Cẩn thận khi , và cẩn thận nhầm với hàmnorm(u, p)
Reciprocity Transformation:u.reciprocal() =
Note:
Cẩn thận khi hoặc
Rotation Transformation:u.rotate(θ, [isClockwise]) =
Default:
(quay ) và (quay cùng chiều kim đồng hồ)Clamp Transformation:
u.clamp(α, [β]) =
Default:
Shear Transformation:u.shear(α, [β]) =
Default:
Linear Transformation:u.shear(α1, α2, β1, β2) =
Component-wise Transformation:u.componentwise(f) =
Sign Function:
sign(scalar x) =
Note:
và nên cùng kiểu dữ liệu, và dấu là iverson brackets
Note:
Có thể xemquadrant()
là sign function cho vectorFloat Equality:
isEqual(scalar u, scalar v, high-precision ε) = true
Default:
Equality Function:
equalityValue(scalar x, scalar y) =
Orthogonal Check:
isOrthogonal(u, v) = true
Dilation Factor:u.dilation(v) =
Collinear Check:isColinear(u, v) = true
Parallel Check:isParallel(u, v) = true
Antiparallel Check:isAntiparallel(u, v) = true
Zero Angle Check:isZeroAngle(u, v) = true
Right Angle Check:isPerpendicular(u, v) = isRightAngle(u, v) = true
Straight Angle Check:isStraightAngle(u, v) = true
Left-Right Side Indicator:
sideX(u, [v]) =
Default:
Note:
so với đường thẳng vuông góc với phương của
Top-Down Side Indicator:sideY(u, [v]) =
Default:
Note:
so với đường thẳng đi quaAcute Angle Check:
isAcuteAngle(u, v) = true
Obtuse Angle Check:isObtuseAngle(u, v) = true
Reflex Angle Check:isReflexAngle(u, v) = !isReflexAngle(v, u) = true
Orientability Function:
orient(u, v) =
Polar Order:polarOrder(u, v, [o]) =
Default:
Counter-Clockwise Direction:isCounterClockwise(u, v) = true
ccw(u,v)
Collinear Direction:isColinear(u, v) = true
cln(u,v)
Clockwise Direction:isClockwise(u,v) = isReflexAngle(u, v) = true
cw(u,v)
Unoriented Direction:isUnoriented(u, v) = true
Default Initialization:
Constructor
vector2D()
Initialize from uniform scalar:
Constructor
vector2D(scalar x, scalar y)
Initialize from non-uniform scalar:
Constructor
vector2D(scalar x, scalar y)
Initialize from vector:
Assignment Operator
vector = other_vector
Memory Free:
Destructor
~vector2D()
Input (cin):
Insertion Operator
>> vector
↦ &istream cin
Output (cout, cerr):
Extraction Operator
<< vector
↦ &ostream cout
Note:
Nếu muốn tạo luồng cerr và cout khác nhau thì
Non-zero Check:
Explixit Bool:
(vector)
↦ boolean
Zero Check:
Exclamation Operator:
!vector
↦ boolean
Less Than Operator:
Less Than Operator:
vector < other_vector
↦ bool
Equal To Operator:
Equal To Operator:
vector <= other_vector
↦ bool
Less Than or Equal To Operator:
Less Than or Equal To Operator:
vector <= other_vector
↦ bool
Not Equal To:
Not Equal To Operator:
vector >= other_vector
↦ bool
Greater Than or Equal To Operator:
Greater Than or Equal To Operator:
vector >= other_vector
↦ bool
Greater Than Operator:
Greater Than Operator:
vector > other_vector
↦ bool
Vector Itself:
Unary Plus Operator:
+vector
↦ vector
Vector Symmetry Reflection:
Unary Minus Operator:
-vector
↦ vector
Vector Coordinate Swap:
Logical NOT Operator
~vector
↦ vector
Vector Sumation:
Addition Operator:
vector + vector
↦ vector
Vector Difference:
Subtraction Operator:
vector - vector
↦ vector
Translating:
Addition Assignment Operator:
vector += vector
↦ &vector
Reverse Translating:
Subtraction Assignment Operator:
vector -= vector
↦ &vector
Vector Horizontal Slide:
Pre-increment Operator:
++vector
↦ &vector
Vector Horizontal Reverse Slide:
Pre-decrement Operator:
--vector
↦ &vector
Vector Vertical Slide:
Post-increment Operator:
vector++
↦ &vector
Vector Vertical Reverse Slide:
Post-decrement Operator:
vector--
↦ &vector
Note:
Post-* Operator
có thể trả về &vector
https://ideone.com/HRgB56
Stretched Vector:
LHS Multiplication Operator:
vector * scalar
↦ vector
RHS Multiplication Operator:
scalar * vector
↦ vector
Stretching:
Multiplication Assignment Operator:
vector *= scalar
↦ &vector
Squashed Vector:
LHS Division Operator:
vector / scalar
↦ vector
Reciprocal Squashed Vector:
RHS Division Operator:
scalar / vector
↦ vector
Note:
Trùng với vector division nếu xem vector như một multivector
Squashing:
Division Assignment Operator:
vector /= scalar
↦ &vector
Clamped Vector:
Logical AND Operator
vector & other_vector
↦ vector
Clamping:
Logical AND Assignment Operator
vector &= other_vector
↦ vector
Wrapped Vector:
LHS Modulo Operator:
vector % scalar
↦ vector
Reversed Wrapped Vector:
RHS Modulus Operator:
scalar % vector
↦ vector
Wrapping:
Modulo Assignment Operator:
vector %= scalar
↦ &vector
Vector Horizontal Position:
Overloading Operator
vector[0]
↦ &scalar
Vector Vertical Position:
Overloading Operator
vector[1]
↦ &scalar
Dot Product/Inner Product:
Multiplication Operator
vector * other_vector
↦ scalar
Logical OR Operator
vector | other_vector
↦ scalar
Perp Dot Product/2D Wedge Product/2D Cross Product:
Remainder Operator
vector % other_vector
↦ scalar
Logical XOR Operator
vector ^ other_vector
↦ scalar
Vector Dilation Ratio:
Division Operator
vector / other_vector
↦ scalar
Vector Distance:
Shift Right Operator
vector >> other_vector
↦ scalar
Vector Squared Distance:
Shift Left Operator
vector << other_vector
↦ scalar
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.