Home
 |  
Research
 |  
Education
 |  
Publications
 |  
Products
 |  
Free Softwares
 |  
Links
[English]
Free Softwares
-
nkjLib (Navigation Kernel and Job control LIBrary): 幾何計算ライブラリ
[特徴]
「演算子記述」を使って、行列演算やベクトル演算のプログラミングができる.
演算子を充実することに力点を置いて開発しました.
演算子によるプログラム記述法に慣れれば,
見通しのよいソースコードでプログラムが記述でき,
開発効率(開発速度)の向上,およびプログラムの信頼性向上につながります.
実際,作者は手術ナビゲーションシステムの開発を効率良く行うために,このライブラ
リを作りました.
皆さんのプログラム開発にもお役に立てていただければ幸いです.
(注:現在公開しているのは基本幾何演算部のみです.)
[
Download from Vector
](開発環境:Windows 10 & visual studio 2018 c++.圧縮形式:LZH.)
◆使用規定
基本的にフリーです.ドキュメントに書かれた条件に従っている限り,使用に関して
制限はありません.
本ライブラリを使用して製品を開発したり,学術成果を出された場合に,
nkjLib を使用して開発した旨を取扱説明書あるいは
学術成果の文書内に記述していただければ幸いに存じます.
作者は,本ライブラリを使用して起こったいかなる損害に対しても一切責任を負いません.
不具合の報告,改良の提案は,
nakajima (at) nakajimalab.org
までお願いします.
◆配布規定
再配布は,nkjLib の全てのパッケージを一切の改変なく含め
たものを配布ください.
追加ライブラリを開発した場合には,その追加パッケージに加え,必ず,追加個所を明記
したドキュメントを添付してください.
◆サンプルプログラム
#簡略化のため,このサンプルソースコード内においてエラー処理はして
いません.(実際は,必要に応じてエラーコードを返すので,処理してください.)
=== 3次元点データとマトリクスデータを読み込み,演算を
してから,結果のマトリクスと3次元点データをセーブする.===
//
// リンクは,nkjLib.lib
//
#include < stdio.h >
#include "nkjLib.h"
void main()
{
// 3次元点をファイルから読み込み,表示
//
nkjPoint3D point;
point.Load("point1.dat");
point.Print("Point 1"); // タイトル付き表示
// マトリクスをファイルから読み込み,表示
//
nkjMatx4x4 matx1;
matx1.Load("matrix1.dat");
matx1.Print("Matrix 1"); // タイトル付き表示
// マトリクスを作って,表示
//
nkjMatx4x4 matx2;
matx2[0][0] = 0.0; matx2[0][1] = 0.0; matx2[0][2] = 1.0; matx2[0][3] = 0.0;
matx2[1][0] = 1.0; matx2[1][1] = 0.0; matx2[1][2] = 0.0; matx2[1][3] = 0.0;
matx2[2][0] = 0.0; matx2[2][1] = 1.0; matx2[2][2] = 0.0; matx2[2][3] = 0.0;
matx2[3][0] = 0.0; matx2[3][1] = 0.0; matx2[3][2] = 0.0; matx2[3][3] = 1.0;
matx2.Print(); // タイトルなし表示
// マトリクス演算,マトリクス−点演算を行い,結果をファイルに保存
//
// !(matrix) : 逆行列
// ~(matrix) : 転置行列
//
// (new matrix) = (matrix1) * (matrix2 の逆行列)
//
// (new point) = (matrix2 の逆行列) * (matrix1 の転置行列) * (matirx2) * (point)
//
nkjMatx4x4 newmatx;
newmatx = matx1 * !matx2;
newmatx.Print("New matrix");
newmatx.Save("output.mtx");
nkjPoint3D newpoint = !matx2 * ~matx1 * matx2 * point;
newpoint.Print("Point");
newpoint.Save("output.dat");
}
===
[Top]
[[Home]]