ضرب نقطه ای یا ضرب داخلی یا ضرب اسکالر دو بردار و تابع Quaternion.Dot و Vector3.Dot در یونیتی
شنبه, ۲۳ خرداد ۱۳۹۴، ۰۴:۴۲ ق.ظ
بردار همون نقطه تو فضای سه بعدی هست یا چهار بعدی یا n بعدی.
در این ضرب هر آیتم در آیتم متناظر ضرب میشه و حاصل جمع میشه.
توی ویکی پدیا گفته:
حاصل ضرب داخلی دو بردار یک عدد هست. حالا این عدد به چه دردی می خوره؟
در ریاضیات فضای ضرب داخلی یک فضای برداری است.
ضرب داخلی یا ضرب اسکالر به ما این امکان را میدهد که مفاهیم هندسی از قبیل زاویه و طول یک بردار را تعریف نماییم.
با وجود آنکه در این نوع ضرب دو بردار در هم ضرب میشوند ولی حاصلضرب این دو بردار یک عدد اسکالر است.
ضرب داخلی در ریاضیات،مهندسی،وفیزیک کاربردمای فراوانی دارد.
---
مثال :
اگر ضرب داخلی دو بردار غیر صفر، برابر 0(صفر) شود آن دو بردار بر هم عمودند.
----------
تابع Quaternion.Dot ضرب نقطه ای(داخلی/اسکالر) بین دو چرخش (rotation) است.اما توضیح چندانی در help یونیتی در مورد آن ندیدیم.
اما در باره ی تابع Vector3.Dot شاید بد نباشد توضیح دهیم.
این تابع ضرب نقطه ای(داخلی/اسکالر) بین دو بردار است.
شکل کلی و توضیحات :
در این ضرب هر آیتم در آیتم متناظر ضرب میشه و حاصل جمع میشه.
توی ویکی پدیا گفته:
http://fa.wikipedia.org/wiki/%D8%B6%D8%B1%D8%A8_%D8%AF%D8%A7%D8%AE%D9%84%DB%8C
حاصل ضرب داخلی دو بردار یک عدد هست. حالا این عدد به چه دردی می خوره؟
در ریاضیات فضای ضرب داخلی یک فضای برداری است.
ضرب داخلی یا ضرب اسکالر به ما این امکان را میدهد که مفاهیم هندسی از قبیل زاویه و طول یک بردار را تعریف نماییم.
با وجود آنکه در این نوع ضرب دو بردار در هم ضرب میشوند ولی حاصلضرب این دو بردار یک عدد اسکالر است.
ضرب داخلی در ریاضیات،مهندسی،وفیزیک کاربردمای فراوانی دارد.
---
مثال :
اگر ضرب داخلی دو بردار غیر صفر، برابر 0(صفر) شود آن دو بردار بر هم عمودند.
----------
تابع Quaternion.Dot ضرب نقطه ای(داخلی/اسکالر) بین دو چرخش (rotation) است.اما توضیح چندانی در help یونیتی در مورد آن ندیدیم.
اما در باره ی تابع Vector3.Dot شاید بد نباشد توضیح دهیم.
این تابع ضرب نقطه ای(داخلی/اسکالر) بین دو بردار است.
شکل کلی و توضیحات :
Vector3.Dot
static function Dot (lhs : Vector3, rhs : Vector3) : float
Description
Dot Product of two vectors.
Returns lhs . rhs.
For normalized vectors Dot returns 1 if they point in exactly the same direction; -1 if they point in completely opposite directions; and a number in between for other cases (e.g. Dot returns zero if vectors are perpendicular).
For vectors of arbitrary length the Dot return values are similar: they get larger when the angle between vectors decreases.
// detects if other transform is behind this object
var other : Transform;
function Update()
{
if (other) {
var forward = transform.TransformDirection(Vector3.forward);
var toOther = other.position - transform.position;
if (Vector3.Dot(forward,toOther) < 0)
print ("The other transform is behind me!");//ابجکت دیگر پشت سر من است
}
}
var other : Transform;
function Update()
{
if (other) {
var forward = transform.TransformDirection(Vector3.forward);
var toOther = other.position - transform.position;
if (Vector3.Dot(forward,toOther) < 0)
print ("The other transform is behind me!");//ابجکت دیگر پشت سر من است
}
}
ترجمه فارسی:
تابع Dot ، برای بردارهای نرمال،
مقدار 1 را برمی گرداند اگر آن نقطه دقیقا در همان جهت باشد.
اگر در جهت معکوس باشد مقدار منفی یک(-1) را بر می گرداند.
مقدار صفر برگشت داده می شود اگر دو بردار عمود باشند.
تابع Dot برای بردارها با طول دلخواه،مقادیر یکسان را برمی گرداند: اگر زاویه ی بین بردارها کوچکتر شود،آنها بزرگتر می شوند.
تابع Dot ، برای بردارهای نرمال،
مقدار 1 را برمی گرداند اگر آن نقطه دقیقا در همان جهت باشد.
اگر در جهت معکوس باشد مقدار منفی یک(-1) را بر می گرداند.
مقدار صفر برگشت داده می شود اگر دو بردار عمود باشند.
تابع Dot برای بردارها با طول دلخواه،مقادیر یکسان را برمی گرداند: اگر زاویه ی بین بردارها کوچکتر شود،آنها بزرگتر می شوند.
using UnityEngine; using System.Collections; public class test : MonoBehaviour { void Start() { transform.rotation = Quaternion.AngleAxis(90, Vector3.up); print( Quaternion.Dot(transform.rotation, Quaternion.identity)); } }
۹۴/۰۳/۲۳