Skip to content

neknaj/3d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ca8ef53 · Apr 18, 2023

History

47 Commits
Feb 18, 2023
Apr 18, 2023
Dec 26, 2022
Oct 22, 2022
Feb 18, 2023
Dec 26, 2022

Repository files navigation

Neknaj 3D Library

bem130が2022年の3月から7月ごろにかけて作っていた3D描画のプログラムを改良しつつ、使いやすいようにまとめたものです。

javascript

./js

オブジェクト

オブジェクトは、三角形の面の配列で表される

polygon = [[x,y,z],[x,y,z],[x,y,z],[r,g,b]];
// polygon = [一つ目の頂点,二つ目の頂点,三つ目の頂点, 面の色]
object = [polygon,polygon,polygon,...];
// object = [一つ目の面,二つ目の面,三つ目の面,...]

カメラ

カメラは、座標・向き・解像度で表される
今後、視野の広さも追加予定

座標

pos = [x,y,z];
// pos = [x座標,y座標,z座標]

向き

angle = [h,v];
// angle = [水平方向,垂直方向]

解像度

display = [x,y];
// display = [横の解像度,縦の解像度]

カメラ

camera = [pos,angle,display];
// camera = [座標,向き,解像度]

インターフェイス

初期化

classを初期化する

let tddraw = new tdDRAW();

オブジェクトの設定

オブジェクトを設定する

tddraw.setObj(object);

カメラを設定

カメラを設定する

tddraw.setCamera(camera);

画像を出力する

画像を出力する
返り値はImageData

image = tddraw.getImg();

c++

./cpp

オブジェクト

オブジェクトは、ポリゴンの動的配列で表される
ポリゴンは3つの座標と色で表される
tdDrawPolygon.distanceは使用されていない

struct tdDrawPolygon { // ポリゴンの定義
    std::array<long double,3> p1; // 1つめの頂点
    std::array<long double,3> p2; // 2つめの頂点
    std::array<long double,3> p3; // 3つめの頂点
    std::array<unsigned char,3> color; // ポリゴンの色
    long double distance = 0; // ポリゴンまでの距離 未使用
};
typedef std::vector<struct tdDrawPolygon> tdDrawObject; // オブジェクトの定義

オブジェクトの設定

void tdDraw::setObj(tdDrawObject object);

画像を出力する

画像を出力する
返り値はunsigned char*

unsigned char* tdDraw::getImg (int width,int height);