舊文件

此處文件僅供參考,請自行考量時效性與適用程度,其他庫藏文件請參考文件頁面
我們亟需您的協助,進行共筆系統搬移、及文件整理工作,詳情請查閱參與我們

「C3dl」修訂間的差異

出自 MozTW Wiki

類別繼承圖
Vector 向量類別
行 25: 行 25:
 
== 類別繼承圖 ==
 
== 類別繼承圖 ==
 
* [http://img126.imageshack.us/img126/3032/layoutqe4.jpg Canvas 3D API 類別繼承圖]
 
* [http://img126.imageshack.us/img126/3032/layoutqe4.jpg Canvas 3D API 類別繼承圖]
 +
 +
== 數學運算 ==
 +
 +
=== Vector 向量類別 ===
 +
一個向量基本上就是在 3D 世界的 X, Y, Z 三個軸的座標系統描述一個「具備大小的方向」。3D 數學存在各種不同的座標系統,離開向量類別的封裝則不復存在所謂的 3D。向量類別具有下列的成員;
 +
 +
* isValidVector(vecArr) - '''判斷參數是否為一有效的向量'''
 +
* copyVector(srcVec) - '''從 srcVec 複製並傳回'''
 +
* copyVectorContents(srcVec, destVec) - '''效果相當於(不等於,因為有多作判斷是否為有效向量) destVec = copyVector(srcVec);'''
 +
* makeVector(newX, newY, newZ) - '''copyVector() 就是用這個函數實作向量複製'''
 +
* normalizeVector(vec) - '''計算與向量相同方向但長度為一的「單位向量」並傳回'''
 +
* vectorDotProduct(vecOne, vecTwo) - '''傳回兩向量的內積(點積),其值為純量'''
 +
* vectorCrossProduct(vecOne, vecTwo, dest) - '''將 vecOne 與 vecTwo 兩個向量做外積(叉積)後指定給 dest)'''
 +
* vectorLength(vec) - '''計算並傳回向量的長度(相當於與自己的內積開根號)'''
 +
* vectorLengthSq(vec) - '''計算向量長度的平方,相比於直接利用長度的運算上,少了一個根號後再平方的無用計算'''
 +
* addVectors(vecOne, vecTwo, dest) - '''相當於 dest = vecOne + vecTwo'''
 +
* subtractVectors(vecOne, vecTwo, dest) - '''相當於 dest = vecOne - vecTwo'''
 +
* multiplyVector(vec, scalar, dest) - '''相當於 dest = vec * scalar; 效果相當於將向量放大(scalar 小於1的正數則為縮小,負數則為反向)'''
 +
* divideVector(vec, scalar, dest) - '''相當於 dest = vec / scalar; 效果相當於將向量縮小(scalar 小於1的正數則為放大,負數則為反向)'''
 +
* multiplyVectorByVector(vecOne, vecTwo, dest) - '''既非內積也非外積,而是相當於 dest = [X1*X2, Y1*Y2, Z1*Z2]; 的乘法'''
 +
* isVectorEqual(vecOne, vecTwo) - '''判斷兩向量是否相等'''
 +
* isVectorZero(vec) - '''判斷向量長度是否為 0,正確的說法: 判斷是否極接近 0,每個軸向誤差在 0.00001 以內'''
 +
* getAngleBetweenVectors(vecOne, vecTwo) - '''計算兩向量間的夾角'''

於 2008年10月8日 (三) 13:32 的修訂

請見 Canvas3D JS Library

簡介

Canvas 3D JS Library (C3DL) 是 javascript 函式庫,也就是裡頭提供的全部是 Javascript, 必須安裝 Canvas3D extension of firefoxc3dl 程式碼在此。主要目的是讓你在 Firefox/Mozilla 平台用 Canvas/OpenGL 的方式撰寫 3D 的網路應用。

C3DL 提供一系列的數學、景觀、及3D物件類別,讓你在用 Canvas 會更有彈性,當然主要就是要縮短開發時間。

本專案開發人員

  • Catherine Leung
  • Mark Paruzel (CodeBot)
  • Andrew Smith
  • Chris Bishop (Javascript)
  • Andor Salga

有用的連結

類別繼承圖

數學運算

Vector 向量類別

一個向量基本上就是在 3D 世界的 X, Y, Z 三個軸的座標系統描述一個「具備大小的方向」。3D 數學存在各種不同的座標系統,離開向量類別的封裝則不復存在所謂的 3D。向量類別具有下列的成員;

  • isValidVector(vecArr) - 判斷參數是否為一有效的向量
  • copyVector(srcVec) - 從 srcVec 複製並傳回
  • copyVectorContents(srcVec, destVec) - 效果相當於(不等於,因為有多作判斷是否為有效向量) destVec = copyVector(srcVec);
  • makeVector(newX, newY, newZ) - copyVector() 就是用這個函數實作向量複製
  • normalizeVector(vec) - 計算與向量相同方向但長度為一的「單位向量」並傳回
  • vectorDotProduct(vecOne, vecTwo) - 傳回兩向量的內積(點積),其值為純量
  • vectorCrossProduct(vecOne, vecTwo, dest) - 將 vecOne 與 vecTwo 兩個向量做外積(叉積)後指定給 dest)
  • vectorLength(vec) - 計算並傳回向量的長度(相當於與自己的內積開根號)
  • vectorLengthSq(vec) - 計算向量長度的平方,相比於直接利用長度的運算上,少了一個根號後再平方的無用計算
  • addVectors(vecOne, vecTwo, dest) - 相當於 dest = vecOne + vecTwo
  • subtractVectors(vecOne, vecTwo, dest) - 相當於 dest = vecOne - vecTwo
  • multiplyVector(vec, scalar, dest) - 相當於 dest = vec * scalar; 效果相當於將向量放大(scalar 小於1的正數則為縮小,負數則為反向)
  • divideVector(vec, scalar, dest) - 相當於 dest = vec / scalar; 效果相當於將向量縮小(scalar 小於1的正數則為放大,負數則為反向)
  • multiplyVectorByVector(vecOne, vecTwo, dest) - 既非內積也非外積,而是相當於 dest = [X1*X2, Y1*Y2, Z1*Z2]; 的乘法
  • isVectorEqual(vecOne, vecTwo) - 判斷兩向量是否相等
  • isVectorZero(vec) - 判斷向量長度是否為 0,正確的說法: 判斷是否極接近 0,每個軸向誤差在 0.00001 以內
  • getAngleBetweenVectors(vecOne, vecTwo) - 計算兩向量間的夾角
個人工具